case object OneOfWithBaseRef extends CoproductEncoding with Product with Serializable
Strategy that extends OneOf so that each variant also refers back
to the base type schema using allOf. This approach is sometimes
referred to in OpenAPI 3 as a way to model polymorphism.
- compatible with OpenAPI clients that don't handle
oneOfproperly - more complex schemas in Swagger UI
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": { "allOf": [ { "$ref": "#/components/schemas/Pet" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "Cat" ] }, "name": { "type": "string" } }, "required": [ "type", "name" ] } ] }, "Lizard": { "allOf": [ { "$ref": "#/components/schemas/Pet" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "Lizard" ] }, "lovesRocks": { "type": "boolean" } }, "required": [ "type", "lovesRocks" ] } ] } }
- Source
- JsonSchemas.scala
- Alphabetic
- By Inheritance
- OneOfWithBaseRef
- Serializable
- Product
- Equals
- CoproductEncoding
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @IntrinsicCandidate() @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @IntrinsicCandidate() @native()
- def productElementName(n: Int): String
- Definition Classes
- Product
- def productElementNames: Iterator[String]
- Definition Classes
- Product
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])