Desarrolladores
API y MCP de Fojaria
Conecta tus sistemas o un asistente de IA (Claude, ChatGPT, Cursor…) para preparar lotes de contratos. La API lee, sube datos, crea y valida lotes. Generar documentos siempre requiere que una persona lo apruebe en Fojaria.
Inicio rápido
1. Un owner o admin crea una clave en Configuración → API y conectores. La clave (fjr_live_…) se muestra una sola vez; guárdala como secreto.
2. Envíala en cada petición como encabezado Bearer:
curl https://fojaria.vicentediaz.dev/api/v1/yo \
-H "Authorization: Bearer $FOJARIA_API_KEY"Cada clave pertenece a una organización y solo ve sus datos. Si quien la creó deja la organización o pierde el rol de owner/admin, la clave deja de funcionar.
Flujo y aprobación humana
- Elige plantilla:
GET /plantillas(o instala una de/galeria). - Sube los datos:
POST /datoscon filas JSON o un archivo .xlsx/.csv. - Crea el lote:
POST /lotes(mapeo automático variable → columna). - Valida:
POST /lotes/{id}/validar. Corrige y repite si hay filas con error. - Pide generar:
POST /lotes/{id}/solicitar-generacion. Responde conurl_aprobacion: una persona de la organización aprueba o rechaza en la página del lote. - Sigue el estado en
GET /lotes/{id}y descarga conGET /lotes/{id}/zip(enlace firmado de 10 minutos).
curl -X POST https://fojaria.vicentediaz.dev/api/v1/lotes/$LOTE/solicitar-generacion \
-H "Authorization: Bearer $FOJARIA_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"solo_filas_validas": false}'Una clave nunca puede encolar la generación ni aprobar solicitudes: lo impide la base de datos, no solo la aplicación. Todo lo que hace una clave queda en el historial de auditoría con su prefijo.
Repositorio de contratos (solo lectura)
Con el permiso contratos:leer puedes buscar los contratos de la organización (generados en Fojaria e importados ya confirmados por una persona) y sus vencimientos. El estado se calcula con la fecha de hoy en Chile: vigente, por_vencer (30 días), vencido, terminado o anulado.
curl "https://fojaria.vicentediaz.dev/api/v1/contratos?vence_antes_de=2026-12-31&estado=por_vencer" \
-H "Authorization: Bearer $FOJARIA_API_KEY"Cerrar, renovar o importar contratos lo hace una persona en Fojaria. Los contratos importados no tienen código de verificación: Fojaria no los emitió. Los avisos de plazo fijo del detalle son información general, revisa con tu asesor.
Buscador (solo lectura)
POST /api/v1/buscar busca en contratos, cláusulas aprobadas, plantillas y lotes con una pregunta en español. La consulta va en el cuerpo (nunca en la URL). Interpreta filtros de una lista cerrada (tipo, estado, fechas, cargo, plantilla, faena, firma, origen, sueldo, RUT, estado y aprobación de lotes), busca en el texto completo y por significado, y devuelve cada resultado con su cita (fragmento y ubicación). Con "modo": "preguntar" agrega un conteo calculado por la base de datos y una frase marcada como resumen automático.
curl -X POST "https://fojaria.vicentediaz.dev/api/v1/buscar" \
-H "Authorization: Bearer $FOJARIA_API_KEY" -H "Content-Type: application/json" \
-d '{"consulta": "¿cuántos contratos a plazo fijo vencen este mes?", "modo": "preguntar"}'Cada grupo exige su permiso de lectura: contratos con contratos:leer, cláusulas y plantillas con plantillas:leer, lotes y documentos con lotes:leer. Puedes enviar filtros ya corregidos para saltarte la interpretación.
Servidor MCP
Servidor remoto (Streamable HTTP) en https://fojaria.vicentediaz.dev/api/mcp, con la misma clave en el encabezado Authorization. Ejemplo para Claude Code:
claude mcp add --transport http fojaria https://fojaria.vicentediaz.dev/api/mcp \
--header "Authorization: Bearer $FOJARIA_API_KEY"| Herramienta | Permiso | Qué hace |
|---|---|---|
| listar_plantillas | plantillas:leer | Plantillas activas con sus variables. |
| ver_plantilla | plantillas:leer | Variables, secciones y tablas de una plantilla. |
| listar_galeria | plantillas:leer | Plantillas sugeridas (contratos, liquidación, cotización) listas para instalar. |
| instalar_plantilla_galeria | plantillas:escribir | Copia un contrato de la galería a la organización. |
| subir_datos | datos:escribir | Filas en JSON o un .xlsx/.csv en base64. |
| crear_lote | lotes:escribir | Borrador de lote con mapeo automático variable → columna. |
| validar_lote | lotes:escribir | Revisa cada fila: RUT, fechas, montos, campos vacíos. |
| estado_lote | lotes:leer | Estado, avance y errores del lote. |
| solicitar_generacion | lotes:solicitar_generacion | Deja una solicitud pendiente; una persona la aprueba. |
| enlace_descarga | documentos:descargar | Enlace firmado al ZIP (vence en 10 min). |
| listar_clausulas | plantillas:leer | Cláusulas aprobadas de la biblioteca (búsqueda por texto). |
| estado_firmas_lote | lotes:leer | Envíos a firma de un lote y documentos por estado. |
| buscar_contratos | contratos:leer | Repositorio de contratos: por nombre, RUT, cargo, estado o vencimiento. |
| contratos_por_vencer | contratos:leer | Contratos que vencen en N días y vencidos sin cerrar. |
| buscar | cualquier permiso de lectura | Búsqueda en lenguaje natural con citas; «preguntar» agrega conteo y resumen automático. |
Permisos de las claves
plantillas:leer— Ver plantillas y la galería de contratosplantillas:escribir— Subir plantillas e instalarlas desde la galeríadatos:escribir— Subir archivos de datos o filas en JSONlotes:leer— Ver lotes, su estado y su reporte de validaciónlotes:escribir— Crear borradores de lotes y validarloslotes:solicitar_generacion— Pedir la generación de un lote (siempre la aprueba una persona)lotes:generar— Generar documentos directamente, sin aprobación previa (solo para integraciones de confianza)documentos:descargar— Descargar el ZIP y los documentos generadoscontratos:leer— Buscar contratos del repositorio y sus vencimientos (solo lectura)
Errores, límites e idempotencia
Los errores tienen siempre la misma forma y mensajes en español:
{ "error": { "codigo": "sin_permiso", "mensaje": "…", "detalles": { … } } }Límite: 120 peticiones por minuto por clave (encabezados RateLimit-* y Retry-After en el 429). En los POST, Idempotency-Key repetida con el mismo cuerpo durante 24 h devuelve la misma respuesta. Las listas se paginan con pagina y por_pagina (máx. 100).
Referencia de endpoints
Parámetros, cuerpos, respuestas y ejemplos en cURL, JavaScript y Python para cada endpoint, con un probador integrado. Base: https://fojaria.vicentediaz.dev/api/v1.
¿Aún no tienes cuenta? Crea una y genera tu clave en Configuración.