OneOf
Strategy defining the base type schema in terms of oneOf
and the
variant schemas. The variants themselves don't refer to the base type,
but they do include the discriminator field.
- simpler looking schemas in Swagger UI
- some OpenAPI clients don't handle
oneOf
properly
Using the Pet
example above, this strategy yields the following:
"schemas": {
"Pet": {
"oneOf": [
{ "$ref": "#/components/schemas/Cat" },
{ "$ref": "#/components/schemas/Lizard" }
],
"discriminator": {
"propertyName": "type",
"mapping": {
"Cat": "#/components/schemas/Cat",
"Lizard": "#/components/schemas/Lizard"
}
}
},
"Cat": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [ "Cat" ]
},
"name": {
"type": "string"
}
},
"required": [
"type",
"name"
]
},
"Lizard": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [ "Lizard" ]
},
"lovesRocks": {
"type": "boolean"
}
},
"required": [
"type",
"lovesRocks"
]
}
}
trait Singleton
trait Product
trait Mirror
trait Serializable
trait Product
trait Equals
trait CoproductEncoding
class Object
trait Matchable
class Any
OneOf.type