-
Notifications
You must be signed in to change notification settings - Fork 9.2k
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: 255Option 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?
hlovdal, kvdmolen, DanijelHuis, mslynch and neumann-nico
Metadata
Metadata
Assignees
Labels
No labels