Closed
Description
OpenAPI 3.1 introduces support for jsonschema's 'null'
type, however, the OpenAPI 3.1 spec makes no mention of this leading to confusion on how to specify null objects. I've seen two common ways to represent nullable properties in the wild.
Option A
openapi: '3.1.0'
components:
schemas:
Foo:
type: 'object'
properties:
bar:
type: ['string', 'null']
format: 'uri'
maxLength: 255
Option B
openapi: '3.1.0'
components:
schemas:
Foo:
type: 'object'
properties:
bar:
oneOf:
- type: 'string'
format: 'uri'
maxLength: 255
- type: 'null'
Option A is more succinct but arguably incorrect, since format
and maxLength
are not applicable for the null
type. It is rather common though. For example, GitHub's OpenAPI 3.1 specs does this:
---
openapi: 3.1.0
# ...
paths:
# ...
"/authorizations":
# ...
post:
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
scopes:
description: A list of scopes that this authorization is in.
type:
- array
- 'null'
items:
type: string
examples:
- public_repo
- user
# ...
Option B is longer but appears (to me) to be technically correct.
Could we clarify which of these is correct? I assume we'd need a future MINOR or PATCH version if we wanted to (correctly?) forbid option A?
Metadata
Metadata
Assignees
Labels
No labels