Skip to content

Reorganizing the meta-schemas #1159

Open
@gregsdennis

Description

@gregsdennis

Currently, the keywords are organized based on what "kind" of keyword they are: applicator vs annotation vs assertion (vs "special").

core applicator validation unevaluated meta-data format content
$id prefixItems type unevaluatedItems title format contentEncoding
$schema items const unevaluatedProperties description contentMediaType
$ref contains enum default contentSchema
$anchor additionalProperties multipleOf deprecated
$dynamicRef properties maximum readOnly
$dynamicAnchor patternProperties exclusiveMaximum writeOnly
$vocabulary dependentSchemas minimum examples
$comment propertyNames exclusiveMinimum
$defs if maxLength
then minLength
else pattern
allOf maxItems
anyOf minItems
oneOf uniqueItems
not maxContains
minContains
maxProperties
minProperties
required
dependentRequired

I think it might be easier for schema authors if we organized the keywords by function. This table reorganizes the keywords primarily by what kind of data the keyword addresses. It still has some "special" categories as well.

core meta-data combinatorial array object number string other/multiple format
$id title if prefixItems properties maximum maxLength type format
$schema description then items patternProperties exclusiveMaximum minLength const
$ref default else unevaluatedItems additionalProperties minimum pattern enum
$anchor deprecated allOf maxItems unevaluatedProperties exclusiveMinimum contentEncoding maxContains
$dynamicRef readOnly anyOf minItems maxProperties multipleOf contentMediaType minContains
$dynamicAnchor writeOnly oneOf uniqueItems minProperties contentSchema contains
$vocabulary examples not required
$comment dependentRequired
$defs dependentSchemas
propertyNames

format is still on its own so that we can include it with false while leaving the door open to others using it with true.

Aside from that, I think this organization makes more sense from an author's point of view.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

In Discussion

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions