-
Notifications
You must be signed in to change notification settings - Fork 9.2k
Description
Perhaps more of a question than an issue report, but I am not sure how to combine “nullable” with a reference object; I have the impression they don't combine well?
In Swagger-UI issue 3325 I posted an example with the following schema. The intent is to express that both “dataFork” and “resourceFork” contain a Fork, except that “resourceFork” can also be null, but “dataFork” cannot be null. As was pointed out though, the schema is not in accordance with the OpenAPI v3.0.0 specification, due to the use of JSON Schema's {"type":"null"} which has not been adopted in OpenAPI.
...
"File": {
"type": "object",
"properties": {
"name": { "type": "string" },
"dataFork": { "$ref": "#/components/schemas/Fork" },
"resourceFork": {
"anyOf": [
{ "type": "null" },
{"$ref": "#/components/schemas/Fork" } ] },
...
I considered I can instead express the example as follows, which as far as I can tell is at least in accordance with the OpenAPI specification? But the use of “anyOf” with only one schema inside seems clumsy, is there a better way to handle this? Essentially, a better way to combine “nullable” with the reference object?
...
"File": {
"type": "object",
"properties": {
"name": { "type": "string" },
"dataFork": { "$ref": "#/components/schemas/Fork" },
"resourceFork": {
"nullable": true,
"anyOf": [
{ "$ref": "#/components/schemas/Fork" } ] },
...