Как мне указать, что в my_object у вас может быть свойство_1 или свойство_2, но не оба?
my_object:
type: object
properties:
property_1:
type: string
property_2:
type: string
@Helen, у него есть и другие свойства
Являются ли property1
/property2
обязательными (т. е. одно или другое ДОЛЖНО присутствовать) или они необязательны (т. е. одно или другое МОЖЕТ присутствовать)? Есть ли обязательные свойства среди других свойств?
@Helen, хотя бы один из них должен присутствовать.
Вы можете переключиться на OpenAPI 3.0, который поддерживает ключевое слово oneOf для определения взаимоисключающих условий:
вот пример:
my_object:
type: object
properties:
property_1:
type: string
property_2:
type: integer
oneOf:
- required: [property_1]
- required: [property_2]
Этот ответ неверен. Смешанные типы != взаимоисключающие свойства.
@Helen, спасибо за отзыв, я отредактировал свой ответ.
В 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
.
Примечание: Хотя oneOf
является частью спецификации OpenAPI (например, вы можете писать определения API, включающие oneOf
), фактическая инструментальная поддержка oneOf
может различаться и быть ограниченной.
Если вы используете OpenAPI 2.0 (swagger: "2.0"
), он не поддерживает oneOf
, поэтому вы можете документировать это условие только устно в описании схемы или описаниях свойств.
Это не работает, по крайней мере, в SwaggerHub: роли: тип: свойства объекта: конкретные: тип: элементы массива: $ref: '#/components/schemas/Role' fromProto: тип: логическое значение по умолчанию: true oneOf: - обязательно: [специфические ] - требуется: [fromProto][![Результаты документации:][1]][1][1]: i.stack.imgur.com/XGXyp.png
@cvigo Откройте вопрос здесь: github.com/swagger-api/swagger-ui/issues
Являются ли
property_1
иproperty_2
единственными свойствами в этом объекте или у него могут быть и другие свойства?