API REST (Desarrolladores)
Referencia Completa

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étodoEndpointAuthDescripción
POST/auth/registerPúblicoCrear cuenta y tenant
POST/auth/loginPúblicoIniciar sesión → access_token + refresh_token
POST/auth/refreshPúblicoRenovar tokens con refresh_token
GET/auth/meJWTDatos del usuario actual y sus tenants
POST/auth/select-tenantJWTSeleccionar tenant activo → nuevo token con contexto

Detalle: Autenticación


RAT — Registro de Actividades de Tratamiento

MétodoEndpointAuthDescripción
GET/rat/activitiesJWTListar actividades (paginado, filtros: ?status, ?legalBasis, ?hasSensitiveData, ?riskLevel, ?dpiaRequired)
POST/rat/activitiesJWTCrear actividad de tratamiento
GET/rat/activities/:idJWTDetalle de una actividad con encargados
PUT/rat/activities/:idJWTActualizar actividad
PATCH/rat/activities/:id/statusJWTCambiar estado (draft, published, archived)
GET/rat/activities/:id/compliance-checkJWTVerificar cumplimiento normativo
POST/rat/activities/preview/calculate-riskJWTCalcular riesgo (sin guardar)
POST/rat/activities/:id/calculate-riskJWTCalcular y guardar nivel de riesgo
POST/rat/activities/:id/from-templateJWTCrear actividad desde plantilla
GET/rat/templatesJWTListar plantillas predefinidas
GET/rat/templates/:templateIdJWTObtener detalle de plantilla
GET/rat/data-catalogJWTCatalogo de tipos de datos personales
DELETE/rat/activities/:idJWTEliminar actividad (solo draft/archived)
POST/rat/activities/:id/systemsJWTVincular sistema del Mapa de Datos
POST/rat/activities/:id/flowsJWTVincular flujo de datos
POST/rat/activities/:id/linksJWTSincronizar vinculos (bulk)
GET/rat/statsJWTEstadisticas agregadas del RAT
GET/rat/geo-summaryJWTResumen geografico para mapa interactivo
POST/rat/generate-from-aiJWTGenerar actividad con IA (Professional+)
POST/rat/suggest-fieldJWTSugerir campo con IA (Professional+)
POST/rat/bulk-importJWTImportacion masiva (max 200)
POST/rat/from-systemJWTCrear actividad desde sistema del Mapa de Datos

Detalle: Endpoints RAT


ARSOP — Solicitudes de Derechos (DSAR)

MétodoEndpointAuthDescripción
GET/dsar/requestsJWTListar solicitudes (paginado, filtros: ?status, ?rightType, ?overdue)
GET/dsar/requests/:idJWTDetalle de solicitud con eventos y timeline
PATCH/dsar/requests/:idJWTActualizar estado de solicitud
POST/dsar/requests/:id/assignJWTAsignar responsable
POST/dsar/requests/:id/extendJWTSolicitar prórroga de plazo (+30 días corridos, total 60 — Art. 11)
POST/dsar/requests/:id/respondJWTResponder solicitud (resolver o rechazar)
POST/dsar/requests/:id/notify-thirdsJWTNotificar a terceros
GET/dsar/requests/:id/timelineJWTLínea de tiempo de eventos
GET/dsar/statsJWTEstadísticas generales DSAR
GET/dsar/widgetsJWTListar widgets DSAR configurados
POST/dsar/widgetsJWTCrear widget DSAR
POST/public/dsar/:widgetKeyPúblicoCrear solicitud desde formulario público
GET/public/dsar/track/:folioPúblicoConsultar estado con código de seguimiento

Detalle: Endpoints DSAR


CMP — Consent Management Platform

MétodoEndpointAuthDescripción
GET/consent/noticesJWTListar avisos de consentimiento (filtro: ?isActive)
POST/consent/noticesJWTCrear aviso de consentimiento
GET/consent/notices/:idJWTDetalle del aviso con propósitos
PUT/consent/notices/:idJWTActualizar aviso
POST/consent/notices/:id/publishJWTPublicar aviso (activa y genera widgetKey)
GET/consent/notices/:id/recordsJWTRegistros de consentimiento del aviso
GET/consent/notices/:id/statsJWTEstadísticas de consentimiento
GET/public/consent/:widgetKey/configPúblicoConfiguración del widget para el SDK
POST/public/consent/:widgetKey/recordPublicoRegistrar decision de consentimiento
GET/consent/templatesJWTListar templates de consentimiento
POST/consent/templatesJWTCrear template
GET/consent/templates/:idJWTDetalle del template
PUT/consent/templates/:idJWTActualizar template
DELETE/consent/templates/:idJWTEliminar template
GET/consent/templates/:id/recordsJWTRegistros de un template
GET/consent/templates/:id/statsJWTEstadisticas de un template
POST/consent/templates/:id/manualJWTRegistro manual de consentimiento
POST/consent/templates/:id/webhooksJWTCrear webhook
GET/consent/templates/:id/webhooksJWTListar webhooks
DELETE/consent/templates/:id/webhooks/:whIdJWTEliminar webhook
GET/public/consent-form/:formKey/configPublicoConfig del formulario hosteado
POST/public/consent-form/:formKey/submitPublicoEnviar respuesta del formulario
POST/external/consent/recordsAPI KeyRegistrar consentimiento (server-to-server)
GET/external/consent/templatesAPI KeyListar templates activos
GET/external/consent/subject/:ref/consentsAPI KeyConsultar consentimientos de un sujeto

