Structure and Vocabularies

Schema Structure and Vocabularies

A schema is a JSON object of keywords: $schema names the dialect, $id sets the base URI that references resolve against, $defs holds reusable subschemas, and the rest constrain the instance (true and false are schemas too). Keywords are grouped into vocabularies, each with a meta-schema: Core, Applicator, Validation, Unevaluated, Format Annotation, Format Assertion, Content and Meta-Data. Coming from draft-07, three changes bite: tuples moved from array-form items to prefixItems; $recursiveRef became $dynamicRef; and format is only an annotation unless you enable assertion, so "2025-02-30" may pass as a date. When combining schemas with allOf, close them with unevaluatedProperties, which, unlike additionalProperties, sees every subschema.