#pragma once #include namespace jvalidate::adapter { enum class Type : int8_t { Null, Boolean, Integer, Number, String, Array, Object }; } namespace jvalidate::schema { enum class Version : int { // Keywords: type, properties, patternProperties, additionalProperties, items, additionalItems // required, dependencies, minimum, maximum, exclusiveMinimum, exclusiveMaximum, // minItems, maxItems, uniqueItems, pattern, minLength, maxLength, enum, default, // title, description, format, divisibleBy, disallow, extends, id, $ref, $schema /* Draft03, */ // New: allOf, anyOf, oneOf, not, minProperties, maxProperties, definitions // Changed: required, dependencies // Renamed: divisibleBy -> multipleOf // Removed: type(schema), extends, disallow // Formats: date-time, email, hostname, ipv4, ipv6, uri // https://json-schema.org/draft-04/schema Draft04, // New: "boolean as schema", propertyNames, contains, const // Changed: $ref, exclusiveMinimum, exclusiveMaximum, type, required, dependencies, examples // Renamed: id -> $id // Formats: uri-template, uri-reference, json-pointer // https://json-schema.org/draft-06/schema Draft06, // New: $comment, if, then, else, readOnly, writeOnly, contentMediaType, contentEncoding // Formats: iri, iri-reference, uri-template*, idn-email, idn-hostname, json-pointer*, // relative-json-pointer, regex, date, time // https://json-schema.org/draft-07/schema Draft07, // New: $anchor, $recursiveAnchor, $recursiveRef, unevaluatedItems, unevaluatedProperties, // maxContains, minContains // Changed: $id, $ref, format // Renamed: definitions -> $defs // Split: dependencies -> (dependentSchemas, dependentRequired) // Formats: duration, hostname*, idn-hostname*, uuid // https://json-schema.org/draft/2019-09/schema Draft2019_09, // Renamed: (items(array), additionalItems) -> (prefixItems, items), // $recursiveRef -> $dynamicRef, $recursiveAnchor -> $dynamicAnchor // Split: format -> (format-annotation, format-assertion) // https://json-schema.org/draft/2020-12/schema Draft2020_12, }; }