Endpoints
La API v1 expone 212 endpoints repartidos en 32 módulos. Todos cuelgan de /api/v1.
Forma de la respuesta
Todas las respuestas comparten un sobre común. El contenido va en data y el código de estado se repite dentro del cuerpo, para que quede en los registros de quien solo guarda el JSON.
json
{
"status": 200,
"data": { "id": "clx...", "code": "EQ-001", "name": "Compresor 1" }
}Un listado devuelve además el cursor para pedir la página siguiente:
json
{
"status": 200,
"data": {
"items": [ ... ],
"nextCursor": "clx8k2m...",
"hasMore": true
}
}La paginación es por cursor, no por número de página: con datos que se están creando mientras paginas, un ?page=2 repite y se salta filas. Pasa el nextCursor recibido como parámetro cursor en la siguiente petición, y para cuando hasMore sea false.
bash
curl -H "x-tenant-api-key: $GRC_API_KEY" \
"https://app.grclaft.com/api/v1/equipos?limit=50&cursor=clx8k2m..."Módulos
La columna «Con clave de API» es la que importa
Los módulos marcados con «no» responden hoy solo a una sesión de navegador. Funcionan desde la aplicación, pero un proceso tuyo con una clave recibirá 401. Es una limitación actual, no una decisión definitiva.
| Módulo | Ruta base | Endpoints | Con clave de API |
|---|---|---|---|
| SST y seguridad laboral | /api/v1/sst | 62 | no — solo sesión |
| Cumplimiento normativo | /api/v1/compliance | 15 | no — solo sesión |
| Equipos y mantenimiento | /api/v1/equipos | 12 | no — solo sesión |
| Gestión ambiental | /api/v1/ambiental | 11 | no — solo sesión |
| Sistema de gestión de calidad | /api/v1/sgc | 10 | no — solo sesión |
| Calidad (ISO 9001) | /api/v1/quality | 8 | no — solo sesión |
| Proveedores | /api/v1/proveedores | 8 | no — solo sesión |
| PQRS y habeas data | /api/v1/pqrs | 8 | no — solo sesión |
| Gestión legal | /api/v1/legal | 7 | no — solo sesión |
| Protección de datos (GDPR) | /api/v1/gdpr | 6 | no — solo sesión |
| Equipamiento | /api/v1/equipment | 6 | no — solo sesión |
| Consolidación multi-entidad | /api/v1/consolidation | 6 | no — solo sesión |
| Ambiental (ISO 14001) | /api/v1/iso14001 | 5 | no — solo sesión |
| Reportería | /api/v1/reporting | 4 | no — solo sesión |
| Proveedores (legado) | /api/v1/providers | 4 | no — solo sesión |
| Notificaciones | /api/v1/notifications | 4 | no — solo sesión |
| Seguridad de la información (ISO 27001) | /api/v1/iso27001 | 4 | no — solo sesión |
| Ambiental (legado) | /api/v1/environmental | 4 | no — solo sesión |
| PTEE — transparencia y antisoborno | /api/v1/ptee | 3 | no — solo sesión |
| Multi-entidad | /api/v1/multi-entity | 3 | no — solo sesión |
| Calidad documental (ISO 9001) | /api/v1/iso9001 | 3 | no — solo sesión |
| Indicadores | /api/v1/indicators | 3 | no — solo sesión |
| Alertas | /api/v1/alerts | 3 | no — solo sesión |
| Administración | /api/v1/admin | 3 | no — solo sesión |
| Evidencias | /api/v1/evidence | 2 | no — solo sesión |
| Flujos de aprobación | /api/v1/approval-flows | 2 | no — solo sesión |
| Listas restrictivas | /api/v1/watchlist | 1 | no — solo sesión |
| Usuario en sesión | /api/v1/me | 1 | no — solo sesión |
| Inocuidad alimentaria (ISO 22000) | /api/v1/iso22000 | 1 | no — solo sesión |
| Contrapartes | /api/v1/counterparties | 1 | no — solo sesión |
| Autenticación | /api/v1/auth | 1 | no — solo sesión |
| Registro de auditoría | /api/v1/audit-logs | 1 | no — solo sesión |
Ingesta de transacciones
Es el caso de integración que funciona hoy de punta a punta con clave de API: mandas tus transacciones y la plataforma las evalúa contra tus reglas de monitoreo.
bash
# Una transacción
curl -X POST https://app.grclaft.com/api/tx-monitor/ingest \
-H "x-tenant-api-key: $GRC_API_KEY" \
-H "content-type: application/json" \
-d '{
"reference": "TX-2026-000123",
"txType": "WIRE_INTERNATIONAL",
"channel": "ONLINE",
"amount": 45000000,
"currency": "COP",
"occurredAt": "2026-09-21T14:32:00Z"
}'
# Un lote
curl -X POST https://app.grclaft.com/api/tx-monitor/ingest/batch \
-H "x-tenant-api-key: $GRC_API_KEY" \
-H "content-type: application/json" \
-d '{ "transactions": [ ... ] }'Manda reference con el identificador que la transacción tiene en tu sistema. La ingesta es idempotente por empresa y referencia: reenviar la misma transacción no la duplica, devuelve isDuplicate: true. Eso importa porque reintentar es lo normal cuando una red se corta a mitad de un lote.
json
{ "ok": true, "id": "clx...", "alertsGenerated": 2, "isDuplicate": false }Reportes regulatorios
Cada reporte del catálogo tiene su propio endpoint y sus formatos. El catálogo con la URL exacta de cada uno está dentro de la aplicación, en Reportes, junto al calendario de vencimientos que exige cada norma.
Los reportes se piden con un rango de fechas y un formato: ?from=2026-08-01&to=2026-08-31&format=PDF.
Cómo saber qué campos acepta un endpoint
La validación de entrada es estricta: si mandas un campo con el tipo equivocado, la respuesta es un 400 que nombra el campo y qué esperaba. Está descrito en Errores y límites. Mandar una petición incompleta a propósito y leer el error es la forma más rápida de conocer el contrato de un endpoint.