Detalle: Endpoints CMP


DPIA — Evaluación de Impacto

MétodoEndpointAuthDescripción
GET/dpia/assessmentsJWTListar evaluaciones (filtro: ?status)
POST/dpia/assessmentsJWTCrear evaluación de impacto
GET/dpia/assessments/:idJWTDetalle con riesgos asociados
PUT/dpia/assessments/:idJWTActualizar evaluación
POST/dpia/assessments/:id/submit-reviewJWTEnviar a revisión
POST/dpia/assessments/:id/approveJWTAprobar (approverName, approverRole)
POST/dpia/assessments/:id/rejectJWTRechazar (reason)
POST/dpia/assessments/:id/risksJWTAgregar riesgo
PUT/dpia/assessments/:id/risks/:riskIdJWTActualizar riesgo
DELETE/dpia/assessments/:id/risks/:riskIdJWTEliminar riesgo
GET/dpia/assessments/:id/export/pdfJWTExportar como PDF
POST/dpia/:activityId/screeningJWTScreening de necesidad de DPIA para actividad RAT

Detalle: Endpoints DPIA


Dominios

MetodoEndpointAuthDescripcion
GET/domainsJWTListar dominios (filtros: ?legalEntityId, ?isActive)
POST/domainsJWTCrear dominio
GET/domains/:idJWTDetalle del dominio con avisos, actividades y politicas
PATCH/domains/:idJWTActualizar dominio
DELETE/domains/:idJWTEliminar dominio
POST/domains/:id/activitiesJWTVincular actividad RAT
DELETE/domains/:id/activities/:actIdJWTDesvincular actividad RAT
POST/domains/:id/activities/bulk-syncJWTSincronizar actividades (bulk)

Detalle: Endpoints Dominios


Brechas de Seguridad

MétodoEndpointAuthDescripción
GET/breachesJWTListar incidentes (filtros: ?status, ?requiresNotification)
POST/breachesJWTRegistrar nuevo incidente
GET/breaches/:idJWTDetalle del incidente con eventos
PUT/breaches/:idJWTActualizar incidente
PATCH/breaches/:id/statusJWTCambiar estado del incidente
POST/breaches/:id/decision-treeJWTEvaluar árbol de decisión de notificación (72h APDP)
POST/breaches/:id/notify-apdpJWTRegistrar notificación a la APDP
GET/breaches/:id/notification-templateJWTPlantilla de notificación prellenada
POST/webhooks/wazuh/:tenantSlugHMACWebhook para alertas Wazuh SIEM

Detalle: Brechas de Seguridad


Mapa de Datos

MétodoEndpointAuthDescripción
GET/data-map/catalogJWTCatálogo de sistemas con resumen
GET/data-map/systemsJWTListar sistemas (filtros: ?type, ?contractStatus)
POST/data-map/systemsJWTCrear sistema
GET/data-map/systems/:idJWTDetalle del sistema
PUT/data-map/systems/:idJWTActualizar sistema
DELETE/data-map/systems/:idJWTEliminar sistema
GET/data-map/flowsJWTListar flujos de datos
POST/data-map/flowsJWTCrear flujo de datos
DELETE/data-map/flows/:idJWTEliminar flujo

Detalle: Mapa de Datos


Contratos DPA

MétodoEndpointAuthDescripción
GET/contractsJWTListar contratos (filtros: ?status, ?type, ?expiringSoon)
POST/contracts/generateJWTGenerar contrato desde plantilla (processorId, templateId, activityIds[])
GET/contracts/:idJWTDetalle del contrato
PUT/contracts/:idJWTActualizar contrato (solo DRAFT)
DELETE/contracts/:idJWTEliminar contrato (solo DRAFT)
POST/contracts/:id/sendJWTEnviar para firma (signerName, signerEmail)
POST/contracts/:id/signJWTRegistrar firma (signerName, signerRut?)
POST/contracts/:id/renewJWTRenovar contrato (solo SIGNED/EXPIRED)
GET/contracts/templatesJWTListar plantillas
POST/contracts/templatesJWTCrear plantilla
PUT/contracts/templates/:idJWTActualizar plantilla

