JSON Schema solo comprueba las reglas que escribiste

Un JSON legible no necesariamente sirve para una petición. Un esquema describe datos esperados, pero no impone condiciones omitidas ni comprueba hechos externos.

Presencia y tipo son decisiones distintas

Definir un campo en properties lo limita cuando existe, no lo hace obligatorio. Inclúyelo en required si debe llegar.

El número 3 y el texto "3" son diferentes. Aceptar uno no implica convertir automáticamente el otro; diseña el contrato para las necesidades del consumidor.

Referencias: JSON Schema — Properties, required fields and additional properties

Decide qué hacer con campos extra

En un esquema de objeto sencillo, additionalProperties: false rechaza campos no declarados. Detecta posibles errores de nombre, pero exige actualizar el contrato cuando se amplía.

Prueba un campo ausente, otro del tipo incorrecto y una propiedad adicional. El resultado se entiende mejor cuando cada ejemplo tiene una regla concreta.

Referencias: JSON Schema — Properties, required fields and additional properties

Cumplir el esquema no aprueba la petición

ToolRoof comprueba localmente un subconjunto de Draft 2020-12. No obtiene esquemas remotos ni admite todas las palabras clave; informa de funciones no admitidas en vez de darlas por válidas.

Un éxito no acredita existencia de productos, precios de una base de datos o permisos del usuario. La anotación default tampoco rellena campos ausentes en este comprobador.

Ejemplo: cantidad obligatoria, sin conversión oculta

Un contrato pide quantity de tipo integer, mínimo 1, incluido en required, y prohíbe campos adicionales. {"quantity":3} pasa; {"quantity":"3"} falla por el tipo.

{} falla por ausencia y {"quantity":3,"note":"draft"} por la propiedad extra. Aunque 3 pase, no prueba que haya 3 unidades en existencias: esa regla no forma parte del ejemplo.

Referencias