Generar un JSON Schema
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.
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.
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
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. 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.
Qué recibe
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. Se devuelve listo para conectarse a una librería de validación o a una definición OpenAPI sin necesidad de limpieza manual.
Una breve nota sobre el formato
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. 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.
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.
Qué puede hacer con ella
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 frecuentes
¿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.
¿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.
¿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.
¿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.
¿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.
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, y pronto desde nuestra app, el email y Telegram.
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 '{"input":"…"}'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({
"input": "…"
})
});
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={
"input": "…"
},
)
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" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
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
{
"input": "…"
}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. |