Ошибка документации Swagger `Должен быть объектом`

Я вручную пишу чванливую документацию. Но у меня ошибка Should be object

Я не знаю, почему я получаю ошибку в приведенном ниже коде.

events:
        $ref: "#/def/Events"

Events:
    type: "object"
    properties:
      oneOf:
        - $ref: '#/def/ClassRef'
        - $ref: '#/def/TypeRef'
        - $ref: '#/def/EventRef'
        - $ref: '#/def/MarketRef'
        - $ref: '#/def/OutcomeRef'

  ClassRef:
    type: "object"
    properties:
      classRef:
        type: "string"

  TypeRef:
    type: "object"
    properties:
      typeRef:
        type: "string"

  EventRef:
    type: "object"
    properties:
      eventRef:
        type: "string"

  MarketRef:
    type: "object"
    properties:
      marketRef:
        type: "string"

  OutcomeRef:
    type: "object"
    properties:
      outcomeRef:
        type: "string"

Я получаю эту ошибку в строке ClassRef. Может кто-то помочь мне, пожалуйста


person Neetha123    schedule 05.05.2020    source источник


Ответы (1)


OpenAPI 2.0 (swagger: '2.0') не поддерживает oneOf, вам потребуется OpenAPI 3.0 (openapi: 3.0.0) для использования oneOf.

Предполагая, что вы используете OpenAPI 3.0 и все схемы находятся в разделе components/schemas, измените схему Events следующим образом:

Events:
  oneOf:
    - $ref: '#/components/schemas/ClassRef'
    - $ref: '#/components/schemas/TypeRef'
    - $ref: '#/components/schemas/EventRef'
    - $ref: '#/components/schemas/MarketRef'
    - $ref: '#/components/schemas/OutcomeRef'
person Helen    schedule 05.05.2020
comment
Но если мы используем 2.0, как это решить? Мы все еще используем Swagger 2.0 - person Neetha123; 05.05.2020
comment
В версии 2.0 все, что вы можете сделать, это определить Events как просто type: object, то есть объект произвольной формы с произвольными свойствами. Но если вам нужно oneOf, вам нужно перейти на OpenAPI 3.0. Существуют инструменты для преобразования OpenAPI 2.0 в OpenAPI 3.0. - person Helen; 05.05.2020
comment
Спасибо. Ты спас мне день - person Neetha123; 06.05.2020