Convertir JSON Schema en schéma OpenAPI — Numio
Convertit un JSON Schema (draft-04 et ultérieurs) en Schema Object OpenAPI 3.0. Les tableaux de types contenant "null" deviennent "nullable: true", const devient un enum à un seul élément et examples devient un seul example.
Vous validez des payloads avec un schéma draft-07 et avez besoin du même modèle sous components/schemas dans un document OpenAPI 3.0.
JSON Schema
Quand l’utiliser
- Vous validez des payloads avec un schéma draft-07 et avez besoin du même modèle sous components/schemas dans un document OpenAPI 3.0.
- Vos outils OpenAPI 3.0 rejettent "type": ["string", "null"] et vous devez réécrire les champs nullables.
Mode d’emploi
- Collez un JSON Schema dans le panneau JSON Schema ; il doit s’agir de JSON valide, car la page l’analyse avant de l’envoyer.
- Le schéma est envoyé à /api/json-schema-to-openapi-schema et converti sur le serveur ; le panneau affiche un avis qui le signale.
- Copiez le résultat du panneau Open API Schema et placez-le sous components/schemas dans votre fichier OpenAPI.
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"kind": { "const": "invoice" },
"total": { "type": ["number", "null"], "exclusiveMinimum": 0 },
"notes": { "type": "string", "examples": ["Net 30"] }
},
"required": ["kind"]
}Schema Object OpenAPI 3.0
{
"type": "object",
"properties": {
"kind": {
"enum": [
"invoice"
]
},
"total": {
"type": "number",
"exclusiveMinimum": true,
"nullable": true,
"minimum": 0
},
"notes": {
"type": "string",
"example": "Net 30"
}
},
"required": [
"kind"
]
}Détails et limites
La page envoie votre saisie à une route serveur (/api/json-schema-to-openapi-schema) pour la conversion ; elle n’est pas traitée uniquement dans le navigateur. Par défaut, les routes API de Next.js acceptent des corps de requête jusqu’à 1 Mo.
Le mot-clé $schema est supprimé. Les exclusiveMinimum/exclusiveMaximum numériques sont réécrits sous la forme OpenAPI 3.0 : minimum/maximum plus un indicateur booléen.
Les valeurs $ref sont laissées telles quelles et les definitions ne sont pas déplacées vers components/schemas : vous devez corriger vous-même les chemins de référence.
La cible est OpenAPI 3.0. OpenAPI 3.1 utilise déjà JSON Schema directement et ne nécessite généralement aucune conversion.
FAQ
Comment les types nullables sont-ils convertis ?
Un tableau de types comme ["number", "null"] devient "type": "number" avec "nullable": true, comme dans l’exemple.
Les références $ref sont-elles résolues ?
Non. La page ne déréférence pas ; "$ref": "#/definitions/Tag" et le bloc definitions sont recopiés sans modification.
Que deviennent const et examples ?
const devient un enum à une seule valeur, et le tableau examples est remplacé par un seul example tiré de son premier élément.