Task index
Route by the job, not by the package. Each row names the one canonical page for that task.
| I want to… | Read |
|---|---|
| Turn untrusted structured input (form, query, JSON body) into a model with path-aware errors | Schema quickstart |
Decide between Schema.parse, Schema.check, the JSON codec, and a versioned contract |
Choosing an API |
| Put a reusable value rule on a field or value | Constraints |
| Record "this value passed its rule" in the type itself | Refined values |
Parse serialized primitive text ("42", "true", "2026-06-01") without losing why it failed |
Parsing |
| Build, change, compare, and test structured data | Data |
Compose, recover, or accumulate errors over the standard F# Result |
Result handling |
| Serialize and deserialize JSON for producers I trust | JSON codecs |
| Publish a JSON Schema document from a declaration | JSON Schema API |
| Describe a model to a form or admin UI | Inspect API |
| Generate the schema from a record's attributes at build time | Derived schemas |
| Keep reading old wire versions and migrate them to the current model | Versioned contracts |
| Run one declaration on .NET and Fable JavaScript | Compiler-Directed, AOT, and Fable |
| Know which package to install | Packages and platforms |
| Map a failure type I am seeing to its meaning and conversion | Error taxonomy and recipes |
| Pin down what "trusted", "admission", "opaque", or "wire" mean | Glossary |
The Getting started walkthrough is the end-to-end version of the first row, and Where to go next chooses by capability instead of by job.