API de CILQUM para flujos de firma
Esta documentación resume el contrato técnico actual de CILQUM: autenticación, workspaces, carga de PDF, plantillas, flujos, solicitudes de firma, experiencia pública del firmante, auditoría, certificados y facturación.
Ambiente y versionado
El contrato actual define la API bajo prefijo versionado. En desarrollo local, el servidor documentado expone:
http://localhost:1021/api/v1 En producción, el dominio definitivo debe configurarse por ambiente. Los clientes no deben asumir rutas sin prefijo de versión.
Autenticación y sesión
La app administrativa envía el access token como Bearer token. El refresh token se maneja como cookie HTTP-only bajo la ruta de autenticación. Ante una respuesta 401, el frontend debe llamar a refresh y reintentar una sola vez.
Authorization: Bearer <access_token> - No guardar refresh token en localStorage
- Reintentar solo una vez después de 401
- Cerrar sesión si refresh falla
- No usar rutas privadas sin workspace activo
Workspace context
Todas las rutas privadas de negocio están asociadas a un workspace. El backend debe validar membresía activa y rol antes de ejecutar handlers. El frontend nunca debe asumir que un ID global es suficiente sin contexto de workspace.
/workspaces/{workspaceId}/flows Capacidades cubiertas por la API
Auth
Registro, login, refresh, recuperación de contraseña, verificación de email y usuario actual.
Workspaces
Creación y consulta de espacios de trabajo; todas las rutas privadas de negocio dependen del workspace.
Documents
Carga de documentos PDF mediante multipart/form-data y administración de documentos por workspace.
Templates / Acrofill
Plantillas reutilizables, campos de firma, texto, fecha, checkbox, iniciales, DNI, nombre y correo.
Flows
Creación y consulta de flujos configurables asociados a documentos y plantillas.
Signing Requests
Generación de solicitudes de firma y enlaces públicos para firmantes.
Public Signing
Resolución del token público, validación de identidad, captura de firma y descarga final.
Audit / Dashboard
Eventos auditables del workspace y métricas operativas para seguimiento.
Certificates
Perfil de certificado, uso de certificado y registro de éxito o falla en finalización de PDF.
Billing
Créditos, checkout y navegación controlada por proveedor de pago cuando aplique.
Endpoints principales
/auth/register Crear usuario inicial.
/auth/login Obtener access token y sesión.
/auth/me Consultar usuario autenticado.
/workspaces Listar o crear workspaces.
/workspaces/{workspaceId}/documents/upload Subir PDF al workspace.
/workspaces/{workspaceId}/templates Listar o crear plantillas.
/workspaces/{workspaceId}/flows Listar o crear flujos.
/workspaces/{workspaceId}/signing-requests Listar o crear solicitudes de firma.
/public/sign/{token} Resolver estado público de firma.
/public/sign/{token}/identity Validar identidad del firmante.
/public/sign/{token}/signature Registrar firma del firmante.
/workspaces/{workspaceId}/audit-events Consultar eventos auditables.
Secuencia pública de firma
Las rutas públicas no usan autenticación de usuario. El firmante accede con un token público. El backend almacena solo el hash del token y resuelve el estado permitido para ese flujo.
- 1
GET /public/sign/{token} - 2
POST /public/sign/{token}/identity - 3
POST /public/sign/{token}/signature - 4
GET /public/sign/{token}/pdf cuando el flujo esté completo
Formato estándar de error
El frontend debe mostrar mensajes accionables usando el campo message y registrar code/details para diagnóstico técnico.
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Human readable message",
"details": {}
}
} Campos soportados en plantillas
Cada campo de firma debe incluir signer_role_id para vincular el campo con el rol del firmante dentro del flujo.
Recomendaciones de integración
- Usar siempre workspaceId en rutas privadas.
- No exponer tokens públicos en logs del cliente.
- Validar tamaño y tipo de PDF antes de subir.
- Manejar 401 con refresh y un solo reintento.
- Mostrar estados de firma de forma explícita al usuario.
- Registrar errores técnicos con code y details.
- No asumir disponibilidad de API enterprise sin plan contratado.
- Probar flujos públicos en ambiente controlado antes de producción.