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.
Catálogo
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
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": "…"
}
]
}
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,verifiedoretired.
- Nombre
family- Tipo
- string
- Descripción
Familia del catálogo (p. ej.
pseudonymization_encryption).
- Nombre
verificationOverdue- Tipo
- string
- Descripción
truefiltra las medidas cuya verificación cumplió más de un año escolar (verificationOverdue: trueen cada fila).
Solicitud
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
}
]
}
Registro de riesgos
Requiere dpia.read. Cada entrada es un riesgo con su área de proceso, las infracciones que podría configurar (infractionRefs → worstSeverity), 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,acceptedoclosed.
- Nombre
processArea- Tipo
- string
- Descripción
Filtra por área de proceso.
- Nombre
highResidualOnly- Tipo
- string
- Descripción
truedeja sólo los riesgos con residual alto o crítico.
Solicitud
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 ruta | Qué hace |
|---|---|
POST /risks/measures | Crea una medida propia (201 { measure }). |
POST /risks/measures/adopt | Adopta medidas del catálogo por codes[] (201 { adopted, existing }). |
POST /risks/measures/:measureId/status | Avanza el ciclo planned → implemented → verified → retired. |
DELETE /risks/measures/:measureId | Elimina una medida. |
POST /risks/register | Crea una entrada; responde sus niveles (201 { id, inherentLevel, residualLevel }). |
POST /risks/register/:entryId/status | Cambia el estado de la entrada. |
POST /risks/register/:entryId/measures | Vincula una medida y recalcula (201 { residualLevel }; una entrada open pasa a mitigating). |
DELETE /risks/register/:entryId/measures/:measureId | Desvincula y recalcula ({ residualLevel }). |
DELETE /risks/register/:entryId | Elimina la entrada. |