Как требовать хотя бы один из двух параметров в OpenAPI? - PullRequest
0 голосов
/ 14 декабря 2018

Я использую OpenAPI 3 и у меня есть два параметра запроса, по крайней мере один из которых требуется, но не имеет значения, какой.

Т.е. как sudocode:

if parameter_1 OR parameter_2:
    do stuff
else:
    error

Возможно ли это в OpenAPI 3?Насколько я вижу, в спецификации нет ни спецификации, ни спецификации JSON Schema.

1 Ответ

0 голосов
/ 18 декабря 2018

Этот сценарий очень похож на взаимоисключающие параметры .По сути, вы можете использовать параметр типа объекта, где parameter_1 и parameter_2 - свойства объекта;такой объект будет сериализован как ?parameter_1=value1&parameter_2=value2.Ограничение «хотя бы одно из» может быть представлено с использованием minProperties или 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]
...