swagger-codegen пропускает недопустимый тип свойства: массив

При запуске java -jar swagger-codegen-cli.jar generate -i ../tech-bucket/membership-card/apis/mini.swagger -l nodejs-server в соответствии со спецификацией swagger ниже я вижу две ошибки/предупреждения:

[main] ERROR io.swagger.codegen.DefaultCodegen - unexpected missing property for name actual_things
[main] WARN io.swagger.codegen.DefaultCodegen - skipping invalid property {
  "type" : "array"
}
[main] ERROR io.swagger.codegen.DefaultCodegen - unexpected missing property for name actual_things
[main] WARN io.swagger.codegen.DefaultCodegen - skipping invalid property {
  "type" : "array"
}

Я не понимаю, что неправильного в указании type: array. Как еще выразить, что API возвращает массив объектов? То есть API возвращает что-то вроде:

{
    formatted_input: "Here is the formatted input",
    actual_things: [
        {id: "10", thing_value: "the value for number 10"},
        {id: "12", thing_value: "the value for number 12"}
    ]
}

Спецификация чванства по ошибке:

swagger: '2.0'

info:
  version: "1"
  title: title here
  description: description here

paths:
  /endpoint:
    get:
      description: an endpoint
      parameters:
        -
          name: someparam
          in: query
          description: param desc here
          required: true
          type: string
      responses:
        200:
          description: List of things
          schema:
            title: thing_list
            type: object
            properties:
              formatted_input:
                type: string
                description: The passed input
              actual_things:
                type: array
                items:
                  -
                    type: object
                    properties:
                      thing_value:
                        type: string
                        description: The thing
                      id:
                        type: string
                        description: an ID

person sil    schedule 20.06.2016    source источник


Ответы (1)


Проблема в том, что items — это волшебное ключевое слово, которое определяет, что все элементы в этой коллекции используют следующую схему. Нам не нужно на самом деле делать его элементом массива YAML. Итак, рабочая спецификация swagger выглядит так:

swagger: '2.0'

info:
  version: "1"
  title: title here
  description: description here

paths:
  /endpoint:
    get:
      description: an endpoint
      parameters:
        -
          name: someparam
          in: query
          description: param desc here
          required: true
          type: string
      responses:
        200:
          description: List of things
          schema:
            title: thing_list
            type: object
            properties:
              formatted_input:
                type: string
                description: The passed input
              actual_things:
                type: array
                items:
                  type: object
                  properties:
                    thing_value:
                      type: string
                      description: The thing
                    id:
                      type: string
                      description: an ID
person sil    schedule 21.06.2016
comment
diff для тех, кому трудно определить разницу между неработающим и работающим кодом: diffchecker.com/rHgYlLyk - person Shawn; 14.11.2017