Riesgos

El motor de riesgo tiene tres piezas: el catálogo (medidas de mitigación sugeridas e infracciones de la ley, contenido estático), las medidas que tu organización adoptó (risk_measures) y el registro de riesgos (risk_register_entries, el registro del Art. 49 d), donde cada riesgo cruza probabilidad e impacto contra la matriz declarada y las medidas vinculadas reducen el nivel residual. Con una API key todo se lee con dpia.read; toda escritura exige dpia.write y es sólo disponible con sesión de la consola.

La misma matriz 4×4 y metodología (eg-2026.08) que usan las evaluaciones de impacto: probabilidad e impacto en escala 1–4 resuelven low/medium/high/critical, y el residual se calcula restando las reducciones de las medidas implemented/verified — nunca un promedio.


GET/api/risks/catalog

Requiere dpia.read. Contenido estático, sin parámetros: las medidas sugeridas con sus reducciones esperadas, y el catálogo de infracciones de la ley con su severidad (leve, grave, gravisima) referenciadas por artículo y letra (p. ej. 34ter:g).

Solicitud

GET
/api/risks/catalog
curl "https://app.edugoverna.com/api/risks/catalog" \
  -H "x-api-key: {tu_api_key}"

Respuesta (recortada)

{
  "measures": [
    {
      "code": "CIFRADO_REPOSO",
      "name": "Cifrado de los datos en reposo",
      "description": "Las bases y respaldos que contienen datos de estudiantes y apoderados quedan cifrados en el almacenamiento.",
      "family": "pseudonymization_encryption",
      "measureType": "technical",
      "suggestedProbabilityReduction": 0,
      "suggestedImpactReduction": 1
    }
  ],
  "infractions": [
    {
      "ref": "34ter:g",
      "severity": "grave",
      "letter": "g",
      "text": "…",
      "schoolRelevance": "…"
    }
  ]
}

GET/api/risks/measures

Medidas de la organización

Requiere dpia.read. Las medidas que el colegio declaró, adoptadas del catálogo o propias, con su ciclo de vida y verificación.

Parámetros opcionales

  • Nombre
    status
    Tipo
    string
    Descripción

    planned, implemented, verified o retired.

  • Nombre
    family
    Tipo
    string
    Descripción

    Familia del catálogo (p. ej. pseudonymization_encryption).

  • Nombre
    verificationOverdue
    Tipo
    string
    Descripción

    true filtra las medidas cuya verificación cumplió más de un año escolar (verificationOverdue: true en cada fila).

Solicitud

GET
/api/risks/measures
curl -G "https://app.edugoverna.com/api/risks/measures" \
  -H "x-api-key: {tu_api_key}" \
  -d status=implemented

Respuesta (recortada)

{
  "measures": [
    {
      "id": "m3a1…",
      "code": "CIFRADO_REPOSO",
      "name": "Cifrado de los datos en reposo",
      "family": "pseudonymization_encryption",
      "measureType": "technical",
      "status": "implemented",
      "implementedAt": "2026-03-10T12:00:00.000Z",
      "verifiedAt": null,
      "evidenceArtifactId": null,
      "origin": "catalog",
      "verificationOverdue": false
    }
  ]
}

GET/api/risks/register

Registro de riesgos

Requiere dpia.read. Cada entrada es un riesgo con su área de proceso, las infracciones que podría configurar (infractionRefsworstSeverity), sus niveles inherente y residual, y las medidas vinculadas con su reducción esperada. Las entradas pueden nacer manualmente o desde una EIPD (linkedDpiaAssessmentId / assessmentCode).

Parámetros opcionales

  • Nombre
    status
    Tipo
    string
    Descripción

    open, mitigating, accepted o closed.

  • Nombre
    processArea
    Tipo
    string
    Descripción

    Filtra por área de proceso.

  • Nombre
    highResidualOnly
    Tipo
    string
    Descripción

    true deja sólo los riesgos con residual alto o crítico.

Solicitud

GET
/api/risks/register
curl -G "https://app.edugoverna.com/api/risks/register" \
  -H "x-api-key: {tu_api_key}" \
  -d highResidualOnly=true

Respuesta (recortada)

{
  "entries": [
    {
      "id": "r9c4…",
      "code": "RSG-007",
      "title": "Acceso indebido a fichas de salud",
      "processArea": "convivencia",
      "infractionRefs": ["34ter:g", "34quater:b"],
      "worstSeverity": "gravisima",
      "probability": 2,
      "impact": 4,
      "inherentLevel": "high",
      "residualLevel": "medium",
      "status": "mitigating",
      "linkedDpiaAssessmentId": "d5e8…",
      "assessmentCode": "EIPD-003",
      "activityName": "Registro de salud escolar",
      "measures": [
        {
          "riskMeasureId": "m3a1…",
          "measureCode": "CIFRADO_REPOSO",
          "measureName": "Cifrado de los datos en reposo",
          "measureStatus": "implemented",
          "expectedProbabilityReduction": 0,
          "expectedImpactReduction": 1
        }
      ]
    }
  ]
}

Escrituras (sesión de la consola)

Todas exigen dpia.write, permiso que una API key no puede portar:

Método y rutaQué hace
POST /risks/measuresCrea una medida propia (201 { measure }).
POST /risks/measures/adoptAdopta medidas del catálogo por codes[] (201 { adopted, existing }).
POST /risks/measures/:measureId/statusAvanza el ciclo planned → implemented → verified → retired.
DELETE /risks/measures/:measureIdElimina una medida.
POST /risks/registerCrea una entrada; responde sus niveles (201 { id, inherentLevel, residualLevel }).
POST /risks/register/:entryId/statusCambia el estado de la entrada.
POST /risks/register/:entryId/measuresVincula una medida y recalcula (201 { residualLevel }; una entrada open pasa a mitigating).
DELETE /risks/register/:entryId/measures/:measureIdDesvincula y recalcula ({ residualLevel }).
DELETE /risks/register/:entryIdElimina la entrada.

¿Te sirvió esta página?