Gobernanza y evidencia
Esta página reúne las superficies que sostienen el cumplimiento del día a día: los encargados de tratamiento y sus contratos del Art. 15 bis, las capacitaciones del personal con su evidencia, los documentos de autoridad de los apoderados, el catálogo de gobernanza (categorías de datos, políticas de retención, destinos, delegados) y los reportes descargables.
Encargados (Art. 15 bis)
Un encargado es un destino de transferencia (transfer_destination) con acceso a datos; su contrato de encargo es un dpa_contract versionado. Lectura con processing_activities.read — los encargados son, ante todo, destinatarios del RAT.
Vocabularios
- Nombre
contract.status- Tipo
- string
- Descripción
missing(calculado, no escribible),draft,in_negotiation,active,expired,terminated.
- Nombre
contract.clauses- Tipo
- string[]
- Descripción
Las 10 cláusulas exigibles:
objeto,duracion,finalidad,tipos_de_datos,categorias_de_titulares,derechos_y_obligaciones,prohibicion_de_subdelegar,deber_de_secreto,medidas_de_seguridad,supresion_o_devolucion.missingClauseslista las que faltan.
- Nombre
verification- Tipo
- object
- Descripción
{ state, lastPerformedAt, lastOutcome, nextDueAt };state∈never,overdue,due_soon(30 días),current. Métodos:cuestionario,documental,certificacion,prueba_tecnica,visita; resultados:conforme,con_observaciones,no_conforme.
Parámetros opcionales
- Nombre
uncoveredOnly- Tipo
- string
- Descripción
truedeja sólo encargados sin contrato vigente.
- Nombre
verificationDueOnly- Tipo
- string
- Descripción
truedeja sólo verificaciones vencidas o por vencer.
curl -G "https://app.edugoverna.com/api/processors" \
-H "x-api-key: {tu_api_key}" \
-d uncoveredOnly=true
{
"processors": [
{
"id": "td5a…",
"name": "Plataforma LMS",
"destinationType": "processor",
"countryCode": "CL",
"residencyClass": "cross_border_managed",
"criticality": "medium",
"isSubprocessor": false,
"dataAccess": { "linked": true, "sensitive": false },
"covered": false,
"expiringSoon": false,
"contract": {
"versionNumber": 1,
"status": "in_negotiation",
"clauses": ["objeto", "finalidad", "deber_de_secreto"],
"missingClauses": ["duracion", "tipos_de_datos", "…"],
"effectiveFrom": null,
"executedAt": null
},
"verification": {
"state": "never",
"lastPerformedAt": null,
"lastOutcome": null,
"nextDueAt": null
}
}
]
}
Rutas del encargado
| Método y ruta | Permiso | Qué hace |
|---|---|---|
GET /processors/clauses | processing_activities.read | El catálogo de cláusulas y métodos de verificación, con sus textos. |
GET /processors/:destinationId/contracts | processing_activities.read | Historial de versiones del contrato. |
POST /processors/:destinationId/contract | processing_activities.write | Registra una versión nueva; JSON o multipart (payload + file con el contrato firmado, hasta 15 MB). Sólo sesión. |
GET /processors/:destinationId/contract/document | processing_activities.read | Descarga el contrato archivado. |
GET /processors/:destinationId/contract/draft | processing_activities.read | Genera el borrador PDF con las cláusulas del 15 bis. |
GET /processors/:destinationId/verifications | processing_activities.read | Verificaciones realizadas al encargado. |
POST /processors/:destinationId/verifications | processing_activities.write | Registra una verificación (JSON o multipart con evidencia). Sólo sesión. |
GET …/verifications/:verificationId/evidence | processing_activities.read | Descarga la evidencia de una verificación. |
Capacitaciones
El registro de capacitaciones del personal en protección de datos — parte de la evidencia de responsabilidad proactiva. Lectura con dpia.read; escritura con dpia.write (sólo sesión).
POST /training-sessions requiere title y heldAt; opcionales topic, trainerName, audienceDescription, attendeeCount, nextDueAt, notes. La evidencia (lista de asistencia, certificado) se adjunta con POST /training-sessions/:id/evidence — multipart/form-data, campo file, hasta 15 MB — y se recupera con GET /training-sessions/:id/evidence.
curl "https://app.edugoverna.com/api/training-sessions" \
-H "x-api-key: {tu_api_key}"
{
"trainingSessions": [
{
"id": "ts21…",
"title": "Capacitación anual 2026",
"topic": "Qué se puede y qué no con datos de estudiantes",
"heldAt": "2026-03-15T12:00:00.000Z",
"trainerName": "Estudio Jurídico Pérez",
"attendeeCount": 42,
"evidenceArtifactId": "ar54…",
"nextDueAt": "2027-03-15T12:00:00.000Z",
"createdBy": "dpo@colegioandes.cl"
}
]
}
Documentos de autoridad
Los documentos que acreditan la autoridad de un apoderado sobre un estudiante (resoluciones judiciales, poderes). Lectura con guardians.read; registro y revisión con guardians.write.
POST /records/authority-documents recibe guardianshipId, documentType y exactamente uno de artifactId (artefacto ya subido) o artifact (referencia de almacenamiento). El documento nace pending; POST …/:id/verify y POST …/:id/reject resuelven la revisión — rechazar un documento de un vínculo self_attested revoca la autoridad provisional del apoderado.
Parámetros opcionales del listado
- Nombre
verificationStatus- Tipo
- string
- Descripción
pending,verifiedorejected.
- Nombre
limit / cursor / offset- Tipo
- varios
- Descripción
Por defecto 50, máximo 100;
cursortiene prioridad sobreoffset.
curl -G "https://app.edugoverna.com/api/records/authority-documents" \
-H "x-api-key: {tu_api_key}" \
-d verificationStatus=pending
{
"documents": [
{
"id": "ad83…",
"guardianshipId": "gd12…",
"documentType": "resolucion_judicial",
"issuingAuthority": "Juzgado de Familia de Santiago",
"artifactId": "ar62…",
"verificationStatus": "pending",
"issuedAt": "2026-06-01T12:00:00.000Z",
"guardianshipStatus": "active",
"relationshipType": "madre",
"studentSummary": { "referenceCode": "EST-2026-0412", "displayName": "Martina Rojas" },
"guardianSummary": { "referenceCode": "APO-2026-0311", "displayName": "Carolina Fuentes" }
}
],
"meta": {
"totalMatchedCount": 3,
"nextCursor": null,
"filteredRestrictedCount": 0
}
}
El mismo archivo de rutas ofrece POST /records/verifications y POST /records/verifications/:id/complete (verificaciones de identidad de titulares, subjects.write) y POST /records/enrollments (matrículas, students.write).
Catálogo de gobernanza
GET /governance/catalog (con processing_activities.read) devuelve, en cuatro arreglos, los bloques de configuración que el RAT referencia:
dataCategories— categorías de datos con su sensibilidad (sensitivityLevel,isSensitive,requiresExpressConsent) y retención por defecto.retentionPolicies— políticas de retención (retentionDays,actionAfterRetention,triggerEvent).transferDestinations— destinos de transferencia (los mismos que la página de encargados enriquece).policyDocuments— documentos de política con su versión vigente y si hay aprobación pendiente.
| Método y ruta | Permiso | Qué hace |
|---|---|---|
GET /governance/delegates | schools.read | Delegados de protección de datos designados, con su usuario. |
POST /governance/delegates | schools.write | Designa un delegado. |
POST /governance/delegates/:id/acta | schools.write | Sube el acta de designación (multipart, campo file). |
GET /governance/delegates/:id/acta | schools.read | Descarga el acta. |
GET /governance/controllers/assignments | schools.read | Entidades responsables (sostenedor/fundación) asignadas a la organización. |
POST /governance/controllers/assignments | schools.write | Crea o asigna la entidad responsable. |
GET /governance/dpia-assessments | processing_activities.read | Vista de gobernanza sobre las EIPD (filtro processingActivityId). |
POST /governance/dpia-assessments | processing_activities.write | Registra la EIPD mínima de una actividad (ver abajo). |
PATCH /governance/dpia-assessments/:id | processing_activities.write | Completa o corrige esa EIPD mientras siga editable. |
GET /governance/system-register-entries | processing_activities.read | Registro de sistemas. |
La EIPD mínima del núcleo
Una actividad cuyo screening del Art. 15 ter da required no se publica sin evaluación de impacto. Estas dos rutas existen para que una organización sin el módulo EIPD pueda cumplir esa exigencia: registran los contenidos mínimos del artículo, sin escenarios, matriz ni aprobación (eso vive en /api/dpia, con licencia). Aceptan sesión o API key.
- Nombre
processingActivityId- Tipo
- string (uuid)
- Descripción
Requerido en el
POST. La actividad que la evaluación cubre; una actividad de otra organización responde404 PROCESSING_ACTIVITY_NOT_FOUND.
- Nombre
title- Tipo
- string
- Descripción
Requerido en el
POST(2–160 caracteres); opcional en elPATCH.
- Nombre
summary- Tipo
- string | null
- Descripción
Descripción de las operaciones de tratamiento y su finalidad (hasta 4.000).
- Nombre
necessityAssessment / proportionalityAssessment- Tipo
- string | null
- Descripción
Evaluación de la necesidad y de la proporcionalidad (hasta 6.000 cada una).
- Nombre
mitigationPlan- Tipo
- string | null
- Descripción
Medidas previstas para tratar los riesgos (hasta 6.000).
El POST responde 201 y el PATCH 200, ambos con la evaluación tal como quedó (sin envoltorio): id, assessmentCode (folio EIPD-AAAA-NNNN), status (nace en draft), los cuatro textos y metadata. riskLevel ya no se acepta: el núcleo no tiene escenarios de los que derivarlo. El PATCH sobre una evaluación approved, superseded o archived responde 409 DPIA_LOCKED.
Qué cuenta para publicar. La guarda de POST /processing-activities/:id/versions sólo cuenta una evaluación viva (draft, in_review, approved o under_revision) con summary, necessityAssessment y proportionalityAssessment escritos. Sin ninguna viva responde 409 DPIA_REQUIRED; con una viva a la que le falta contenido, 409 DPIA_INCOMPLETE:
{
"error": {
"code": "DPIA_INCOMPLETE",
"message": "A la evaluación de impacto le faltan contenidos que exige el Art. 15 ter: …",
"details": {
"assessmentId": "5c0e…",
"assessmentCode": "EIPD-2026-0007",
"missing": ["necessityAssessment", "proportionalityAssessment"]
}
}
}
missing usa los nombres de campo, así que se completa con un PATCH sobre assessmentId y se vuelve a publicar.
Reportes de cumplimiento
Reportes descargables para dirección o el regulador. Sólo disponible con sesión de la consola: generar exige reports.generate (permiso de sesión) más el permiso de lectura del dominio del reporte; listar y descargar exigen audit.read.
Atributos
- Nombre
reportType- Tipo
- string
- Descripción
arco_compliance(exigerights_requests.read),consent_coverage(consents.read) oincident_summary(audit.read).
- Nombre
format- Tipo
- string
- Descripción
pdfocsv.
- Nombre
periodFrom / periodTo- Tipo
- string
- Descripción
Opcionales:
YYYY-MM-DD(día calendario chileno, fin inclusivo) o ISO 8601 completo.
curl -X POST "https://app.edugoverna.com/api/reports/generate" \
-H "Cookie: {sesion_de_consola}" \
-H "Content-Type: application/json" \
-d '{ "reportType": "arco_compliance", "format": "csv" }'
{
"report": {
"id": "rp44…",
"reportType": "arco_compliance",
"format": "csv",
"title": "Reporte de cumplimiento",
"periodFrom": null,
"periodTo": null,
"generatedAt": "2026-08-25T15:00:00.000Z",
"sizeBytes": 18240,
"contentType": "text/csv"
}
}
GET /reports lista los generados (paginado con meta) y GET /reports/:artifactId/download entrega el archivo.
Paneles de resumen
Dos lecturas agregadas, ambas sólo disponibles con sesión de la consola:
GET /dashboard/overview— el panel del colegio:summarycon conteos por dominio (subjects,activities,dpia,processors,governance,cases,consents), actividad reciente, plazos próximos y acciones prioritarias. Cada bloque traeavailabley devuelvenull(no0) en los conteos que la persona no puede ver.GET /network/overview— para organizaciones de tipo red (sostenedores): sólo conteos por colegio miembro (totalsy el mismosummarypor colegio), nunca datos de titulares de los colegios.
Para la auditoría fina de accesos y eventos, GET /audit/events y GET /audit/sensitive-access-events (con audit.read, sesión) complementan estos paneles.