Actividades de tratamiento
El registro de actividades de tratamiento (RAT) es el inventario legal de todo lo que el colegio hace con datos personales. Cada actividad (processing_activity) describe una finalidad; su contenido vive en versiones selladas (processing_activity_versions), y sobre las actividades de alto riesgo se levantan evaluaciones de impacto (dpia_assessments, EIPD, Art. 15 ter). Por API puedes leer todo el registro y escribir el RAT; la autoría de EIPD es de consola.
La misma superficie para integradores partner está en Actividades de tratamiento (Partner API); el registro de riesgos asociado, en Riesgos.
El modelo de versionado
Una actividad publica su contenido en versiones inmutables y monotónicas:
versionNumbercrece de a uno; la actividad apunta a la vigente concurrentVersionNumber.- Cada versión queda sellada con
noticeChecksum— SHA-256 sobre el contenido normativo (finalidad, aviso en lenguaje claro, base legal, modelo de consentimiento y sus opciones, resúmenes de retención/transferencia/automatización). Si el texto cambia, cambia el checksum: es la prueba de qué vio el apoderado. - Publicar una versión nueva puede invalidar los consentimientos anteriores (
invalidatesPreviousConsents): las solicitudespending/grantedde versiones previas pasan ainvalidatedy se dispara la recaptura. La respuesta te entrega los ids afectados. - Lo que no envíes en la versión nueva (
dataCategories,recipients,consentOptions) se arrastra desde la versión anterior; lo que envíes la reemplaza. - Publicar cuenta como revisión: fija
lastReviewedAt, calcula el próximoreviewDueAty reabre las EIPD aprobadas de la actividad.
Listar actividades
Requiere processing_activities.read. Pagina con limit y cursor. Cada actividad llega con su currentVersion, su política de retención y el conteo de EIPD (dpiaAssessmentCount).
Campos principales
- Nombre
code / name- Tipo
- string
- Descripción
Folio y nombre de la actividad.
- Nombre
status- Tipo
- string
- Descripción
draft,activeoarchived.
- Nombre
lawfulBasis- Tipo
- string
- Descripción
Base de licitud (por defecto
consent). La finalidad no es un campo de la actividad: vive en la versión comopurposeSummary.
- Nombre
riskLevel / isHighRisk- Tipo
- string / boolean
- Descripción
Nivel de riesgo declarado; con las banderas
involvesSensitiveData,involvesMinorData,includesAutomatedDecisions,includesInternationalTransfers,includesMonitoring,isLargeScale.
- Nombre
currentVersion- Tipo
- object | null
- Descripción
La versión vigente:
versionNumber,versionStatus,title,purposeSummary,plainLanguageNotice,consentModel(bundled|granular),noticeChecksum,publishedAt…
- Nombre
reviewDueAt / lastReviewedAt- Tipo
- timestamp
- Descripción
El ciclo de revisión anual del RAT.
Solicitud
curl -G "https://app.edugoverna.com/api/processing-activities" \
-H "x-api-key: {tu_api_key}" \
-d limit=25
Respuesta (recortada)
{
"processingActivities": [
{
"id": "a2f1…",
"code": "ACT-004",
"name": "Comunicaciones académicas",
"status": "active",
"lawfulBasis": "consent",
"consentRequired": true,
"involvesSensitiveData": false,
"involvesMinorData": true,
"riskLevel": "medium",
"isHighRisk": false,
"currentVersionNumber": 2,
"currentVersion": {
"versionNumber": 2,
"versionStatus": "published",
"title": "v2 · salidas pedagógicas",
"purposeSummary": "Informar y coordinar actividades académicas…",
"consentModel": "bundled",
"noticeChecksum": "9b1e…",
"publishedAt": "2026-07-30T14:00:00.000Z"
},
"retentionPolicy": null,
"dpiaAssessmentCount": 0,
"reviewDueAt": "2027-07-30T14:00:00.000Z"
}
],
"meta": {
"totalMatchedCount": 9,
"limit": 25,
"returnedCount": 9,
"nextCursor": null,
"hasMore": false
}
}
El detalle (GET /processing-activities/:processingActivityId) agrega el historial versions[] (con consentRequestCount por versión), los consentRequestCounts de la actividad —el radio de impacto de la próxima publicación invalidante— y expande currentVersion con sus dataCategories[] y recipients[].
Publicar una versión nueva
Requiere processing_activities.write. Acuña y publica de inmediato la versión siguiente (sellada con su noticeChecksum). Todos los campos son opcionales: lo omitido se arrastra de la versión anterior.
Si la actividad es de alto riesgo y no tiene EIPD, la publicación se rechaza con 409 DPIA_REQUIRED.
Atributos opcionales frecuentes
- Nombre
title / purposeSummary / plainLanguageNotice- Tipo
- string
- Descripción
El contenido normativo que verá el titular.
- Nombre
consentModel- Tipo
- string
- Descripción
bundledogranular; congranular, defineconsentOptions[]({ code, label, description? }, hasta 20).
- Nombre
dataCategories / recipients- Tipo
- array
- Descripción
Categorías de datos y destinatarios de la versión (hasta 100 c/u); reemplazan los de la versión anterior si se envían.
- Nombre
invalidatesPreviousConsents- Tipo
- boolean
- Descripción
Si la publicación invalida los consentimientos previos y dispara la recaptura.
Solicitud
curl -X POST "https://app.edugoverna.com/api/processing-activities/a2f1…/versions" \
-H "x-api-key: {tu_api_key}" \
-H "Content-Type: application/json" \
-d '{
"title": "v3 · incluye fotografías",
"purposeSummary": "Comunicaciones académicas y registro fotográfico de actividades.",
"invalidatesPreviousConsents": true
}'
Respuesta · 201 (recortada)
{
"activity": {
"id": "a2f1…",
"currentVersionNumber": 3,
"currentVersion": {
"versionNumber": 3,
"versionStatus": "published",
"noticeChecksum": "c7a2…"
}
},
"invalidatedConsentRequestIds": ["b9d2…", "b9d3…"]
}
Las demás rutas del RAT
| Método y ruta | Permiso | Qué hace |
|---|---|---|
POST /processing-activities | processing_activities.write | Crea la actividad con su v1 en borrador (409 PROCESSING_ACTIVITY_CODE_CONFLICT si el folio choca). |
PATCH /processing-activities/:id | processing_activities.write | Edita los atributos de la actividad. |
POST /processing-activities/:id/review | processing_activities.write | Registra la revisión anual sin publicar versión. |
DELETE /processing-activities/:id | processing_activities.write | Elimina una actividad (sin consentimientos vivos). |
Evaluaciones de impacto (EIPD)
Con una API key las EIPD son de sólo lectura (dpia.read): toda la autoría —crear, editar escenarios, recomputar, aprobar— exige dpia.write, que es un permiso de sesión.
GET /dpia responde { assessments } (filtros processingActivityId, status, reviewOverdue=true); cada evaluación trae su folio (assessmentCode), estado (draft, in_review, approved, under_revision), niveles de riesgo inherente y residual, y methodologyVersion — la metodología vigente es eg-2026.08: una matriz declarada 4×4 (probabilidad × impacto, valores 1–4) que resuelve low/medium/high/critical, agregando siempre el peor escenario, nunca un promedio. GET /dpia/:assessmentId agrega los scenarios con sus valores inherentes y residuales.
Solicitud
curl -G "https://app.edugoverna.com/api/dpia/screening" \
-H "x-api-key: {tu_api_key}" \
-d processingActivityId=a2f1…
Respuesta (recortada)
{
"activity": { "id": "a2f1…", "name": "Videovigilancia patios", "code": "ACT-011" },
"screening": {
"level": "required",
"letters": ["c"],
"factors": ["declared_high_risk"],
"reasons": ["La actividad declara observación sistemática…"]
},
"letters": [
{
"letter": "c",
"legalText": "…",
"schoolMeaning": "Cámaras u observación sistemática de espacios…",
"reason": "…"
}
],
"existingAssessmentId": null,
"suggestedTemplates": [
{ "key": "cctv", "name": "Videovigilancia escolar", "whenToUse": "…" }
]
}
Rutas de EIPD
| Método y ruta | Permiso | Qué hace |
|---|---|---|
GET /dpia | dpia.read | Lista las evaluaciones. |
GET /dpia/:assessmentId | dpia.read | Detalle con escenarios de riesgo. |
GET /dpia/screening?processingActivityId=… | dpia.read | El test del Art. 15 ter: si la actividad exige EIPD y por qué letras. |
GET /dpia/templates | dpia.read | Plantillas disponibles (videovigilancia, plataformas, etc.). |
POST /dpia · PATCH /dpia/:id · escenarios · medidas · recompute · approval · revision · reviews · document · templates/:key/adopt | dpia.write | Sólo disponible con sesión de la consola. |
La disponibilidad de la EIPD depende del plan contratado: en organizaciones
sin el módulo licenciado estas rutas responden 403 MODULE_NOT_LICENSED.
Los escenarios de una EIPD comparten catálogo de medidas y matriz con el registro de riesgos.