Как определить обязательные свойства ссылочного компонента в openapi 3.0? - PullRequest
0 голосов
/ 23 апреля 2019

Я ссылаюсь на другой компонент, и некоторые его поля становятся обязательными.

Пример с AbstractQuestion, компонент, на который я буду ссылаться позже:

  AbstractQuestion:
        type: object
        properties:
            title:
                description: Question statement
                type: string
            label:
                description: Question label
                type: string
            required:
                description: whether an answer is required for this question or if it could be left blank
                type: boolean
            question_type:
                description: campaign type
                enum:
                    - profile
                    - feeling
                type: string
            answer_type:
                enum:
                    - string
                    - list
                    - date
                type: string
            max_length:
                description: >-
                    for open ended questions this is the max characters possible. for list type questions
                    this would be the max number of options to select when multiple answers are accepted
                type: integer
            modelizable:
                description: 'whether the questions'' answers are suitable for feeding ML models (e.g. 1,2,3,4)'
                type: boolean
            choices:
                $ref: '#/components/schemas/QuestionChoices'

Теперь ябудет использовать его для определения тела запроса Post, определяющего, какие поля являются обязательными.Примечание: я не указывал это в предыдущем объекте, потому что он также используется в другом контексте (например, запросы GET или PUT), где эти поля не обязательны.

    QuestionPost:
      allOf:
        - $ref: '#/components/schemas/AbstractQuestion'
      required:
          - title
          - label
          - required
          - question_type
          - answer_type
          - modelizable

Когда я пробую это решениемои тесты не проходят, так как они сопоставляют файл yaml с моим API и обнаруживают эту ошибку:

openapi_spec_validator.exceptions.ExtraParametersError: Required list has not defined properties: ['label', 'title', 'answer_type', 'question_type', 'modelizable', 'required']

Кажется, не удается найти требуемые свойства в указанном компоненте.

КогдаЯ пробую это решение:

    QuestionPost:
      $ref: '#/components/schemas/AbstractQuestion'
      required:
          - title
          - label
          - required
          - question_type
          - answer_type
          - modelizable

Я получаю предупреждение в своем редакторе.Насколько я понимаю, документ должен игнорироваться.

Может быть, то, чего я пытаюсь достичь, просто невозможно?Как бы вы это сделали?

...