Detalle: Contratos DPA


Governance y Reportes

MétodoEndpointAuthDescripción
GET/governance/compliance-scoreJWTPuntaje de cumplimiento ponderado con breakdown, counts y priorityActions
GET/governance/reportsJWTListar reportes generados
POST/governance/reports/generateJWTGenerar reporte con instantánea de cumplimiento (title?)
GET/governance/reports/:id/downloadJWTObtener datos completos del reporte
DELETE/governance/reports/:idJWTEliminar reporte
GET/governance/export/ratJWTExportar RAT (?format=csv|excel)
GET/governance/export/dpiaJWTExportar DPIA (?format=csv|excel)

Detalle: Governance


Politica de Privacidad

MetodoEndpointAuthDescripcion
POST/privacy-policy/generateJWTGenerar politica desde datos del RAT
GET/privacy-policy/currentJWTObtener politica actual (publicada o ultimo borrador)
GET/privacy-policy/versionsJWTListar versiones de la politica
GET/privacy-policy/:idJWTDetalle de una version
PATCH/privacy-policy/:idJWTPersonalizar politica (solo DRAFT)
POST/privacy-policy/:id/publishJWTPublicar politica (inicia workflow)

Detalle: Endpoints Politica de Privacidad


Politica de Cookies

MetodoEndpointAuthDescripcion
POST/cookie-policy/generateJWT (Approver)Generar politica desde avisos CMP
GET/cookie-policy/currentJWTObtener politica actual (filtros: ?legalEntityId, ?domainId)
GET/cookie-policy/versionsJWTListar versiones (filtros: ?legalEntityId, ?domainId)
GET/cookie-policy/check-coverageJWTVerificar cobertura para entidad+dominio
GET/cookie-policy/:idJWTDetalle de una version
PUT/cookie-policy/:idJWT (Approver)Personalizar politica (solo DRAFT)
DELETE/cookie-policy/:idJWT (Approver)Eliminar politica (solo DRAFT)
POST/cookie-policy/:id/publishJWT (Approver)Publicar politica

Detalle: Endpoints Politica de Cookies


Centro de Privacidad

MétodoEndpointAuthDescripción
GET/public/privacy/:widgetKey/configPúblicoConfiguración del centro de privacidad
POST/public/privacy/:widgetKey/verify-emailPúblicoEnviar magic link de verificación
GET/public/privacy/:widgetKey/verify/:tokenPúblicoVerificar token → sesión de portal
GET/public/privacy/:widgetKey/consentPortal SessionObtener consentimientos del titular
POST/public/privacy/:widgetKey/consentPortal SessionActualizar preferencias de consentimiento
POST/public/privacy/:widgetKey/requestPortal SessionCrear solicitud ARSOP
GET/public/privacy/:widgetKey/requestsPortal SessionListar solicitudes del titular
GET/public/privacy/:widgetKey/request/:requestId/statusPortal SessionEstado de una solicitud

Detalle: Centro de Privacidad


Configuracion (Settings)

MetodoEndpointAuthDescripcion
GET/settings/tenantJWTObtener configuracion del tenant
PUT/settings/tenantJWTActualizar configuracion del tenant
GET/settings/tenant/dpo-checkJWTVerificar si el tenant tiene DPO designado
GET/settings/usageJWTObtener uso y cuotas del plan
GET/settings/api-keysJWT (Admin)Listar API Keys
POST/settings/api-keysJWT (Admin)Crear API Key
PUT/settings/api-keys/:idJWT (Admin)Actualizar API Key
DELETE/settings/api-keys/:idJWT (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ámetroTipoDefaultDescripción
pagenumber1Número de página
limitnumber20Registros por página (máx: 100)

Respuesta:

{
  "success": true,
  "data": {
    "items": [],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 150,
      "totalPages": 8
    }
  }
}

Rate Limiting

PlanLímite
Starter100 req/min
Professional500 req/min
Enterprise2000 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ódigoHTTPDescripción
UNAUTHORIZED401Token inválido o ausente
FORBIDDEN403Sin permisos para esta acción
RESOURCE_NOT_FOUND404Recurso no encontrado
VALIDATION_ERROR422Error de validación en el body
CONFLICT409Estado o recurso en conflicto
RATE_LIMIT_EXCEEDED429Límite de requests excedido
FEATURE_DISABLED403Feature no disponible en el plan actual
INTERNAL_ERROR500Error interno del servidor