JSON Schema vérifie les règles effectivement écrites

Un JSON lisible n’est pas forcément adapté à une requête. Un schéma décrit les données attendues, sans imposer une condition absente ni vérifier un fait extérieur.

Présence et type sont deux décisions

Définir un champ dans properties le contraint lorsqu’il existe, sans le rendre obligatoire. Utilisez required s’il doit être présent.

Le nombre 3 et la chaîne "3" diffèrent. Accepter l’un n’implique pas une conversion automatique de l’autre ; concevez le contrat pour les besoins du consommateur.

Références: JSON Schema — Properties, required fields and additional properties

Décider du sort des champs en plus

Dans un schéma simple d’objet, additionalProperties: false refuse les champs non déclarés. Cela révèle des fautes de nom, mais nécessite une mise à jour voulue lorsque le contrat évolue.

Testez un champ absent, un mauvais type et une propriété supplémentaire. Chaque exemple doit cibler une règle connue pour rendre le résultat compréhensible.

Références: JSON Schema — Properties, required fields and additional properties

Conformité ne signifie pas autorisation

ToolRoof vérifie localement un sous-ensemble de Draft 2020-12. Il ne récupère pas de schémas distants et ne gère pas tous les mots-clés ; les fonctions non prises en charge sont signalées, pas validées tacitement.

Un succès ne confirme ni produit existant, ni prix en base, ni droits utilisateur. L’annotation default ne remplit pas non plus une propriété absente dans ce vérificateur.

Exemple : quantité requise sans conversion implicite

Le contrat exige quantity de type integer, au moins 1, présent dans required, sans propriétés supplémentaires. {"quantity":3} réussit ; {"quantity":"3"} échoue sur le type.

{} échoue sur l’absence ; {"quantity":3,"note":"draft"} sur la propriété supplémentaire. Accepter 3 ne prouve pas la présence de 3 unités en stock : cette règle dépasse l’exemple.

Références