Acerca de esta herramienta
La validación con schema convierte «la respuesta parece correcta» en una comprobación de contrato repetible: campos obligatorios, tipos, formatos, enums y formas de arrays. Este validador usa Ajv, la misma librería que usan muchas suites de test en JavaScript, con ajv-formats para comprobar email, date-time, uuid y uri. Cada error se muestra con su ruta de instancia (/items/1/qty) y un mensaje claro, y se informa de todos los errores, no solo del primero. Si aún no tienes schema, pega una respuesta que sepas correcta, genera a partir de ella un schema inicial y después ajústalo a mano.
Cómo usarla
- Pega el schema a la izquierda y los datos JSON a la derecha, o carga el schema de pedido de ejemplo con sus datos rotos a propósito.
- Deja el draft en «Auto» para seguir la palabra clave $schema del schema, o fuerza 2020-12 o draft-07.
- Corrige los errores listados; el resultado se actualiza mientras escribes.
- Para empezar un schema nuevo, pega una respuesta real como datos y pulsa “Generate schema from data”.
Preguntas frecuentes: Validador de JSON Schema
¿Debo usar draft 2020-12 o draft-07?
Usa el que admitan tus otras herramientas. OpenAPI 3.1 está alineado con 2020-12, mientras que muchos validadores antiguos y las herramientas de OpenAPI 3.0 están más cerca de draft-07. Las principales diferencias visibles son los arrays de tupla (prefixItems en 2020-12, items como array en draft-07) y $defs frente a definitions.
¿Qué calidad tiene el schema generado?
Es un punto de partida inferido de un solo ejemplo: tipos, objetos anidados, formas de los elementos de arrays, formatos de cadena comunes y todas las claves vistas en el ejemplo marcadas como obligatorias. No puede saber qué campos son opcionales, qué valores son enums ni qué límites numéricos hay, así que revísalo antes de usarlo como contrato.
¿Por qué se acepta un email no válido?
La palabra clave «format» solo se aplica cuando el validador activa las comprobaciones de formato. Esta herramienta las activa mediante ajv-formats; si tu framework de test no lo hace, añade también allí el plugin de formatos o los mismos datos pasarán.