Draft 2020-12 Feature Matrix

Copy Markdown View Source

This guide summarizes JSONSchex support for Draft 2020-12 keywords and vocabularies. Draft 7 is supported separately; its keyword and reference semantics differ. See the dialect guide before applying this matrix to a Draft 7 schema.

Legend

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

Core / Applicators

KeywordStatusNotes
$schema✅Canonical dialects are built in; custom meta-schemas may require a loader
$id✅Base URI scoping supported
$ref✅Supports remote refs with loader
$anchor✅Anchor resolution supported
$dynamicRef✅Dynamic scope lookup supported
$dynamicAnchor✅Supported via scope scanning
$vocabulary✅Vocabulary resolution supported
$defs✅Schema definitions supported
$comment✅Accepted (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✅
uniqueItems✅Preserves == 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✅
dependencies✅Pre-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⚠️Enabled by format_assertion: true or an active format-assertion vocabulary

Notes

  • Content keywords are annotation-only unless content_assertion: true is enabled. Format behavior also depends on the active vocabulary set.
  • Built-in meta-schemas need no loader. Provide :loader for other remote resources.
  • The official fixture runs exclude optional/cross-draft; supported keywords do not imply complete cross-draft resolution.