OpenAPI-Linter
OpenAPI Linter
Prüft ein OpenAPI-Dokument auf fehlende Antworten, ungenutzte Schemas, ins Leere zeigende Referenzen und die anderen Mängel, die Codegeneratoren brechen.
Prüft ein OpenAPI-3.0- oder 3.1-Dokument auf die Dinge, die Codegeneratoren brechen, Client-Bibliotheken lügen lassen oder die die Spezifikation schlicht verlangt. Die Regeln sind handgeschrieben und auf der Seite aufgeführt – Probleme, keine Stilvorlieben.
OpenAPI-Dokument
Eine openapi.yaml hier ablegen
Wird nur in diesem Tab gelesen.
24 Befunde
Fehlerschema-array-itemscomponents.schemas.Order.items
`type: array` ohne `items`.
Fehlerpath-param-undeclaredGET /orders/{orderId}
`{orderId}` im Pfad ist nicht als Parameter deklariert.
Fehlerresponse-descriptionGET /orders/{orderId}
Der `200`-Antwort fehlt eine description.
Fehlerschema-array-itemsGET /orders/{orderId} responses["200"].content["application/json"].items
`type: array` ohne `items`.
Fehlerinfo-missinginfo
Es gibt kein `info.version`. Das ist die Version der API, nicht die von OpenAPI.
Fehleroperation-id-duplicatePOST /orders/{orderId}
Die operationId `getOrder` steht auch auf GET /orders/{orderId}.
Fehlerpath-param-requiredPOST /orders/{orderId}
Dem `in: path`-Parameter `id` fehlt `required: true`.
Fehlerpath-param-undeclaredPOST /orders/{orderId}
`{orderId}` im Pfad ist nicht als Parameter deklariert.
Fehlerpath-param-unusedPOST /orders/{orderId}
Der `in: path`-Parameter `id` kommt im Pfad nicht vor.
Warnungpath-trailing-slash/orders/
Dieser Pfad endet auf `/`.
Warnungschema-unusedcomponents.schemas.Customer
Nichts referenziert dieses Schema.
Warnungoperation-id-missingGET /orders/
Es gibt keine operationId.
Warnungresponse-errorGET /orders/
Es gibt keine 4xx-Antwort.
Warnungdescription-missingGET /orders/{orderId}
Es gibt weder summary noch description.
Warnungresponse-errorGET /orders/{orderId}
Es gibt keine 4xx-Antwort.
Warnungdescription-missingPOST /orders/{orderId}
Es gibt weder summary noch description.
Warnungresponse-errorPOST /orders/{orderId}
Es gibt keine 4xx-Antwort.
Warnungresponse-successPOST /orders/{orderId}
Es gibt keine 2xx- oder 3xx-Antwort.
Hinweistag-missingGET /orders/
Es gibt keinen Tag.
Hinweistag-missingGET /orders/{orderId}
Es gibt keinen Tag.
Hinweisparameter-descriptionPOST /orders/{orderId}
Dem Parameter `id` fehlt eine description.
Hinweisresponse-default-onlyPOST /orders/{orderId}
Die einzige Antwort ist `default`.
Hinweistag-missingPOST /orders/{orderId}
Es gibt keinen Tag.
Hinweisservers-missingservers
Es ist kein Server aufgeführt, also ist die Basis-URL `/`.
OpenAPI
3.0.3
Operationen
3
Fehler
9
Warnungen
9
Hinweise
6
Ein von Hand geschriebenes Regelwerk. Es findet, woran ein Codegenerator scheitert, wovon eine Client-Bibliothek zu lügen beginnt und was die Spezifikation tatsächlich verlangt — Probleme, keine Vorlieben. Spectral-Regelwerke lädt es nicht.
Um zu sehen, was sich zwischen zwei Versionen geändert hat, nehmen Sie OpenAPI-Änderungsvergleich.
So funktioniert es
Fügen Sie das Dokument ein
JSON oder YAML, 3.0 oder 3.1. Es wird in diesem Tab geparst; nichts wird hochgeladen.
Arbeiten Sie zuerst die Fehler ab
Jeder Befund trägt die Regel-ID und die genaue Stelle im Dokument. Fehler sind Dinge, die tatsächlich schiefgehen werden; Warnungen sind Dinge, die es meist tun.
Lesen Sie die Regelliste, wenn ein Befund Sie überrascht
Jede Regel ist ausgeschrieben, mit ihrer Schwere und dem Grund, warum es sie gibt, sodass ein Befund, dem Sie widersprechen, wenigstens ein Argument ist, das Sie lesen können.
Häufige Fragen
Kann es mein Spectral-Regelwerk laden?
Nein. Das ist ein fester, handgeschriebener Regelsatz, gewählt für Probleme und nicht für einen Hausstil. Wenn Sie eine Spectral-Konfiguration haben, ist Spectral das Werkzeug, das sie beachtet.
Es liest meine Swagger-2.0-Datei nicht.
Richtig – 2.0 ist eine andere Dokumentform, kein etwas älteres 3.0, und die Hälfte der Regeln würde nicht darauf zutreffen. Konvertieren Sie sie zuerst; `swagger2openapi` ist der übliche Weg.
Es ist meinem externen `$ref` nicht gefolgt.
Ein `$ref` innerhalb des Dokuments wird aufgelöst; eines, das auf eine andere Datei zeigt, würde bedeuten, von einem Pfad zu laden, den nur Ihre Maschine hat. Es wird als Hinweis gemeldet, damit Sie wissen, dass die Prüfung unvollständig war und nicht sauber.
Warum ist eine fehlende `operationId` eine Warnung?
Weil Generatoren sie verwenden, um die Funktion zu benennen, die sie für diese Operation ausgeben. Ohne sie bekommen Sie einen aus Pfad und Methode abgeleiteten Namen, der sich ändert, sobald der Pfad es tut – eine Umbenennung in Ihrer API wird zu einer Umbenennung in jedem Client.
Eingabe aus
JSON in JSON Schema
JSON to JSON Schema
Leitet aus einem oder mehreren Beispielen ein JSON Schema ab und vereinigt die gesehenen Formen.
JSON-Schema-Validator
JSON Schema Validator
Validiert ein Dokument gegen ein JSON Schema und meldet jeden Fehler mit seinem Instanzpfad.
curl in Code
curl to Code
Wandelt einen curl-Befehl in fetch, axios, Python requests, Go, PHP oder PowerShell um.
OpenAPI vergleichen
OpenAPI Diff
Vergleicht zwei OpenAPI-Dokumente und trennt Breaking Changes von additiven Änderungen.
Danach
Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.
curl in Code
curl to Code
Wandelt einen curl-Befehl in fetch, axios, Python requests, Go, PHP oder PowerShell um.
JSON-Schema-Validator
JSON Schema Validator
Validiert ein Dokument gegen ein JSON Schema und meldet jeden Fehler mit seinem Instanzpfad.
OpenAPI vergleichen
OpenAPI Diff
Vergleicht zwei OpenAPI-Dokumente und trennt Breaking Changes von additiven Änderungen.
YAML formatieren und validieren
YAML Formatter & Validator
Rückt YAML einheitlich ein, validiert es und markiert die Tab- und Anker-Fehler, an denen Parser scheitern.
JSON ⇄ CSV umwandeln
JSON ⇄ CSV
Flacht verschachteltes JSON zu Spalten ab oder baut Objekte aus einer Tabelle wieder auf, mit Punktpfad-Regel für die Spaltennamen.
JSON vergleichen
JSON Diff
Vergleicht zwei JSON-Dokumente strukturell, ignoriert die Schlüsselreihenfolge und meldet hinzugefügte, entfernte und geänderte Pfade.