Как потребовать хотя бы один из двух параметров в OpenAPI?

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

То есть как судокод:

if parameter_1 OR parameter_2:
    do stuff
else:
    error

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


person GIS-Jonathan    schedule 14.12.2018    source источник
comment
Вы имеете в виду parameters (например, параметры запроса / заголовка) или модель / схему properties?   -  person Helen    schedule 14.12.2018
comment
@Helen - Параметры запроса. Ваш ответ на этот вопрос (stackoverflow.com/a/49199240/1316981) действительно отвечает на мой вопрос. Увы, в поисках не нашлось. Спасибо!   -  person GIS-Jonathan    schedule 14.12.2018


Ответы (1)


Этот сценарий очень похож на взаимоисключающие параметры. В принципе, вы можете использовать параметр типа объекта, где 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]
person Helen    schedule 18.12.2018