Взаимоисключающие свойства в чванстве

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

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

person Andres    schedule 10.04.2019    source источник
comment
Являются ли property_1 и property_2 единственными свойствами в этом объекте, или у него могут быть и другие свойства?   -  person Helen    schedule 11.04.2019
comment
@Helen, у него есть и другие свойства   -  person Andres    schedule 11.04.2019
comment
Требуются ли property1/property2 (т. е. одно или другое ДОЛЖНО присутствовать) или они необязательны (т. е. одно или другое МОЖЕТ присутствовать)? Есть ли обязательные свойства среди других свойств?   -  person Helen    schedule 11.04.2019
comment
@Helen, хотя бы один из них должен присутствовать.   -  person Andres    schedule 11.04.2019


Ответы (2)


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

вот пример:

 my_object:
 type: object
 properties:
   property_1:
     type: string
   property_2:
    type: integer
 oneOf:
- required: [property_1]
- required: [property_2]
person Hasni Iheb    schedule 10.04.2019
comment
Этот ответ неверен. Смешанные типы != взаимоисключающие свойства. - person Helen; 11.04.2019
comment
@Helen, спасибо за отзыв, я отредактировал свой ответ. - person Hasni Iheb; 11.04.2019

person    schedule
comment
Это не работает, по крайней мере, в SwaggerHub: роли: тип: свойства объекта: конкретные: тип: элементы массива: $ref: '#/components/schemas/Role' fromProto: тип: логическое значение по умолчанию: true oneOf: - обязательно: [специфические ] - требуется: [fromProto] [![Результаты документации:][1]][1] [1]: i.stack.imgur.com/XGXyp.png - person cvigo; 29.09.2020
comment
@cvigo Откройте задачу здесь: github.com/swagger-api/swagger-ui/issues - person Helen; 29.09.2020