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.