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:

  • versionNumber crece de a uno; la actividad apunta a la vigente con currentVersionNumber.
  • 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 solicitudes pending/granted de versiones previas pasan a invalidated y 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óximo reviewDueAt y reabre las EIPD aprobadas de la actividad.

GET/api/processing-activities

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, active o archived.

  • 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 como purposeSummary.

  • 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

GET
/api/processing-activities
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[].


POST/api/processing-activities/:id/versions

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

    bundled o granular; con granular, define consentOptions[] ({ 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

POST
/api/processing-activities/:id/versions
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 rutaPermisoQué hace
POST /processing-activitiesprocessing_activities.writeCrea la actividad con su v1 en borrador (409 PROCESSING_ACTIVITY_CODE_CONFLICT si el folio choca).
PATCH /processing-activities/:idprocessing_activities.writeEdita los atributos de la actividad.
POST /processing-activities/:id/reviewprocessing_activities.writeRegistra la revisión anual sin publicar versión.
DELETE /processing-activities/:idprocessing_activities.writeElimina una actividad (sin consentimientos vivos).

GET/api/dpia

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

GET
/api/dpia/screening
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 rutaPermisoQué hace
GET /dpiadpia.readLista las evaluaciones.
GET /dpia/:assessmentIddpia.readDetalle con escenarios de riesgo.
GET /dpia/screening?processingActivityId=…dpia.readEl test del Art. 15 ter: si la actividad exige EIPD y por qué letras.
GET /dpia/templatesdpia.readPlantillas disponibles (videovigilancia, plataformas, etc.).
POST /dpia · PATCH /dpia/:id · escenarios · medidas · recompute · approval · revision · reviews · document · templates/:key/adoptdpia.writeSólo disponible con sesión de la consola.

Los escenarios de una EIPD comparten catálogo de medidas y matriz con el registro de riesgos.

¿Te sirvió esta página?