Referencia Completa de la API
Base URL: https://api.dpolab.com/api/v1
Todos los endpoints retornan JSON. Los endpoints autenticados requieren el header Authorization: Bearer {token} salvo los marcados como Público, Portal Session o HMAC.
El tenant se determina automáticamente desde el JWT. Nunca se envía como parámetro.
Autenticación
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
POST | /auth/register | Público | Crear cuenta y tenant |
POST | /auth/login | Público | Iniciar sesión → access_token + refresh_token |
POST | /auth/refresh | Público | Renovar tokens con refresh_token |
GET | /auth/me | JWT | Datos del usuario actual y sus tenants |
POST | /auth/select-tenant | JWT | Seleccionar tenant activo → nuevo token con contexto |
Detalle: Autenticación
RAT — Registro de Actividades de Tratamiento
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /rat/activities | JWT | Listar actividades (paginado, filtros: ?status, ?legalBasis, ?hasSensitiveData, ?riskLevel, ?dpiaRequired) |
POST | /rat/activities | JWT | Crear actividad de tratamiento |
GET | /rat/activities/:id | JWT | Detalle de una actividad con encargados |
PUT | /rat/activities/:id | JWT | Actualizar actividad |
PATCH | /rat/activities/:id/status | JWT | Cambiar estado (draft, published, archived) |
GET | /rat/activities/:id/compliance-check | JWT | Verificar cumplimiento normativo |
POST | /rat/activities/preview/calculate-risk | JWT | Calcular riesgo (sin guardar) |
POST | /rat/activities/:id/calculate-risk | JWT | Calcular y guardar nivel de riesgo |
POST | /rat/activities/:id/from-template | JWT | Crear actividad desde plantilla |
GET | /rat/templates | JWT | Listar plantillas predefinidas |
GET | /rat/templates/:templateId | JWT | Obtener detalle de plantilla |
GET | /rat/data-catalog | JWT | Catalogo de tipos de datos personales |
DELETE | /rat/activities/:id | JWT | Eliminar actividad (solo draft/archived) |
POST | /rat/activities/:id/systems | JWT | Vincular sistema del Mapa de Datos |
POST | /rat/activities/:id/flows | JWT | Vincular flujo de datos |
POST | /rat/activities/:id/links | JWT | Sincronizar vinculos (bulk) |
GET | /rat/stats | JWT | Estadisticas agregadas del RAT |
GET | /rat/geo-summary | JWT | Resumen geografico para mapa interactivo |
POST | /rat/generate-from-ai | JWT | Generar actividad con IA (Professional+) |
POST | /rat/suggest-field | JWT | Sugerir campo con IA (Professional+) |
POST | /rat/bulk-import | JWT | Importacion masiva (max 200) |
POST | /rat/from-system | JWT | Crear actividad desde sistema del Mapa de Datos |
Detalle: Endpoints RAT
ARSOP — Solicitudes de Derechos (DSAR)
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /dsar/requests | JWT | Listar solicitudes (paginado, filtros: ?status, ?rightType, ?overdue) |
GET | /dsar/requests/:id | JWT | Detalle de solicitud con eventos y timeline |
PATCH | /dsar/requests/:id | JWT | Actualizar estado de solicitud |
POST | /dsar/requests/:id/assign | JWT | Asignar responsable |
POST | /dsar/requests/:id/extend | JWT | Solicitar prórroga de plazo (+30 días corridos, total 60 — Art. 11) |
POST | /dsar/requests/:id/respond | JWT | Responder solicitud (resolver o rechazar) |
POST | /dsar/requests/:id/notify-thirds | JWT | Notificar a terceros |
GET | /dsar/requests/:id/timeline | JWT | Línea de tiempo de eventos |
GET | /dsar/stats | JWT | Estadísticas generales DSAR |
GET | /dsar/widgets | JWT | Listar widgets DSAR configurados |
POST | /dsar/widgets | JWT | Crear widget DSAR |
POST | /public/dsar/:widgetKey | Público | Crear solicitud desde formulario público |
GET | /public/dsar/track/:folio | Público | Consultar estado con código de seguimiento |
Detalle: Endpoints DSAR
CMP — Consent Management Platform
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /consent/notices | JWT | Listar avisos de consentimiento (filtro: ?isActive) |
POST | /consent/notices | JWT | Crear aviso de consentimiento |
GET | /consent/notices/:id | JWT | Detalle del aviso con propósitos |
PUT | /consent/notices/:id | JWT | Actualizar aviso |
POST | /consent/notices/:id/publish | JWT | Publicar aviso (activa y genera widgetKey) |
GET | /consent/notices/:id/records | JWT | Registros de consentimiento del aviso |
GET | /consent/notices/:id/stats | JWT | Estadísticas de consentimiento |
GET | /public/consent/:widgetKey/config | Público | Configuración del widget para el SDK |
POST | /public/consent/:widgetKey/record | Publico | Registrar decision de consentimiento |
GET | /consent/templates | JWT | Listar templates de consentimiento |
POST | /consent/templates | JWT | Crear template |
GET | /consent/templates/:id | JWT | Detalle del template |
PUT | /consent/templates/:id | JWT | Actualizar template |
DELETE | /consent/templates/:id | JWT | Eliminar template |
GET | /consent/templates/:id/records | JWT | Registros de un template |
GET | /consent/templates/:id/stats | JWT | Estadisticas de un template |
POST | /consent/templates/:id/manual | JWT | Registro manual de consentimiento |
POST | /consent/templates/:id/webhooks | JWT | Crear webhook |
GET | /consent/templates/:id/webhooks | JWT | Listar webhooks |
DELETE | /consent/templates/:id/webhooks/:whId | JWT | Eliminar webhook |
GET | /public/consent-form/:formKey/config | Publico | Config del formulario hosteado |
POST | /public/consent-form/:formKey/submit | Publico | Enviar respuesta del formulario |
POST | /external/consent/records | API Key | Registrar consentimiento (server-to-server) |
GET | /external/consent/templates | API Key | Listar templates activos |
GET | /external/consent/subject/:ref/consents | API Key | Consultar consentimientos de un sujeto |
Detalle: Endpoints CMP
DPIA — Evaluación de Impacto
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /dpia/assessments | JWT | Listar evaluaciones (filtro: ?status) |
POST | /dpia/assessments | JWT | Crear evaluación de impacto |
GET | /dpia/assessments/:id | JWT | Detalle con riesgos asociados |
PUT | /dpia/assessments/:id | JWT | Actualizar evaluación |
POST | /dpia/assessments/:id/submit-review | JWT | Enviar a revisión |
POST | /dpia/assessments/:id/approve | JWT | Aprobar (approverName, approverRole) |
POST | /dpia/assessments/:id/reject | JWT | Rechazar (reason) |
POST | /dpia/assessments/:id/risks | JWT | Agregar riesgo |
PUT | /dpia/assessments/:id/risks/:riskId | JWT | Actualizar riesgo |
DELETE | /dpia/assessments/:id/risks/:riskId | JWT | Eliminar riesgo |
GET | /dpia/assessments/:id/export/pdf | JWT | Exportar como PDF |
POST | /dpia/:activityId/screening | JWT | Screening de necesidad de DPIA para actividad RAT |
Detalle: Endpoints DPIA
Dominios
| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
GET | /domains | JWT | Listar dominios (filtros: ?legalEntityId, ?isActive) |
POST | /domains | JWT | Crear dominio |
GET | /domains/:id | JWT | Detalle del dominio con avisos, actividades y politicas |
PATCH | /domains/:id | JWT | Actualizar dominio |
DELETE | /domains/:id | JWT | Eliminar dominio |
POST | /domains/:id/activities | JWT | Vincular actividad RAT |
DELETE | /domains/:id/activities/:actId | JWT | Desvincular actividad RAT |
POST | /domains/:id/activities/bulk-sync | JWT | Sincronizar actividades (bulk) |
Detalle: Endpoints Dominios
Brechas de Seguridad
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /breaches | JWT | Listar incidentes (filtros: ?status, ?requiresNotification) |
POST | /breaches | JWT | Registrar nuevo incidente |
GET | /breaches/:id | JWT | Detalle del incidente con eventos |
PUT | /breaches/:id | JWT | Actualizar incidente |
PATCH | /breaches/:id/status | JWT | Cambiar estado del incidente |
POST | /breaches/:id/decision-tree | JWT | Evaluar árbol de decisión de notificación (72h APDP) |
POST | /breaches/:id/notify-apdp | JWT | Registrar notificación a la APDP |
GET | /breaches/:id/notification-template | JWT | Plantilla de notificación prellenada |
POST | /webhooks/wazuh/:tenantSlug | HMAC | Webhook para alertas Wazuh SIEM |
Detalle: Brechas de Seguridad
Mapa de Datos
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /data-map/catalog | JWT | Catálogo de sistemas con resumen |
GET | /data-map/systems | JWT | Listar sistemas (filtros: ?type, ?contractStatus) |
POST | /data-map/systems | JWT | Crear sistema |
GET | /data-map/systems/:id | JWT | Detalle del sistema |
PUT | /data-map/systems/:id | JWT | Actualizar sistema |
DELETE | /data-map/systems/:id | JWT | Eliminar sistema |
GET | /data-map/flows | JWT | Listar flujos de datos |
POST | /data-map/flows | JWT | Crear flujo de datos |
DELETE | /data-map/flows/:id | JWT | Eliminar flujo |
Detalle: Mapa de Datos
Contratos DPA
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /contracts | JWT | Listar contratos (filtros: ?status, ?type, ?expiringSoon) |
POST | /contracts/generate | JWT | Generar contrato desde plantilla (processorId, templateId, activityIds[]) |
GET | /contracts/:id | JWT | Detalle del contrato |
PUT | /contracts/:id | JWT | Actualizar contrato (solo DRAFT) |
DELETE | /contracts/:id | JWT | Eliminar contrato (solo DRAFT) |
POST | /contracts/:id/send | JWT | Enviar para firma (signerName, signerEmail) |
POST | /contracts/:id/sign | JWT | Registrar firma (signerName, signerRut?) |
POST | /contracts/:id/renew | JWT | Renovar contrato (solo SIGNED/EXPIRED) |
GET | /contracts/templates | JWT | Listar plantillas |
POST | /contracts/templates | JWT | Crear plantilla |
PUT | /contracts/templates/:id | JWT | Actualizar plantilla |
Detalle: Contratos DPA
Governance y Reportes
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /governance/compliance-score | JWT | Puntaje de cumplimiento ponderado con breakdown, counts y priorityActions |
GET | /governance/reports | JWT | Listar reportes generados |
POST | /governance/reports/generate | JWT | Generar reporte con instantánea de cumplimiento (title?) |
GET | /governance/reports/:id/download | JWT | Obtener datos completos del reporte |
DELETE | /governance/reports/:id | JWT | Eliminar reporte |
GET | /governance/export/rat | JWT | Exportar RAT (?format=csv|excel) |
GET | /governance/export/dpia | JWT | Exportar DPIA (?format=csv|excel) |
Detalle: Governance
Politica de Privacidad
| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
POST | /privacy-policy/generate | JWT | Generar politica desde datos del RAT |
GET | /privacy-policy/current | JWT | Obtener politica actual (publicada o ultimo borrador) |
GET | /privacy-policy/versions | JWT | Listar versiones de la politica |
GET | /privacy-policy/:id | JWT | Detalle de una version |
PATCH | /privacy-policy/:id | JWT | Personalizar politica (solo DRAFT) |
POST | /privacy-policy/:id/publish | JWT | Publicar politica (inicia workflow) |
Detalle: Endpoints Politica de Privacidad
Politica de Cookies
| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
POST | /cookie-policy/generate | JWT (Approver) | Generar politica desde avisos CMP |
GET | /cookie-policy/current | JWT | Obtener politica actual (filtros: ?legalEntityId, ?domainId) |
GET | /cookie-policy/versions | JWT | Listar versiones (filtros: ?legalEntityId, ?domainId) |
GET | /cookie-policy/check-coverage | JWT | Verificar cobertura para entidad+dominio |
GET | /cookie-policy/:id | JWT | Detalle de una version |
PUT | /cookie-policy/:id | JWT (Approver) | Personalizar politica (solo DRAFT) |
DELETE | /cookie-policy/:id | JWT (Approver) | Eliminar politica (solo DRAFT) |
POST | /cookie-policy/:id/publish | JWT (Approver) | Publicar politica |
Detalle: Endpoints Politica de Cookies
Centro de Privacidad
| Método | Endpoint | Auth | Descripción |
|---|---|---|---|
GET | /public/privacy/:widgetKey/config | Público | Configuración del centro de privacidad |
POST | /public/privacy/:widgetKey/verify-email | Público | Enviar magic link de verificación |
GET | /public/privacy/:widgetKey/verify/:token | Público | Verificar token → sesión de portal |
GET | /public/privacy/:widgetKey/consent | Portal Session | Obtener consentimientos del titular |
POST | /public/privacy/:widgetKey/consent | Portal Session | Actualizar preferencias de consentimiento |
POST | /public/privacy/:widgetKey/request | Portal Session | Crear solicitud ARSOP |
GET | /public/privacy/:widgetKey/requests | Portal Session | Listar solicitudes del titular |
GET | /public/privacy/:widgetKey/request/:requestId/status | Portal Session | Estado de una solicitud |
Detalle: Centro de Privacidad
Configuracion (Settings)
| Metodo | Endpoint | Auth | Descripcion |
|---|---|---|---|
GET | /settings/tenant | JWT | Obtener configuracion del tenant |
PUT | /settings/tenant | JWT | Actualizar configuracion del tenant |
GET | /settings/tenant/dpo-check | JWT | Verificar si el tenant tiene DPO designado |
GET | /settings/usage | JWT | Obtener uso y cuotas del plan |
GET | /settings/api-keys | JWT (Admin) | Listar API Keys |
POST | /settings/api-keys | JWT (Admin) | Crear API Key |
PUT | /settings/api-keys/:id | JWT (Admin) | Actualizar API Key |
DELETE | /settings/api-keys/:id | JWT (Admin) | Eliminar API Key |
Detalle: Configuracion y API Keys
Paginacion
Todos los endpoints de listado soportan paginación estándar:
GET /api/v1/{recurso}?page=1&limit=20| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
page | number | 1 | Número de página |
limit | number | 20 | Registros por página (máx: 100) |
Respuesta:
{
"success": true,
"data": {
"items": [],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"totalPages": 8
}
}
}Rate Limiting
| Plan | Límite |
|---|---|
| Starter | 100 req/min |
| Professional | 500 req/min |
| Enterprise | 2000 req/min |
Header de respuesta: X-RateLimit-Remaining: 95
Formato de Errores
{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "La actividad solicitada no existe."
}
}Códigos de error
| Código | HTTP | Descripción |
|---|---|---|
UNAUTHORIZED | 401 | Token inválido o ausente |
FORBIDDEN | 403 | Sin permisos para esta acción |
RESOURCE_NOT_FOUND | 404 | Recurso no encontrado |
VALIDATION_ERROR | 422 | Error de validación en el body |
CONFLICT | 409 | Estado o recurso en conflicto |
RATE_LIMIT_EXCEEDED | 429 | Límite de requests excedido |
FEATURE_DISABLED | 403 | Feature no disponible en el plan actual |
INTERNAL_ERROR | 500 | Error interno del servidor |