API REST (Desarrolladores)
Endpoints RAT

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/activities

Query params:

ParamTipoDescripcion
pagenumberPagina (default: 1)
limitnumberRegistros por pagina (default: 20, max: 100)
statusstringFiltrar por estado: draft, published, archived
legalBasisstringFiltrar por base legal (ver valores permitidos)
hasSensitiveDatabooleanFiltrar actividades con datos sensibles
riskLevelstringFiltrar por nivel de riesgo
dpiaRequiredbooleanFiltrar 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/:id
curl -X GET https://api.dpolab.com/api/v1/rat/activities/act_abc123 \
  -H "Authorization: Bearer {token}"

Crear actividad

POST /api/v1/rat/activities

Body:

{
  "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/:id

Acepta 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/status

Body:

{
  "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-check
curl -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-risk

Body:

{
  "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-risk

Body:

{
  "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-template

Body:

{
  "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/templates
curl -X GET https://api.dpolab.com/api/v1/rat/templates \
  -H "Authorization: Bearer {token}"

Obtener plantilla

GET /api/v1/rat/templates/:templateId
curl -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-catalog
curl -X GET https://api.dpolab.com/api/v1/rat/data-catalog \
  -H "Authorization: Bearer {token}"

Valores permitidos

Bases legales (legalBasis)

ValorDescripcion
consentConsentimiento del titular
contractEjecucion contractual
legal_obligationObligacion legal
vital_interestInteres vital
public_interestInteres publico
legitimate_interestInteres 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/:id

Solo 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/systems

Body:

{
  "systemId": "sys_abc123",
  "role": "STORAGE"
}
RolDescripcion
STORAGEEl sistema almacena los datos
PROCESSINGEl sistema procesa los datos
COLLECTIONEl sistema recopila los datos
TRANSFEREl sistema transfiere los datos

Vincular flujo de datos

POST /api/v1/rat/activities/:id/flows

Sincronizar vinculos (bulk)

POST /api/v1/rat/activities/:id/links

Sincroniza todos los vinculos de sistemas y flujos de una actividad de forma atomica.

Vincular dominios

POST /api/v1/rat/activities/:id/domains

Vincula la actividad a un dominio. Ver Endpoints Dominios.

Estadisticas del RAT

GET /api/v1/rat/stats

Retorna 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-summary

Retorna 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-ai

Genera 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-field

Sugiere valores para un campo especifico basandose en el contexto de la actividad.

Importacion masiva

POST /api/v1/rat/bulk-import

Importa 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-system

Genera 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