API REST (Desarrolladores)
Governance

Governance

Endpoints para puntaje de cumplimiento, reportes y exportaciones.

Todos los endpoints requieren autenticación JWT. El tenant se determina automáticamente desde el token.

Puntaje de cumplimiento

GET /api/v1/governance/compliance-score

Calcula el puntaje de cumplimiento ponderado del tenant, desglosado por módulo.

curl -X GET https://api.dpolab.com/api/v1/governance/compliance-score \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "overallScore": 78,
    "breakdown": {
      "rat": {
        "score": 85,
        "weight": 25,
        "label": "Registro de Tratamiento",
        "detail": "38 de 45 actividades activas"
      },
      "arsop": {
        "score": 72,
        "weight": 15,
        "label": "Canal ARCO",
        "detail": "2 solicitudes vencidas"
      },
      "cmp": {
        "score": 100,
        "weight": 15,
        "label": "Consentimiento",
        "detail": "Aviso publicado"
      },
      "dpia": {
        "score": 65,
        "weight": 20,
        "label": "DPIA",
        "detail": "4 de 6 evaluaciones aprobadas"
      },
      "dataMap": {
        "score": 100,
        "weight": 15,
        "label": "Mapa de Datos",
        "detail": "Sistemas registrados"
      },
      "breaches": {
        "score": 100,
        "weight": 10,
        "label": "Brechas",
        "detail": "Sin brechas pendientes"
      }
    },
    "counts": {
      "rat": { "total": 45, "byStatus": { "ACTIVE": 38, "DRAFT": 7 } },
      "arsop": { "total": 23, "pending": 5, "overdue": 2 },
      "cmp": { "total": 3 },
      "dpia": { "total": 8, "pendingApproval": 3 },
      "breaches": { "total": 3, "open": 1 },
      "dataMap": { "total": 12 },
      "contracts": { "total": 3, "withoutDpa": 2, "expired": 1 }
    },
    "priorityActions": [
      {
        "module": "ARSOP",
        "severity": "critical",
        "message": "2 solicitudes ARCO vencidas — riesgo de reclamación ante APDP"
      },
      {
        "module": "Contratos",
        "severity": "critical",
        "message": "2 encargados sin DPA firmado — tratamiento ilícito según Art. 15 bis"
      }
    ]
  }
}

Pesos por módulo

MóduloPesoCriterio
RAT25%Proporción de actividades activas vs total
ARSOP15%Widget configurado, solicitudes al día, DPO completo
CMP15%Al menos un aviso de consentimiento publicado
DPIA20%Evaluaciones aprobadas para actividades con datos sensibles
Mapa de Datos15%Al menos un sistema registrado
Brechas10%Sin brechas abiertas por más de 7 días
⚠️

Se aplican penalizaciones adicionales por encargados sin DPA firmado (-8 pts c/u, máx -20) y contratos vencidos (-5 pts c/u, máx -15).


Reportes

Listar reportes

GET /api/v1/governance/reports

Query params:

ParamTipoDescripción
pagenumberPágina (default: 1)
limitnumberRegistros por página (default: 20)
curl -X GET "https://api.dpolab.com/api/v1/governance/reports" \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "reports": [
      {
        "id": "rpt_abc123",
        "title": "Reporte de Cumplimiento - 09-03-2026",
        "type": "EXECUTIVE",
        "scoreSnapshot": { "overallScore": 78 },
        "generatedBy": "user_001",
        "createdAt": "2026-03-09T10:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 6,
      "totalPages": 1
    }
  }
}

Generar reporte

POST /api/v1/governance/reports/generate

Genera un reporte con una instantánea (scoreSnapshot) del puntaje de cumplimiento actual.

Body (opcional):

{
  "title": "Reporte trimestral Q1 2026"
}

Si no se envía title, se genera automáticamente con la fecha actual.

curl -X POST https://api.dpolab.com/api/v1/governance/reports/generate \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Reporte trimestral Q1 2026" }'

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "rpt_gen789",
    "title": "Reporte trimestral Q1 2026",
    "type": "EXECUTIVE",
    "scoreSnapshot": {
      "overallScore": 78,
      "breakdown": { "..." : "..." },
      "counts": { "..." : "..." },
      "priorityActions": []
    },
    "generatedBy": "user_001",
    "createdAt": "2026-03-09T10:00:00Z"
  }
}

Obtener reporte

GET /api/v1/governance/reports/:id/download

Retorna los datos completos del reporte incluyendo la instantánea de cumplimiento.

curl -X GET https://api.dpolab.com/api/v1/governance/reports/rpt_abc123/download \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "id": "rpt_abc123",
    "title": "Reporte de Cumplimiento - 09-03-2026",
    "type": "EXECUTIVE",
    "scoreSnapshot": { "overallScore": 78, "breakdown": {}, "counts": {}, "priorityActions": [] },
    "generatedBy": "user_001",
    "createdAt": "2026-03-09T10:00:00Z"
  }
}

Eliminar reporte

DELETE /api/v1/governance/reports/:id
curl -X DELETE https://api.dpolab.com/api/v1/governance/reports/rpt_abc123 \
  -H "Authorization: Bearer {token}"

Exportaciones

Exportar RAT

GET /api/v1/governance/export/rat

Exporta el Registro de Actividades de Tratamiento completo.

Query params:

ParamTipoDescripción
formatstringFormato: csv, excel (default: csv)
curl -X GET "https://api.dpolab.com/api/v1/governance/export/rat?format=csv" \
  -H "Authorization: Bearer {token}" \
  -o rat_completo.csv

Exportar DPIA

GET /api/v1/governance/export/dpia

Exporta las evaluaciones de impacto.

Query params:

ParamTipoDescripción
formatstringFormato: csv, excel (default: csv)
curl -X GET "https://api.dpolab.com/api/v1/governance/export/dpia?format=csv" \
  -H "Authorization: Bearer {token}" \
  -o eipd_todas.csv

Ver también