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
$schema✅Dialect resolution; loader required for remote meta-schema
$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⚠️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 a :loader to JSONSchex.compile/2.