Keyword Draft 4 Draft 6 Draft 7 Draft 2019-09 Draft 2020-12 Draft 2021-12 M3 (CLJ) M3 (CLJS)
Core Keywords
$ref ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
$schema ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
$id ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ (breaking tests) ✔️ (breaking tests)
$anchor ✔️ ✔️ ✔️ ✔️ (breaking tests) ✔️ (breaking tests)
$recursiveRef ✔️ ✔️ (breaking tests) ✔️ (breaking tests)
$recursiveAnchor ✔️ ❌️ ✔️ (breaking tests) ✔️ (breaking tests)
$dynamicRef ✔️ ✔️ ✔️ (breaking tests) ✔️ (breaking tests)
$dynamicAnchor ✔️ ✔️ ✔️ (breaking tests) ✔️ (breaking tests)
$vocabulary ✔️ ✔️ ❌ (NYI) ❌ (NYI)
title ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
description ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
default ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
examples ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
deprecated ✔️ ✔️ ✔️
readOnly ✔️ ✔️ ✔️
writeOnly ✔️ ✔️ ✔️
$comment ✔️ ✔️
definitions ✔️ (breaking test) ✔️ (breaking test)
$defs ✔️ ✔️ (breaking test) ✔️ (breaking test)
Data Types and Validation
type: null ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: boolean ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: object ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: array ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: number ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: string ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
type: integer ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ (1 issue re 1.0 == 1)
enum ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
const ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Numeric (number, integer) Keywords
minimum ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
maximum ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
exclusiveMinimum ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
exclusiveMaximum ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
multipleOf ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
String Keywords
format: date-time ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ (breaking tests - leap-second) ✔️ (breaking tests - leap-second)
format: date ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: time ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ (breaking tests - leap-second) ✔️ (breaking tests - leap-second)
format: email ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: hostname ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: ipv4 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: ipv6 ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: uri ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: uri-reference ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: iri ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: iri-reference ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: uri-template ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: json-pointer ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: relative-json-pointer ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: regex ✔️ ✔️ ✔️ ✔️ ✔️
format: idn-email ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
format: idn-hostname ✔️ ✔️ ✔️ ✔️ ❌ (NYI) ❌ (NYI)
format: uuid ✔️ ✔️ ✔️ ✔️ ✔️
format: duration ✔️ ✔️ ✔️ ✔️ ✔️
pattern ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
minLength ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
maxLength ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
contentMediaType ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
contentEncoding ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
contentSchema ✔️ ✔️ ✔️
Object Keywords
properties ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
patternProperties ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
additionalProperties ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
propertyNames ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
propertyDependencies ✔️ ✔️ ✔️ ✔️ ✔️
unevaluatedProperties ✔️ ✔️ ✔️ ❌ (NYI) ❌ (NYI)
minProperties ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
maxProperties ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
required ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
dependencies ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
dependentSchemas ✔️ ✔️ ✔️ ✔️
dependentRequired ✔️ ✔️ ✔️ ✔️
Array Keywords
items ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
additionalItems ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
contains ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
minContains ✔️ ✔️ ✔️ ✔️ ✔️
maxContains ✔️ ✔️ ✔️ ✔️ ✔️
unevaluatedItems ✔️ ✔️ ✔️ ❌ (NYI) ❌ (NYI)
prefixItems ✔️ ✔️ ✔️ ✔️
minItems ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
maxItems ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
uniqueItems ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Combining Schemas
allOf ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
anyOf ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
oneOf ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
not ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
Conditional Keywords
if ✔️ ✔️ ✔️ ✔️ ✔️
then ✔️ ✔️ ✔️ ✔️ ✔️
else ✔️ ✔️ ✔️ ✔️ ✔️