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óduloRuta baseEndpointsCon clave de API
SST y seguridad laboral/api/v1/sst62no — solo sesión
Cumplimiento normativo/api/v1/compliance15no — solo sesión
Equipos y mantenimiento/api/v1/equipos12no — solo sesión
Gestión ambiental/api/v1/ambiental11no — solo sesión
Sistema de gestión de calidad/api/v1/sgc10no — solo sesión
Calidad (ISO 9001)/api/v1/quality8no — solo sesión
Proveedores/api/v1/proveedores8no — solo sesión
PQRS y habeas data/api/v1/pqrs8no — solo sesión
Gestión legal/api/v1/legal7no — solo sesión
Protección de datos (GDPR)/api/v1/gdpr6no — solo sesión
Equipamiento/api/v1/equipment6no — solo sesión
Consolidación multi-entidad/api/v1/consolidation6no — solo sesión
Ambiental (ISO 14001)/api/v1/iso140015no — solo sesión
Reportería/api/v1/reporting4no — solo sesión
Proveedores (legado)/api/v1/providers4no — solo sesión
Notificaciones/api/v1/notifications4no — solo sesión
Seguridad de la información (ISO 27001)/api/v1/iso270014no — solo sesión
Ambiental (legado)/api/v1/environmental4no — solo sesión
PTEE — transparencia y antisoborno/api/v1/ptee3no — solo sesión
Multi-entidad/api/v1/multi-entity3no — solo sesión
Calidad documental (ISO 9001)/api/v1/iso90013no — solo sesión
Indicadores/api/v1/indicators3no — solo sesión
Alertas/api/v1/alerts3no — solo sesión
Administración/api/v1/admin3no — solo sesión
Evidencias/api/v1/evidence2no — solo sesión
Flujos de aprobación/api/v1/approval-flows2no — solo sesión
Listas restrictivas/api/v1/watchlist1no — solo sesión
Usuario en sesión/api/v1/me1no — solo sesión
Inocuidad alimentaria (ISO 22000)/api/v1/iso220001no — solo sesión
Contrapartes/api/v1/counterparties1no — solo sesión
Autenticación/api/v1/auth1no — solo sesión
Registro de auditoría/api/v1/audit-logs1no — 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.