Vérifier une définition OpenAPI et ses références locales

Collez la définition pour repérer les problèmes de rédaction. Ce linter ciblé ne certifie pas une conformité complète et ne teste pas une API en fonctionnement.

Fonctionne localement dans votre navigateur
OpenAPI définition

Collez OpenAPI 3.0 ou 3.1 JSON/YAML. La définition reste dans ce navigateur et n'est jamais récupérée ou téléchargée.

Qu'est-ce que cela vérifie
  • LOCAL Analyse JSON ou YAML, sans requête réseau.
  • STRUCTURE Version OpenAPI, info, chemins, opérations et objets de réponse.
  • REFERENCES Locale #/... références et déclarations de paramètres de chemin manquants.

Il s'agit d'un linter de création ciblé, qui ne remplace pas une suite complète de tests de conformité de schéma ou des tests contractuels API en direct.

Rapport de validation
  • Validez un document OpenAPI pour afficher un rapport local.

Comment valider une définition OpenAPI

Chaque constat porte un niveau de gravité et un JSON Pointer vers l'élément concerné, ce qui permet de remonter jusqu'à l'endroit exact de la définition.

  1. Collez la définition, ou cliquez sur Charger un exemple pour partir d'un document 3.1 déjà rempli.
  2. Cliquez sur Valider la définition. L'en-tête compte les opérations trouvées ainsi que les erreurs, avertissements et remarques.
  3. Lisez la liste des constats : chaque entrée indique son niveau, le JSON Pointer de l'élément concerné et une phrase décrivant le problème.
  4. Cliquez sur Effacer pour vider la zone et le rapport.

Ce que le validateur vérifie

Problèmes signalés comme erreurs

L'absence de la chaîne de version openapi, de l'objet info et de l'objet paths sont des erreurs, et title et version sont exigés dans info. Une clé de chemin qui ne commence pas par / est une erreur, tout comme une opération dont l'objet responses est vide, car un consommateur a besoin d'au moins un code de réponse ou de default.

Un modèle de chemin comme /orders/{id} doit déclarer {id} avec in: path et required: true, sans quoi un client ne peut pas construire l'appel. Les références écrites #/components/... sont résolues, et celle qui ne mène nulle part est signalée comme erreur à son propre pointeur.

Avertissements et remarques

Une opération sans operationId est un avertissement, car les clients générés s'en servent comme nom de méthode. Le sont également un requestBody sans table content, une référence vers un autre fichier ou une URL, et un document comportant swagger: "2.0". Une définition sans tableau servers est une remarque : les consommateurs retombent sur l'URL par défaut d'OpenAPI.

Une chaîne de version présente mais qui n'est pas 3.x, comme "3" ou "4.0.0", est signalée comme avertissement et non comme erreur, si bien qu'une définition presque correcte produit tout de même un rapport complet.

Lire le rapport

Le symbole ~1 dans un pointeur représente une barre oblique à l'intérieur d'un chemin : /paths/~1orders~1{id}/get correspond donc à GET /orders/{id}. Tous les constats d'une même analyse sont regroupés, un document présentant plusieurs problèmes n'a donc pas à être validé plusieurs fois.

webhooks et components.pathItems sont autorisés par OpenAPI 3.1 et ne sont pas comptés comme des opérations. Un objet paths vide est valide et passe la vérification.

Ce que le validateur ne juge pas

Seules la structure et les références locales sont vérifiées. Les schémas de sécurité, les conventions de balises, le style de nommage et la pertinence de la conception de l'API sortent du périmètre, et aucun serveur en production n'est interrogé. Deux opérations partageant le même operationId ne sont pas signalées.

Dans les données d'exemple — le contenu de example, la valeur d'une entrée examples, un enum ou un const — la clé $ref est traitée comme une donnée et non comme une référence : une charge utile qui la contient par hasard ne produit donc pas de fausse erreur.

Outils récents :