Может ли кто-нибудь определить ошибку для меня в этом файле YAML?

Я не могу найти ошибку из того, что он мне говорит:

243
should match exactly one schema in oneOf
244
should be equal to one of the allowed values allowedValues: query, header,     cookie

Ошибка 244 действительно странная, поскольку он говорит, что если я заменяю путь запросом, я должен использовать одно из допустимых утверждений, где вместо пути запроса в коде ошибки.

Эти ошибки появляются только в том случае, если у меня есть параметр IstGeloescht. Когда я удаляю весь блок, все в порядке, но, насколько я знаю, это должно быть правильно. Поскольку я видел, что некоторые ошибки скрыты и появляются только тогда, когда мы исправляем что-то еще, я решил показать вам весь код.

openapi: 3.0.0
servers: []
info:
  description:  REST API
  version: "1.0.0"
  title:  REST API
  contact:
    email: [email protected]
  license:
    name: Apache 2.0
    url: 'http://www.apache.org/licenses/LICENSE-2.0.html'
tags:
  - name: Adresse
    description: Adressendpunkt der REST API

пути:

/v2/ADR/Адрес:

get:
  tags:
    - Adresse
  summary: Gibt alle Adressen zurück.
  operationId: V2ADRAdresseGet
  description: |
    Gibt alle Adressen der zurück.
  parameters:
    - $ref: '#/components/parameters/Sort'
    - $ref: '#/components/parameters/Limit'
    - $ref: '#/components/parameters/Offset'
    - $ref: '#/components/parameters/Filter'
    - $ref: '#/components/parameters/Depth'
    - $ref: '#/components/parameters/Fields'
    - $ref: '#/components/parameters/IstGeloescht'

  responses:
    '200':
      description: search results matching criteria
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/adresseModell'
    '400':
      description: bad input parameter

компоненты:

схемы:

adresseModell: 
  required: 
    - Name
    - PLZ
    - Ort
  type: object
  properties: 
    AdressNr: 
      format: int32
      type: integer
    Name: 
      description: "Beinhaltet Firmenname bei Firmenadressen"
      maxLength: 40
      type: string
    Vorname: 
      description: Optional
      maxLength: 40
      type: string
    Strasse: 
      description: Optional
      maxLength: 40
      type: string
    PLZ: 
      maxLength: 10
      type: string
    Ort: 
      maxLength: 40
      type: string
    Geloescht: 
      description: "Kann nicht gefiltert werden, URL-Parameter verwenden"
      type: boolean
    Adressgruppen: 
      description: "dieses Feld kann nicht gefiltert oder sortiert werden"
      uniqueItems: false
      type: string
    Anrede: 
      description: Optional
      maxLength: 40
      type: string
    Bemerkungen: 
      description: Optional
      maxLength: 100000
      type: string
    EMail: 
      description: Optional
      maxLength: 100
      type: string
    TelDirekt: 
      description: Optional
      maxLength: 40
      type: string
    TelZentrale: 
      description: Optional
      maxLength: 40
      type: string
    TelPrivat: 
      description: Optional
      maxLength: 40
      type: string
    Fax: 
      description: Optional
      maxLength: 40
      type: string
    Mobiltelefon: 
      description: Optional
      maxLength: 40
      type: string
    Homepage: 
      description: Optional
      maxLength: 100
      type: string
    PLZPostfach: 
      description: Optional
      maxLength: 50
      type: string
    Postfach: 
      description: Optional
      maxLength: 50
      type: string
    Region: 
      description: Optional
      type: string
    Land: 
      type: string
      description: Optional
    Longitude: 
      format: double
      description: Optional
      type: number
    Latitude: 
      format: double
      description: Optional
      type: number
    DebitorenSteuercode: 
      type: string
      description: Optional
    DebitorenSteuercodeVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenErtragskonto: 
      type: string
      description: Optional
    DebitorenErtragskontoVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenWaehrung: 
      type: string
      description: Optional
    DebitorenKostenstelle: 
      type: string
      description: Optional
    DebitorenKostenstelleVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenKostenart: 
      type: string
      description: Optional
    DebitorenKostenartVerwenden: 
      description: "Bei True wird der Steuercode der Adresse verwendet und übersteuert andere Steuercodes, optional"
      type: boolean
    DebitorenRabatt: 
      format: double
      description: Optional
      type: number
    Vertreter: 
      type: string
      description: Optional
    Lagerpreis: 
      format: int32
      description: Optional
      type: integer
    Geburtsdatum: 
      description: Optional
      type: string
    ErstelltAm: 
      type: string
    ErstelltVon: 
      type: string
    GeaendertAm: 
      type: string
    GeaendertVon: 
      type: string
    Zusatzfelder: 
      type: object
    additionalProperties: 
      type: object

параметры:

Sort:
  in: query
  name: sort
  schema:
    type: integer
  description: Kommagetrennte Liste der Felder die aufsteigend sortiert werden sollen (ein Minus vor der Feldbezeichnung sortiert absteigend), eingebette Objekte können nur nach dem Primärschlüssel sortiert werden

Limit:
  in: query
  name: limit
  schema:
    type: integer
  description: Limitiert die Anzahl Datensätze die zurückgegeben wird

Offset:
  in: query
  name: offset
  schema:
    type: integer
  description: Legt fest bei welchem Datensatz gestartet werden soll

Filter:
  in: query
  name: filter
  schema:
    type: integer
  description: Ermöglicht innerhalb eines Felds nach Werten zu filtern (Details im Kapitel Filter Syntax)

Depth:
  in: query
  name: depth
  schema:
    type: integer
  description: Gibt an, wie viele Hierarchie-Stufen an Unterobjekten komplett eingebettet werden sollen (Details im Kapitel Einbettungstiefe)

Fields:
  in: query
  name: fields
  schema: 
    type: integer
  description: Kommagetrennte Liste der Felder welche zurückgegeben werden sollen (der Primärschlüssel wird in jedemfall zurückgegeben)

IstGeloescht:
  in: path
  name: istgeloescht
  schema:
    type: string
    enum:
      - yes
      - no
      - any
  description: Kommagetrennte Liste der Felder welche zurückgegeben werden sollen (der Primärschlüssel wird in jedemfall zurückgegeben)  

person Syzard    schedule 12.09.2018    source источник
comment
Подводя итог связанным вопросам и ответам - ваш параметр пути IstGeloescht отсутствует required: true.   -  person Helen    schedule 12.09.2018
comment
это не требуется, но теперь я изменил путь к запросу, и ошибка исчезла (после моего обеда), может быть, ошибка редактора из центра swagger? Ах, это написано здесь, я перечитал. swagger.io/docs/specification/describing-parameters в обязательных и необязательных параметрах   -  person Syzard    schedule 12.09.2018


Ответы (1)


Должен ли IstGeloescht быть параметром пути (/v2/ADR/Adresse/{IstGeloescht}) или параметром запроса (/v2/ADR/Adresse?IstGeloescht=...)? В настоящее время он определен как параметр пути — если это так, вам необходимо обновить путь и добавить required: true к параметру пути. Если это параметр запроса, вместо этого измените in: path на in: query.

Кроме того, некоторые синтаксические анализаторы YAML обрабатывают yes и no как логические значения true и false. Я бы предложил заключить эти значения в кавычки, чтобы убедиться, что они анализируются как строки.

        enum:
          - 'yes'   # <------
          - 'no'    # <------
          - any
person Helen    schedule 12.09.2018
comment
Спасибо за это, я уже задавался вопросом. :) - person Syzard; 12.09.2018