as
6 years agoNew Contributor
Swagger Response Body require object if property equals a value OpenApi Spec 3
Let's say we have a simple response
{
"check_completed": true,
"check_details": {
"check_number": 123123.
"check_mechanic": "Joe Blogs"
}
}CheckResponse:
type: object
required:
- check_completed
properties:
check_completed:
type: boolean
check_details:
$ref: '#/components/schemas/checkdetails'Is it possible to mark the check_details as required if check_completed is true?
It's possible but cumbersome. You need to use anyOf, like this:
CheckResponse: type: object required: - check_completed properties: check_completed: type: boolean check_details: $ref: '#/components/schemas/checkdetails' anyOf: - properties: check_completed: enum: [false] - properties: check_completed: enum: [true] required: - check_detailsI would recommend describing this dependency in the schema/property descriptions instead.
OpenAPI 3.1 (future version) will make this easier thanks to using the latest JSON Schema which includes if...then..else among other things.
CheckResponse:: type: object required: - check_completed properties: check_completed: type: boolean check_details: $ref: '#/components/schemas/checkdetails' if: properties: check_completed: const: true then: required: - check_details