# flusso-schema
The front door to the configuration layer: load a flusso configuration into a validated model.
[`load`] takes the path to a `flusso.toml`, reads the source and sinks from it, resolves and
parses every `*.schema.yml` the file references, and hands back a single [`Config`].
The format-specific crates (`schema-config-toml`, `schema-index-yaml`) and the core model
(`schema-core`) sit underneath. Downstream code depends only on this crate and reaches the
core types through its re-exports.
# Example
```no_run
let config = schema::load("flusso.toml")?;
for (name, index) in &config.indexes {
println!("{name}: table {} ({} fields)", index.schema.table, index.schema.fields.len());
}
# Ok::<(), schema::LoadError>(())
```
# 2-schema — config & schema loading
This group turns config **files** into the validated `Config`.
| schema | [.](.) | The front door: `load()` reads a `flusso.toml` + its `*.schema.yml` files into one validated `Config`, and re-exports the `schema-core` vocabulary. |
| schema-config-toml | [1-config-toml](1-config-toml) | Parses `flusso.toml` → neutral entities. |
| schema-index-yaml | [1-index-yaml](1-index-yaml) | Parses `*.schema.yml` → core types. |
Each parser crate works in two stages: parse (serde → neutral entities), then convert
(entities → model). The `flusso.toml` → `Config` conversion lives in `schema` itself — a
composition step — so the toml parser stays free of `Config`.
Part of [the flusso library crates](../README.md).