Swagger Response Body require object if property equals a value OpenApi Spec 3
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-25-2020
08:11 AM
03-25-2020
08:11 AM
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?
Solved! Go to Solution.
1 REPLY 1
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-25-2020
11:00 AM
03-25-2020
11:00 AM
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_details
I 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
Helen Kosova
SmartBear Documentation Team Lead
________________________
Did my reply answer your question? Give Kudos or Accept it as a Solution to help others. ⬇️⬇️⬇️
