Как правильно ограничить тип openapi в свойствах?

У меня пока следующее:

Links:
  description: Must contain links objects
  type: object
  properties:
    $ref: "#/components/schemas/Link"
ErrorLinks:
  allOf:
    - $ref: "#/components/schemas/Links"
    - properties:
        about:
          $ref: "#/components/schemas/Link"

В Links меня не волнуют имена любых properties, просто все они являются объектами Link. Я ожидаю, что в ErrorLinks будет свойство about, которое также является объектом Link.

Это правильный способ определить это, или я говорю (в Links), что я ожидаю, что сам узел properties будет объектом Link?

Я считаю, что в документации openapi немного не хватает полезных примеров, и приведенные выше проверки подтверждают это, поэтому я не совсем уверен.


person designermonkey    schedule 11.08.2018    source источник
comment
Ответы на эти вопросы также были даны в Swagger: map of ‹string, Object› и Ссылка свойства на модель в swagger 2.0 (вложенность), просто замените #/definitions/ (синтаксис OpenAPI/Swagger 2.0) на #/components/schemas/ (синтаксис OpenAPI 3.0).   -  person Helen    schedule 13.08.2018


Ответы (1)


В Links мне все равно, как называются какие-либо свойства, просто все они являются объектами Link.

Links - это словарь (хэш-карта). Словари определяются с помощью additionalProperties, как объяснено в этом ответе:

Links:
  description: Must contain links objects
  type: object
  additionalProperties:
    $ref: "#/components/schemas/Link"

Я ожидаю, что в ErrorLinks будет свойство about, которое также является объектом Link.

Вы почти там. Нет необходимости в allOf, вам просто нужна простая схема объекта:

ErrorLinks:
  type: object
  properties:
    about:
      $ref: "#/components/schemas/Link"
  required:
    - about
person Helen    schedule 13.08.2018