Draft 2020-12 Feature Matrix

Copy Markdown View Source

This guide summarizes JSONSchex support for Draft 2020-12 keywords and vocabularies.

Legend

  • ✅ Supported
  • ⚠️ Supported with notes (option-gated or annotation-only)
  • ❌ Not supported

Core / Applicators

KeywordStatusNotes
$schemaDialect resolution; loader required for remote meta-schema
$idBase URI scoping supported
$refSupports remote refs with loader
$anchorAnchor resolution supported
$dynamicRefDynamic scope lookup supported
$dynamicAnchorSupported via scope scanning
$vocabularyVocabulary resolution supported
$defsSchema definitions supported
$commentAccepted (no validation impact)
allOf
anyOf
oneOf
not
if / then / else
dependentSchemas
propertyNames

Validation keywords

KeywordStatusNotes
type
enum
const
multipleOf
maximum / minimum
exclusiveMaximum / exclusiveMinimum
maxLength / minLength
pattern
maxItems / minItems
uniqueItemsPreserves == semantics (1 equals 1.0)
maxProperties / minProperties
required

Array / Object Applicators

KeywordStatusNotes
items
prefixItems
contains
minContains / maxContains
properties
patternProperties
additionalProperties

Unevaluated and Dependent

KeywordStatusNotes
unevaluatedItems
unevaluatedProperties
dependentRequired
dependenciesPre-2019 compatibility; combines dependentRequired and dependentSchemas semantics

Content vocabulary

KeywordStatusNotes
contentEncoding⚠️Annotation-only by default; enabled via content_assertion: true
contentMediaType⚠️Annotation-only by default; enabled via content_assertion: true
contentSchema⚠️Annotation-only by default; enabled via content_assertion: true

Format vocabulary

KeywordStatusNotes
format⚠️Assertion behavior requires format_assertion: true

Notes

  • When assertion options are not enabled, the corresponding keywords are accepted but do not enforce validation.
  • For remote meta-schema resolution, provide an external_loader to JSONSchex.compile/2.