Skip to content

Comments

schema: preserve None for all enumeration fields#98

Open
spikespaz wants to merge 1 commit intoglademiller:masterfrom
spikespaz-contrib:u/jacob/schema-enum-preserve-uninhabited
Open

schema: preserve None for all enumeration fields#98
spikespaz wants to merge 1 commit intoglademiller:masterfrom
spikespaz-contrib:u/jacob/schema-enum-preserve-uninhabited

Conversation

@spikespaz
Copy link

This change preserves a distinction made by OAS,
between an uninhabited schema versus one without enum restriction.

Per the spec:

This array SHOULD have at least one element.
...
An instance validates successfully against this keyword if its value
is equal to one of the elements in this keyword's array value.

Reference:
https://datatracker.ietf.org/doc/html/draft-wright-json-schema-validation-00#section-5.20

This implies that if the keyword enum is omitted, the schema imposes no enumeration constraint. Conversely, if the keyword is present but its array is empty, the schema is uninhabited, as no instance can satisfy an empty enumeration.

OAS 3.0.4 does not change the interpretation of this keyword. Reference:
https://spec.openapis.org/oas/v3.0.4.html#x4-7-24-1-json-schema-keywords

This change preserves a distinction made by OAS,
between an uninhabited schema versus one without `enum` restriction.

Per the spec:

> This array SHOULD have at least one element.
> ...
>  An instance validates successfully against this keyword if its value
>  is equal to one of the elements in this keyword's array value.

Reference:
<https://datatracker.ietf.org/doc/html/draft-wright-json-schema-validation-00#section-5.20>

This implies that if the keyword `enum` is omitted, the schema imposes
no enumeration constraint. Conversely, if the keyword is present but its
array is empty, the schema is uninhabited, as no instance can satisfy an
empty enumeration.

OAS 3.0.4 does not change the interpretation of this keyword.
Reference:
<https://spec.openapis.org/oas/v3.0.4.html#x4-7-24-1-json-schema-keywords>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant