kip
6 years agoNew Contributor
schema via oneOf with additional common properties
Hey everyone,
I am trying to achieve the following, but with the commented lines uncommented. Uncommented it is not syntactically correct, but semantically I am trying to add BodyCommon's properties to the POST body, in addition to either BodyTypeA or BodyTypeB.
openapi: "3.0.1" info: servers: paths: components: requestBodies: SomeClientPostBody: required: true content: application/json: schema: oneOf: - $ref: "#/components/schemas/BodyTypeA" - $ref: "#/components/schemas/BodyTypeB" # properties: # $ref: "#/components/schemas/BodyCommon" schemas: BodyTypeA: properties: type_a_property: type: integer BodyTypeB: properties: type_b_property: type: string BodyCommon: properties: common_property: type: integer
How can I fix this?
You need an "allOf" of BodyCommon and "oneOf":
components: schemas: SomeClientPostBody: required: true content: application/json: schema: allOf: - oneOf: - $ref: "#/components/schemas/BodyTypeA" - $ref: "#/components/schemas/BodyTypeB" - $ref: "#/components/schemas/BodyCommon"