Derechos ARCO
Una solicitud de derechos (rights_request) es el expediente de un titular que ejerce acceso, rectificación, supresión, oposición, portabilidad o bloqueo. Por API puedes crear casos, listarlos por vencimiento, gestionar su plazo y configurar el portal ARCO público del colegio; la ejecución sensible (exportaciones, anonimización) queda reservada a la consola.
Para el recorrido completo de un caso —desde el portal público hasta el cierre notificado— revisa la guía del flujo ARCO y la página de producto Derechos ARCO.
El modelo de la solicitud
- Nombre
requestType- Tipo
- string
- Descripción
Uno de
access,rectification,suppression,opposition,portability,blocking.
- Nombre
status- Tipo
- string
- Descripción
Flujo:
submitted→in_progress(oprocessingcuando ejecuta un conector externo) →ready_to_close→completedodenied.failedmarca un error de conector pendiente de triage.
- Nombre
dueAt- Tipo
- timestamp
- Descripción
Plazo legal original: se fija al crear el caso como fin de día (hora de Santiago) tras los días hábiles del SLA configurado (por defecto 15, máximo 20).
- Nombre
extendedDueAt- Tipo
- timestamp | null
- Descripción
Plazo extendido. El plazo efectivo es siempre
extendedDueAt ?? dueAt.
- Nombre
portalTrackingCode- Tipo
- string
- Descripción
Código de seguimiento que el solicitante usa en el portal público. Se acuña siempre, también para casos creados por API.
- Nombre
subjects- Tipo
- array
- Descripción
Titulares alcanzados por el caso, cada uno con su
subjectSummary.
- Nombre
actions / exports / documents / messages / closures- Tipo
- arrays
- Descripción
El expediente completo: acciones de cumplimiento, exportaciones, documentos, mensajes con el solicitante y cierres.
Listar solicitudes
Requiere rights_requests.read. Devuelve los expedientes completos (misma forma que el detalle), paginados por limit/offset o cursor.
Parámetros opcionales
- Nombre
scope- Tipo
- string
- Descripción
abiertas,vencen-pronto(vencen en 7 días),vencidas(abiertas y fuera de plazo),fuera-de-plazo(cerradas después del plazo) ocerradas.
- Nombre
requestType- Tipo
- string
- Descripción
Filtra por tipo de derecho.
- Nombre
status- Tipo
- string
- Descripción
Filtra por estado exacto.
- Nombre
q- Tipo
- string
- Descripción
Busca por código de seguimiento, resumen o id.
- Nombre
sort- Tipo
- string
- Descripción
plazo,enviada,estadootipo;dir=asc|desc.
- Nombre
limit- Tipo
- integer
- Descripción
Por defecto 100, máximo 250.
cursorreemplaza aoffsetsi se envían ambos.
Solicitud
curl -G "https://app.edugoverna.com/api/rights-requests" \
-H "x-api-key: {tu_api_key}" \
-d scope=vencen-pronto \
-d sort=plazo -d dir=asc
Respuesta
{
"rightsRequests": [
{
"id": "7c2e…",
"requestType": "access",
"requestChannel": "portal",
"status": "in_progress",
"summary": "Acceso a antecedentes académicos",
"requesterEmail": "camila.requester@example.cl",
"submittedAt": "2026-08-11T14:02:00.000Z",
"dueAt": "2026-09-01T23:59:59.999Z",
"extendedDueAt": null,
"closedAt": null,
"portalTrackingCode": "ARCO-…",
"subjects": [
{
"subjectId": "3f6f…",
"relationType": "target",
"subjectSummary": {
"id": "3f6f…",
"subjectType": "student",
"referenceCode": "EST-2026-0412",
"displayName": "Martina Rojas"
}
}
],
"actions": [],
"exports": [],
"documents": [],
"messages": [],
"closures": []
// …
}
],
"meta": {
"total": 9,
"totalMatchedCount": 9,
"limit": 100,
"offset": 0,
"nextCursor": null
}
}
Contadores por vencimiento
Requiere rights_requests.read. Devuelve los mismos cinco alcances del listado más el total, listos para un tablero de plazos. Acepta un único filtro opcional, requestType. Nota: dos claves llevan guion.
Solicitud
curl "https://app.edugoverna.com/api/rights-requests/counts" \
-H "x-api-key: {tu_api_key}"
Respuesta
{
"total": 9,
"abiertas": 5,
"vencen-pronto": 1,
"vencidas": 2,
"fuera-de-plazo": 2,
"cerradas": 4
}
Crear una solicitud
Requiere rights_requests.write. El servidor calcula dueAt según el SLA configurado y acuña el portalTrackingCode. Responde 201 con el expediente completo.
Atributos requeridos
- Nombre
requestType- Tipo
- string
- Descripción
access,rectification,suppression,opposition,portabilityoblocking.
- Nombre
subjectIds- Tipo
- string[]
- Descripción
Titulares alcanzados (1 a 200). Un id que no exista en el padrón responde
404 RIGHTS_REQUEST_SUBJECT_NOT_FOUND.
Atributos opcionales
- Nombre
requesterSubjectId- Tipo
- string
- Descripción
Titular que solicita (p. ej. el apoderado).
- Nombre
requesterEmail- Tipo
- string
- Descripción
Correo del solicitante para las notificaciones.
- Nombre
requestChannel- Tipo
- string
- Descripción
Canal de entrada; por defecto
portal.
- Nombre
summary- Tipo
- string
- Descripción
Resumen del caso (hasta 2000 caracteres).
- Nombre
legalBasis- Tipo
- string
- Descripción
Base legal invocada.
Solicitud
curl -X POST "https://app.edugoverna.com/api/rights-requests" \
-H "x-api-key: {tu_api_key}" \
-H "Content-Type: application/json" \
-d '{
"requestType": "access",
"subjectIds": ["3f6f0a2e-…"],
"requesterEmail": "camila.requester@example.cl",
"summary": "Acceso a antecedentes académicos"
}'
Respuesta · 201
{
"id": "7c2e…",
"requestType": "access",
"status": "submitted",
"requestChannel": "portal",
"dueAt": "2026-09-15T23:59:59.999Z",
"extendedDueAt": null,
"portalTrackingCode": "ARCO-…",
"subjects": [{ "subjectId": "3f6f0a2e-…", "relationType": "target" }]
// …
}
Extender el plazo
Requiere rights_requests.write. La ley admite una sola extensión, de hasta 15 días hábiles sobre el dueAt vigente; un segundo intento responde 409 RIGHTS_REQUEST_ALREADY_EXTENDED. La razón queda como mensaje deadline_extension en el expediente.
Atributos requeridos
- Nombre
extendedDueAt- Tipo
- timestamp
- Descripción
Nuevo plazo (ISO 8601). Debe caer en un día calendario de Santiago posterior al plazo vigente.
- Nombre
reason- Tipo
- string
- Descripción
Justificación (2 a 2000 caracteres).
Solicitud
curl -X POST "https://app.edugoverna.com/api/rights-requests/7c2e…/extend" \
-H "x-api-key: {tu_api_key}" \
-H "Content-Type: application/json" \
-d '{
"extendedDueAt": "2026-09-30T23:59:59.999Z",
"reason": "Caso complejo con revisión de antecedentes externos."
}'
Los demás endpoints del caso
| Método y ruta | Permiso | Qué hace |
|---|---|---|
GET /rights-requests/:id | rights_requests.read | Expediente completo (mismo cuerpo que el listado). |
POST /rights-requests/:id/subjects | rights_requests.write | Agrega un titular al caso. |
DELETE /rights-requests/:id/subjects/:subjectId | rights_requests.write | Retira un titular del caso. |
PATCH /rights-requests/:id/requester-email | rights_requests.write | Corrige el correo del solicitante. |
POST /rights-requests/:id/messages | rights_requests.write | Escribe un mensaje al solicitante. |
POST /rights-requests/:id/rectify | rights_requests.write | Ejecuta la rectificación de identidad del titular. |
POST /rights-requests/:id/restrictions/complete | rights_requests.write | Completa un bloqueo/restricción de tratamiento. |
POST /rights-requests/:id/restrictions/lift-opposition | rights_requests.write | Levanta una oposición. |
GET /rights-requests/:id/action-fulfillment | rights_requests.read | Estado de los conectores de acción. |
POST /rights-requests/:id/actions/trigger | rights_requests.write | Dispara un conector de acción. |
POST /rights-requests/:id/deny | rights_requests.write | Deniega el caso con razón. |
POST /rights-requests/:id/final-response/preview | rights_requests.write | Previsualiza la respuesta final. |
POST /rights-requests/:id/close | rights_requests.write | Cierra el caso. |
POST /rights-requests/:id/notify | rights_requests.write | Notifica el cierre al solicitante. |
Sólo disponible con sesión de la consola: la generación de exportaciones
(POST /rights-requests/:id/exports), la anonimización (POST /rights-requests/:id/anonymize), la subida de documentos y todas las
descargas de artefactos (exportaciones, documentos, certificados de cierre).
Una API key puede leer el expediente y ver que la exportación existe, pero los
bytes del paquete de datos personales sólo se entregan a una persona con
sesión.
Portal ARCO
La configuración del portal público de derechos del colegio. Lectura con rights_requests.read; escritura con PUT y rights_requests.write (mismo cuerpo de respuesta). El portal define el SLA por defecto y por tipo (defaultSlaDays, requestTypeConfig.<tipo>.slaDays, 1 a 20 días hábiles), los documentos exigidos al solicitante, los formatos de exportación y los conectores de acción — cuyo secret es de sólo escritura: la lectura devuelve únicamente hasSecret.
Solicitud
curl "https://app.edugoverna.com/api/arco/portal/current" \
-H "x-api-key: {tu_api_key}"
Respuesta (recortada)
{
"organization": { "id": "org_…", "name": "Colegio Andes", "slug": "colegio-andes" },
"arcoPortal": {
"ownerType": "school",
"enabled": true,
"arcopEnabled": true,
"slug": "colegio-andes",
"ownerDisplayName": "Colegio Andes",
"dpoName": "Patricia Núñez",
"dpoEmail": "dpo@colegioandes.cl",
"defaultSlaDays": 15,
"supportedExportFormats": ["json", "pdf"],
"requestTypeConfig": {
"access": {
"enabled": true,
"slaDays": 15,
"requiredDocuments": [
{ "kind": "identity", "label": "Documento de identidad", "required": true }
]
}
// … los seis tipos siempre presentes
},
"actionConnectors": {
"export_access_package": {
"mode": "internal",
"endpointUrl": null,
"hasSecret": false
}
}
}
}
Orígenes de redirección
La lista de orígenes autorizados para redirigir a un titular de vuelta a un sitio del colegio después de completar un flujo público (consentimiento, portal). La lectura acepta consents.read o schools.read; crear y borrar exigen schools.write.
POST es idempotente: reenviar un origen ya registrado devuelve la fila existente. El origen se normaliza (esquema + host, sin ruta): registrar https://Colegio.example/gracias guarda https://colegio.example.
Solicitud
curl -X POST "https://app.edugoverna.com/api/organization/redirect-origins" \
-H "x-api-key: {tu_api_key}" \
-H "Content-Type: application/json" \
-d '{ "origin": "https://www.colegioandes.cl", "allowSubpaths": true }'
Respuesta · 201
{
"id": "9a1b…",
"organizationId": "org_…",
"origin": "https://www.colegioandes.cl",
"allowSubpaths": true,
"createdByUserId": null,
"createdAt": "2026-08-25T12:00:00.000Z"
}
Estos orígenes también gobiernan los redirects de campañas de consentimiento; el detalle de esa interacción está en Consentimientos.