Reputation: 4647
I'm using OpenAPI 3 and have two query parameters, at least one of which is required but it doesn't matter which.
I.e., as sudocode:
if parameter_1 OR parameter_2:
do stuff
else:
error
Is this possible in OpenAPI 3? There's no mention of it in the spec as far as I can see, or the JSON Schema spec either.
Upvotes: 18
Views: 24672
Reputation: 97717
This scenario is very similar to mutually exclusive parameters. Basically, you can use an object-type parameter where parameter_1
and parameter_2
are the object properties; such object will be serialized as ?parameter_1=value1¶meter_2=value2
. The "at least one of" constraint can be represented using minProperties
or anyOf
.
openapi: 3.0.2
...
paths:
/foo:
get:
parameters:
- in: query
name: param
required: true
schema:
type: object
properties:
parameter_1:
type: string
parameter_2:
type: string
additionalProperties: false
# Option 1
minProperties: 1
# Option 2
# anyOf:
# - required: [parameter_1]
# - required: [parameter_2]
There's also an existing feature request to support interdependencies between individual parameters in the parameters
list:
https://github.com/OAI/OpenAPI-Specification/issues/256
Upvotes: 17