Как определить массив другой схемы в OpenAPI 3?

Я определил эту схему:

User:
  type: object
  required:
    - id
    - username
  properties:
    id:
      type: integer
      format: int32
      readOnly: true
      xml:
        attribute: true
      description: The user ID
    username:
      type: string
      readOnly: true
      description: The username
    first_name:
      type: string
      description: Users First Name
    last_name:
      type: string
      description: Users Last Name
    avatar:
      $ref: '#/components/schemas/Image'
  example:
    id: 10
    username: jsmith
    first_name: Jessica
    last_name: Smith
    avatar: image goes here
  xml:
    name: user

Работает отлично. Вызов GET /user/{id} отлично отображает образцы данных.

У меня есть вторая схема, которая создает массив из приведенной выше схемы:

ArrayOfUsers:
  type: array
  items:
    type: object
    required:
      - id
      - username
    properties:
      id:
        type: integer
        format: int32
        xml:
          attribute: true
        description: The user ID
      username:
        type: string
        description: The username
      first_name:
        type: string
        description: Users First Name
      last_name:
        type: string
        description: Users Last Name
      avatar:
        $ref: '#/components/schemas/Image'

Это тоже отлично работает. Вызов GET /user отлично отображает правильную структуру в массиве.

Но я бы предпочел не определять эту схему дважды.

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

Я потерпел неудачу в этой попытке.

Я пробовал вот так:

UserArray:
  type: array
  items:
    type: object
    required:
      - id
      - username
  properties:
    things:
      type: array
      items:
        oneOf:
          - $ref: '#/components/schemas/User'

Эта попытка дает мне пустой массив:

[
  {}
]

Это не желаемый результат.

Есть намеки на это?


person Old Man Walter    schedule 14.04.2018    source источник
comment
Спасибо за ответ И указание на другой вопрос.   -  person Old Man Walter    schedule 15.04.2018


Ответы (1)


Массив из User объектов определяется следующим образом:

UserArray:
  type: array
  items:
    $ref: '#/components/schemas/User'
person Helen    schedule 14.04.2018