Endpoints RAT
Endpoints para gestionar el Registro de Actividades de Tratamiento en DPOLab.
Todos los endpoints requieren autenticacion. El tenant se determina automaticamente desde el JWT.
Listar actividades
GET /api/v1/rat/activitiesQuery params:
| Param | Tipo | Descripcion |
|---|---|---|
page | number | Pagina (default: 1) |
limit | number | Registros por pagina (default: 20, max: 100) |
status | string | Filtrar por estado: draft, published, archived |
legalBasis | string | Filtrar por base legal (ver valores permitidos) |
hasSensitiveData | boolean | Filtrar actividades con datos sensibles |
riskLevel | string | Filtrar por nivel de riesgo |
dpiaRequired | boolean | Filtrar por requerimiento de DPIA |
Ejemplo:
curl -X GET "https://api.dpolab.com/api/v1/rat/activities?status=published&limit=10" \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"items": [
{
"id": "act_abc123",
"name": "Registro de clientes en CRM",
"purpose": "Gestion de relacion comercial",
"legalBasis": "contract",
"dataCategories": ["name", "email", "phone", "rut"],
"subjectCategories": ["customers"],
"retentionPeriod": "5_years",
"status": "published",
"systemId": "sys_xyz789",
"createdAt": "2026-01-15T10:30:00Z",
"updatedAt": "2026-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 45,
"totalPages": 5
}
}
}Obtener actividad
Retorna el detalle de una actividad incluyendo sus encargados de tratamiento (processors).
GET /api/v1/rat/activities/:idcurl -X GET https://api.dpolab.com/api/v1/rat/activities/act_abc123 \
-H "Authorization: Bearer {token}"Crear actividad
POST /api/v1/rat/activitiesBody:
{
"name": "Envio de newsletter",
"purpose": "Comunicaciones comerciales",
"legalBasis": "consent",
"dataCategories": ["email", "name"],
"subjectCategories": ["subscribers"],
"recipients": ["Mailchimp"],
"internationalTransfer": {
"exists": true,
"country": "US",
"mechanism": "contractual_clauses"
},
"retentionPeriod": "until_unsubscribe",
"securityMeasures": ["encryption", "access_control"],
"systemId": "sys_mail01"
}Campos requeridos: name, purpose, legalBasis, dataCategories, subjectCategories, retentionPeriod, systemId.
Respuesta (201):
{
"success": true,
"data": {
"id": "act_new456",
"name": "Envio de newsletter",
"status": "draft",
"createdAt": "2026-03-07T14:00:00Z"
}
}Actualizar actividad
PUT /api/v1/rat/activities/:idAcepta los mismos campos que la creacion. Solo envia los campos que quieras actualizar.
curl -X PUT https://api.dpolab.com/api/v1/rat/activities/act_new456 \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{ "name": "Newsletter mensual actualizado" }'Cambiar estado
PATCH /api/v1/rat/activities/:id/statusBody:
{
"status": "published"
}curl -X PATCH https://api.dpolab.com/api/v1/rat/activities/act_new456/status \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{ "status": "published" }'Verificar cumplimiento
Verifica el estado de cumplimiento de una actividad de tratamiento.
GET /api/v1/rat/activities/:id/compliance-checkcurl -X GET https://api.dpolab.com/api/v1/rat/activities/act_abc123/compliance-check \
-H "Authorization: Bearer {token}"Calcular riesgo (preview)
Calcula el nivel de riesgo sin guardar el resultado. Util para previsualizar antes de confirmar.
POST /api/v1/rat/activities/preview/calculate-riskBody:
{
"riskFactors": {
"dataVolume": "high",
"sensitiveData": true,
"internationalTransfer": true,
"automatedDecision": false
}
}curl -X POST https://api.dpolab.com/api/v1/rat/activities/preview/calculate-risk \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{ "riskFactors": { "dataVolume": "high", "sensitiveData": true } }'Calcular riesgo (guardar)
Calcula el nivel de riesgo y lo guarda en la actividad.
POST /api/v1/rat/activities/:id/calculate-riskBody:
{
"riskFactors": {
"dataVolume": "high",
"sensitiveData": true,
"internationalTransfer": true,
"automatedDecision": false
}
}curl -X POST https://api.dpolab.com/api/v1/rat/activities/act_abc123/calculate-risk \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{ "riskFactors": { "dataVolume": "high", "sensitiveData": true } }'Crear desde plantilla
Crea una nueva actividad basada en una plantilla predefinida.
POST /api/v1/rat/activities/:id/from-templateBody:
{
"templateId": "tpl_crm_basic"
}curl -X POST https://api.dpolab.com/api/v1/rat/activities/act_abc123/from-template \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{ "templateId": "tpl_crm_basic" }'Plantillas
Listar plantillas
GET /api/v1/rat/templatescurl -X GET https://api.dpolab.com/api/v1/rat/templates \
-H "Authorization: Bearer {token}"Obtener plantilla
GET /api/v1/rat/templates/:templateIdcurl -X GET https://api.dpolab.com/api/v1/rat/templates/tpl_crm_basic \
-H "Authorization: Bearer {token}"Catalogo de tipos de datos
Retorna el catalogo completo de tipos de datos disponibles para clasificar actividades de tratamiento.
GET /api/v1/rat/data-catalogcurl -X GET https://api.dpolab.com/api/v1/rat/data-catalog \
-H "Authorization: Bearer {token}"Valores permitidos
Bases legales (legalBasis)
| Valor | Descripcion |
|---|---|
consent | Consentimiento del titular |
contract | Ejecucion contractual |
legal_obligation | Obligacion legal |
vital_interest | Interes vital |
public_interest | Interes publico |
legitimate_interest | Interes legitimo |
Categorias de datos (dataCategories)
name, email, phone, rut, address, financial, health, biometric, ethnic_origin, political, religious, sexual_orientation, criminal, minor_data, location, browsing, employment
Periodos de retencion (retentionPeriod)
1_year, 2_years, 3_years, 5_years, 10_years, until_purpose_fulfilled, until_unsubscribe, legal_minimum, indefinite
Eliminar actividad
DELETE /api/v1/rat/activities/:idSolo se pueden eliminar actividades en estado draft o archived.
curl -X DELETE https://api.dpolab.com/api/v1/rat/activities/act_abc123 \
-H "Authorization: Bearer {token}"Vincular sistemas y flujos
Vincular sistema del Mapa de Datos
POST /api/v1/rat/activities/:id/systemsBody:
{
"systemId": "sys_abc123",
"role": "STORAGE"
}| Rol | Descripcion |
|---|---|
STORAGE | El sistema almacena los datos |
PROCESSING | El sistema procesa los datos |
COLLECTION | El sistema recopila los datos |
TRANSFER | El sistema transfiere los datos |
Vincular flujo de datos
POST /api/v1/rat/activities/:id/flowsSincronizar vinculos (bulk)
POST /api/v1/rat/activities/:id/linksSincroniza todos los vinculos de sistemas y flujos de una actividad de forma atomica.
Vincular dominios
POST /api/v1/rat/activities/:id/domainsVincula la actividad a un dominio. Ver Endpoints Dominios.
Estadisticas del RAT
GET /api/v1/rat/statsRetorna estadisticas agregadas de todas las actividades de tratamiento.
curl -X GET https://api.dpolab.com/api/v1/rat/stats \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"total": 24,
"byStatus": [
{ "status": "published", "count": 18 },
{ "status": "draft", "count": 4 },
{ "status": "archived", "count": 2 }
],
"byLegalBasis": [
{ "legalBasis": "consent", "count": 8 },
{ "legalBasis": "contract", "count": 10 },
{ "legalBasis": "legal_obligation", "count": 6 }
],
"byRiskLevel": [
{ "riskLevel": "low", "count": 12 },
{ "riskLevel": "medium", "count": 8 },
{ "riskLevel": "high", "count": 4 }
],
"sensitiveData": { "yes": 6, "no": 18 },
"internationalTransfers": { "yes": 10, "no": 14 },
"dpiaRequired": { "yes": 4, "no": 20 },
"byDataCategory": [],
"dpaStatus": { "signed": 8, "pending": 3, "notRequired": 13 }
}
}Resumen geografico
GET /api/v1/rat/geo-summaryRetorna marcadores geograficos para el mapa interactivo: encargados, destinatarios y sistemas de hosting con sus paises.
curl -X GET https://api.dpolab.com/api/v1/rat/geo-summary \
-H "Authorization: Bearer {token}"Respuesta (200):
{
"success": true,
"data": {
"markers": [
{
"activityId": "act_001",
"activityName": "CRM Salesforce",
"country": "US",
"countryName": "Estados Unidos",
"type": "processor",
"detail": "Salesforce Inc."
},
{
"activityId": "act_002",
"activityName": "Email Marketing",
"country": "IE",
"countryName": "Irlanda",
"type": "hosting",
"detail": "AWS EU-West-1"
}
]
}
}Generar actividad con IA
POST /api/v1/rat/generate-from-aiGenera una actividad de tratamiento completa usando inteligencia artificial.
Disponible desde el plan Professional. Consume cuotas de consultas AI segun el plan.
Sugerir campo con IA
POST /api/v1/rat/suggest-fieldSugiere valores para un campo especifico basandose en el contexto de la actividad.
Importacion masiva
POST /api/v1/rat/bulk-importImporta multiples actividades de tratamiento desde un array JSON.
Body:
{
"activities": [
{
"name": "Registro de clientes",
"controllerName": "Ejemplo SpA",
"legalBasis": "contract",
"purposes": "Gestion comercial",
"dataSubjects": "Clientes"
}
]
}Maximo 200 actividades por importacion.
Crear actividad desde sistema
POST /api/v1/rat/from-systemGenera una nueva actividad pre-llenada con los datos de un sistema del Mapa de Datos.
Ver tambien
- Modulo RAT — Guia funcional del Registro de Actividades de Tratamiento