Взаимоисключающие свойства в чванстве - PullRequest
1 голос
/ 10 апреля 2019

Как мне указать, что в my_object у вас может быть property_1 или property_2, но не оба?

my_object:
  type: object
  properties:
    property_1:
      type: string
    property_2:
      type: string

Ответы [ 2 ]

2 голосов
/ 11 апреля 2019

В OpenAPI 3.0 (openapi: 3.0.0) вы можете использовать ключевое слово oneOf для определения взаимоисключающих условий. Эта схема требует наличия property_1 или property_2, но не обоих:

my_object:
  type: object
  properties:
    property_1:
      type: string
    property_2:
      type: string
    property_3:
      type: string
  oneOf:
    - required: [property_1]
    - required: [property_2]

Если хотя бы одно из из этих двух свойств должно присутствовать, используйте anyOf.


Если вы используете OpenAPI 2.0 (swagger: "2.0"), он не поддерживает oneOf, поэтому вы можете устно задокументировать это условие только в описании схемы или описании свойств.

0 голосов
/ 10 апреля 2019

Возможно, вы захотите переключиться на OpenAPI 3.0, который поддерживает ключевое слово oneOf для определения взаимоисключающих условий:

Вот пример:

 my_object:
 type: object
 properties:
   property_1:
     type: string
   property_2:
    type: integer
 oneOf:
- required: [property_1]
- required: [property_2]
...