oneOf, allOf, anyOf: composition and inheritance in OpenAPI
OpenAPI allows us to combine object schemas using the keywords allOf
, anyOf
, and oneOf
.
These keywords correspond to the following logical operators:
The example below illustrates the different composition keywords:
Discriminator Object in OpenAPI
When using oneOf
to indicate that a request body or response contains exactly one of multiple Schema Objects, a discriminator object can help the client or server figure out which schema is included in the request or response.
The discriminator object in OpenAPI tells a client or server which field can be used to discriminate between different schemas.
In the example below, the Speakeasy Bar can receive one of two order types: A drink order with a bar-counter reference or an ingredient order with a delivery address:
If we include a discriminator object, the client can indicate the order type so that the server does not need to figure that out:
In the previous example, the value of the orderType
property will determine the order type. The value of orderType
must match one of the schema components, so must be either DrinkOrder
or IngredientOrder
.
To use values that don’t match a schema key, a discriminator object can include a mapping
property that maps values to schemas. Here’s an example:
Last updated on