Generar un JSON Schema
Convierta ejemplos reales de sus datos en un esquema de validación: con dos muestras, una con un valor opcional y otra sin él, ese valor sale como opcional y el resto como obligatorio. Paga por uso, sin suscripción.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
inferido desde payloads de ejemplo
Por qué describir sus datos
Una descripción formal de sus datos permite que un validador rechace un registro mal formado antes de que llegue a su lógica de negocio, que las herramientas de generación de código creen modelos con tipos y que un servicio se pruebe de forma automática en lugar de revisar respuestas a ojo. El problema es escribirla a mano. Todo lo que va más allá de una lista plana de valores se vuelve tedioso enseguida, sobre todo con listas anidadas, valores opcionales y tipos mezclados, así que muchos equipos lo omiten o dejan que se desfase de lo que el servicio devuelve de verdad.
Cómo influyen los ejemplos en el resultado
El generador lee las muestras que usted le da y deduce el tipo de cada valor, la estructura anidada y qué valores son obligatorios. Obligatorio significa presente en todos los ejemplos: si un valor aparece en una muestra y falta en otra, se marca como opcional. Por eso conviene incluir un par de casos límite, como un registro con un valor opcional relleno y otro sin él. Un solo ejemplo también sirve, pero todo lo que contiene queda como obligatorio, y usted puede relajar esas reglas después.
Preguntas frecuentes
¿Puede detectar formatos como fechas y correos electrónicos?
Sí, detecta formatos comunes no ambiguos como cadenas de fecha y hora y direcciones de correo electrónico, y agrega la anotación de formato correspondiente.
¿Qué pasa si la solicitud falla?
Se reintenta automáticamente hasta tres veces; si sigue fallando recibe un error claro y no se le cobra.
¿Cuántos ejemplos conviene enviar?
Con uno basta para empezar, pero entonces todos los valores que contiene se tratan como obligatorios. Añada un segundo ejemplo donde falte un valor opcional y el generador lo marcará como opcional, porque ya no aparece en todas las muestras.
¿Funciona con estructuras anidadas y listas?
Sí. Las estructuras anidadas y las listas de sus ejemplos se describen nivel a nivel, que es justo la parte más lenta y propensa a errores cuando se escribe a mano.
¿Para qué sirve el esquema que obtengo?
Un validador puede usarlo para rechazar datos mal formados antes de que lleguen a su lógica de negocio, las herramientas de generación de código crean modelos con tipos a partir de él y usted puede comprobar automáticamente que un servicio devuelve lo prometido.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/json-schema-gen \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}'const res = await fetch("https://api.kit.forhosting.com/dev/json-schema-gen", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/json-schema-gen",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/json-schema-gen", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/json-schema-gen", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.json_schema_gen",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |
Notas técnicas
Nadie se sienta a escribir un JSON Schema por gusto; es el documento que necesita después de que la API ya existe y alguien pregunta 'cómo luce realmente esta respuesta'. Este endpoint lee uno o más payloads de ejemplo e infiere un esquema con tipos correctos, campos obligatorios y estructuras anidadas, sin necesidad de escribirlo a mano.
El vacío que llena
El JSON Schema es lo que permite que un validador rechace una solicitud malformada antes de que llegue a su lógica de negocio, lo que permite que una herramienta de generación de clientes construya modelos tipados, y lo que permite probar automáticamente un contrato de API en vez de revisar respuestas a ojo. El problema es que escribirlo a mano para algo más complejo que un objeto plano es tedioso y propenso a errores, especialmente con arreglos anidados, campos opcionales y tipos mixtos, así que muchos equipos simplemente lo omiten o dejan que se desactualice respecto a la API real.
Qué envía
Un solo ejemplo también funciona; simplemente produce un esquema que trata cada campo observado como obligatorio, algo que puede relajar después si lo necesita. Envía uno o más payloads JSON de ejemplo, idealmente incluyendo algún caso límite como una respuesta con un campo opcional presente y otra donde falta, ya que la API infiere si un campo es obligatorio según si aparece de forma consistente en sus ejemplos.
Qué recibe
Se devuelve listo para conectarse a una librería de validación o a una definición OpenAPI sin necesidad de limpieza manual. Un documento JSON Schema válido con tipos primitivos correctos, formatos detectados donde no son ambiguos, como una cadena que luce como fecha o correo electrónico, arreglos y objetos anidados modelados correctamente, y una lista de campos obligatorios construida a partir de lo que realmente fue consistente en sus muestras.
Una breve nota sobre el formato
El esquema generado apunta por defecto a un borrador actual y ampliamente soportado, y produce el tipo de documento que validadores como Ajv, o herramientas equivalentes en otros lenguajes, consumen sin modificación. JSON Schema ha pasado por varias versiones de borrador desde que se propuso por primera vez, y los distintos borradores manejan de forma diferente cosas como la validación de tuplas y los esquemas condicionales.
Dónde encaja en un flujo de trabajo
Encaja naturalmente en pruebas de contrato: captura payloads de respuesta reales desde un ambiente de staging, genera el esquema, y lo compara contra la versión anterior para detectar un cambio disruptivo accidental antes de que salga a producción. También ahorra tiempo al documentar una API heredada que tiene ejemplos de payload dispersos en tickets viejos y colecciones de Postman, pero ningún esquema en el que alguien confíe.
Casos de integración
Pruebas de contrato en integración continua
Un pipeline captura una respuesta real de la API, regenera el esquema, y hace fallar el build si un campo que antes era obligatorio se volvió opcional sin previo aviso.
Documentar una API heredada
Un equipo con años de endpoints sin documentar procesa ejemplos guardados de Postman por el endpoint para producir esquemas que nadie tuvo que escribir desde cero.
Generación de SDK de cliente
El esquema generado se conecta directamente a una herramienta de generación de código que produce modelos tipados de solicitud y respuesta para una aplicación móvil.
Validar webhooks de terceros
Un equipo captura algunos payloads reales del webhook de un proveedor y genera un esquema para validar futuras entregas antes de procesarlas.
Preguntas técnicas
¿Cuántos payloads de ejemplo debo enviar?
Con uno basta para obtener un esquema funcional, pero enviar dos o más, incluyendo un caso límite con un campo opcional ausente, produce una lista de campos obligatorios más precisa.
¿Qué borrador de JSON Schema utiliza?
Por defecto apunta a un borrador actual y ampliamente soportado, produciendo un documento que validadores como Ajv y herramientas equivalentes aceptan sin modificación.
¿Hay un plan gratuito para probar el endpoint?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuál es el precio?
$0.003 por solicitud más $0.0135 por documento, cobrado únicamente cuando la tarea se completa con éxito.
¿Puedo usar el resultado directamente en una especificación OpenAPI?
Sí, el esquema devuelto es JSON Schema válido y puede incrustarse en una sección de components de OpenAPI con poca o ninguna edición.
¿Se conservan mis payloads de ejemplo después?
No. Los payloads enviados y los esquemas generados se eliminan al vencer el período de retención y nunca se usan para entrenamiento.