Mutually excluding properties in swagger

我与影子孤独终老i 提交于 2021-02-17 03:19:58

问题


How do I indicate that in my_object you can have property_1 or property_2, but not both?

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

回答1:


You may want to switch to OpenAPI 3.0, which supports oneOf keyword to define mutually exclusive conditions:

here is an example :

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



回答2:


In OpenAPI 3.0 (openapi: 3.0.0), you can use the oneOf keyword to define mutually exclusive conditions. This schema requires that either property_1 or property_2 be present, but not both:

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

If at least one of these two properties must be present, use anyOf instead.

Note: While oneOf is part of the OpenAPI Specification (as in, you can write API definitions that include oneOf), actual tooling support for oneOf may vary and be limited.


If you use **OpenAPI 2.0** (`swagger: "2.0"`), it does not support `oneOf`, so you can only document this condition verbally in the schema description or property descriptions.

来源:https://stackoverflow.com/questions/55615638/mutually-excluding-properties-in-swagger

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!