API REST (Desarrolladores)
Endpoints DSAR

Endpoints DSAR

Endpoints para gestionar solicitudes de derechos ARCO (Data Subject Access Requests) en DPOLab.

Todos los endpoints bajo /api/v1/dsar/ requieren autenticacion JWT. Los endpoints bajo /api/v1/public/dsar/ son publicos (no requieren autenticacion).


Crear solicitud (publico)

Este endpoint es utilizado por el SDK DSAR. No requiere autenticacion pero si un widgetKey valido.

POST /api/v1/public/dsar/:widgetKey
curl -X POST https://api.dpolab.com/api/v1/public/dsar/wk_abc123 \
  -H "Content-Type: application/json" \
  -d '{
    "subjectName": "Juan Perez",
    "subjectEmail": "[email protected]",
    "subjectRut": "12345678-9",
    "subjectPhone": "+56912345678",
    "rightType": "ACCESS",
    "description": "Solicito acceso a todos mis datos personales almacenados."
  }'

Campos requeridos: subjectName, subjectEmail, rightType.

Campos opcionales: subjectRut, subjectPhone, description, documentType, documentNumber, organizationRelation, isRepresentative, representativeName, representativeRut, representativeRelation, representativeDocUrl, subtype, subtypeDetail, specificData, portabilityTarget, portabilityFormat, portabilityDirectTransfer, declarationTruthful, declarationDataProcessing, declarationPhoneContact.

⚠️

Si se incluye el campo subjectRut, se valida con el algoritmo modulo 11. Un RUT invalido retorna error INVALID_RUT.

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "uuid-abc123",
    "folioNumber": "ARCO-2026-00001",
    "responseDeadline": "2026-04-08T14:00:00.000Z"
  }
}
🚫

El campo responseDeadline se calcula automaticamente sumando 30 dias corridos a la fecha de creacion, con posibilidad de extension por otros 30 dias (Art. 11 Ley 21.719).


Seguimiento publico por folio

Permite al titular consultar el estado de su solicitud usando el numero de folio. No requiere autenticacion.

GET /api/v1/public/dsar/track/:folio
curl -X GET https://api.dpolab.com/api/v1/public/dsar/track/ARCO-2026-00001

Respuesta (200):

{
  "success": true,
  "data": {
    "folio": "ARCO-2026-00001",
    "responsibleEntity": "Empresa Demo SpA",
    "rightType": "Acceso a datos personales",
    "status": "IN_PROGRESS",
    "statusLabel": "En proceso",
    "statusDescription": "Su solicitud esta siendo procesada por nuestro equipo de proteccion de datos.",
    "receivedAt": "2026-03-07T14:00:00Z",
    "responseDeadline": "2026-04-06T14:00:00Z",
    "isExtended": false,
    "extensionReason": null,
    "responseType": null,
    "completedAt": null,
    "dpoName": "Maria Garcia",
    "dpoEmail": "[email protected]"
  }
}

El folio debe tener formato ARCO-YYYY-NNNNN. Formatos invalidos retornan error INVALID_FOLIO.


Listar solicitudes

GET /api/v1/dsar/requests

Query params:

ParamTipoDescripcion
pagenumberPagina (default: 1)
limitnumberRegistros por pagina (default: 20, max: 100)
statusstringRECEIVED, VERIFYING, IN_PROGRESS, EXTENDED, COMPLETED, REJECTED
rightTypestringACCESS, RECTIFICATION, DELETION, OPPOSITION, PORTABILITY, BLOCKING, AUTO_DECISION
curl -X GET "https://api.dpolab.com/api/v1/dsar/requests?status=RECEIVED&rightType=ACCESS" \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "items": [
      {
        "id": "uuid-abc123",
        "folioNumber": "ARCO-2026-00001",
        "rightType": "ACCESS",
        "subjectName": "Juan Perez",
        "subjectEmail": "[email protected]",
        "status": "RECEIVED",
        "deadlineAt": "2026-04-06T14:00:00Z",
        "createdAt": "2026-03-07T14:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 20,
      "total": 3,
      "totalPages": 1
    }
  }
}

Obtener solicitud

Retorna el detalle completo de una solicitud, incluyendo eventos y timeline.

GET /api/v1/dsar/requests/:id
curl -X GET https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123 \
  -H "Authorization: Bearer {token}"

Actualizar estado

PATCH /api/v1/dsar/requests/:id

Body:

{
  "status": "IN_PROGRESS",
  "notes": "Recopilando datos de los sistemas involucrados."
}
curl -X PATCH https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123 \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "IN_PROGRESS",
    "notes": "Recopilando datos de los sistemas involucrados."
  }'

Estados posibles

EstadoDescripcion
RECEIVEDSolicitud recibida
VERIFYINGVerificando identidad del titular
IN_PROGRESSEn proceso de atencion
EXTENDEDPlazo extendido (Art. 11)
COMPLETEDResuelta
REJECTEDRechazada
⚠️

No se puede pasar de COMPLETED o REJECTED a otro estado. Las transiciones de estado son registradas automaticamente en el timeline.


Asignar solicitud

Asigna un responsable a la solicitud. Si el estado actual es RECEIVED o VERIFYING, cambia automaticamente a IN_PROGRESS.

POST /api/v1/dsar/requests/:id/assign

Body:

{
  "assignedTo": "user-id-123"
}
curl -X POST https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123/assign \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "assignedTo": "user-id-123"
  }'

Extender plazo

Extiende el plazo de respuesta por otros 30 dias corridos (Art. 11 inc. 2 Ley 21.719). Solo se permite una extension por solicitud.

POST /api/v1/dsar/requests/:id/extend

Body:

{
  "reason": "Se requiere recopilar informacion de multiples sistemas externos para completar la solicitud."
}
curl -X POST https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123/extend \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "Se requiere recopilar informacion de multiples sistemas externos para completar la solicitud."
  }'

Respuesta (200):

{
  "success": true,
  "data": {
    "id": "uuid-abc123",
    "extendedDeadlineAt": "2026-05-06T14:00:00Z",
    "extensionReason": "Se requiere recopilar informacion...",
    "extensionNotifiedAt": "2026-03-20T10:00:00Z",
    "status": "EXTENDED"
  }
}
⚠️

Solo se permite una extension por solicitud. Si ya fue extendida, retorna error ALREADY_EXTENDED. Se envia email automatico al titular notificando la extension.


Responder solicitud

Registra la respuesta final a la solicitud (aprobacion o rechazo).

POST /api/v1/dsar/requests/:id/respond

Body:

{
  "responseType": "FULFILLED",
  "responseNotes": "Se adjunta el reporte con todos los datos personales del titular.",
  "responseFileKey": "file_report_001",
  "denialReason": null
}
curl -X POST https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123/respond \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "responseType": "FULFILLED",
    "responseNotes": "Se adjunta el reporte con todos los datos personales del titular.",
    "responseFileKey": "file_report_001"
  }'

Tipos de respuesta (responseType)

ValorDescripcionEstado final
FULFILLEDSolicitud atendida completamenteCOMPLETED
PARTIALLY_FULFILLEDSolicitud atendida parcialmenteCOMPLETED
REJECTED_IDENTITYRechazada por verificacion de identidadREJECTED
REJECTED_LEGALRechazada por causa legalREJECTED
EXTENDEDPlazo extendido-

Notificar a terceros

Registra que se notifico a terceros (encargados/cesionarios) sobre la rectificacion o supresion de datos, segun Art. 6 y 7 de la Ley 21.719.

POST /api/v1/dsar/requests/:id/notify-thirds

Body:

{
  "notes": "Se notifico a los proveedores X e Y sobre la supresion de datos."
}
curl -X POST https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123/notify-thirds \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "notes": "Se notifico a los proveedores X e Y sobre la supresion de datos."
  }'
⚠️

Solo aplica para solicitudes de tipo RECTIFICATION o DELETION. Retorna error INVALID_RIGHT_TYPE para otros tipos. Si ya fueron notificados, retorna error ALREADY_NOTIFIED.


Timeline de eventos

Retorna la lista de eventos asociados a una solicitud.

GET /api/v1/dsar/requests/:id/timeline
curl -X GET https://api.dpolab.com/api/v1/dsar/requests/uuid-abc123/timeline \
  -H "Authorization: Bearer {token}"

Estadisticas

Retorna estadisticas generales de las solicitudes DSAR del tenant.

GET /api/v1/dsar/stats
curl -X GET https://api.dpolab.com/api/v1/dsar/stats \
  -H "Authorization: Bearer {token}"

Widgets

Listar widgets

GET /api/v1/dsar/widgets
curl -X GET https://api.dpolab.com/api/v1/dsar/widgets \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": {
    "widgets": [
      {
        "id": "uuid-widget-1",
        "widgetKey": "wk_abc123",
        "name": "Formulario principal",
        "isActive": true,
        "config": {},
        "createdAt": "2026-03-01T10:00:00Z",
        "updatedAt": "2026-03-01T10:00:00Z"
      }
    ]
  }
}

Crear widget

POST /api/v1/dsar/widgets

Body:

{
  "name": "Formulario principal",
  "config": {}
}
curl -X POST https://api.dpolab.com/api/v1/dsar/widgets \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Formulario principal",
    "config": {}
  }'

Tipos de derecho (rightType)

ValorDescripcion
ACCESSDerecho de acceso (Art. 5)
RECTIFICATIONDerecho de rectificacion (Art. 6)
DELETIONDerecho de supresion (Art. 7)
OPPOSITIONDerecho de oposicion (Art. 8)
PORTABILITYDerecho de portabilidad (Art. 9)
BLOCKINGDerecho de bloqueo
AUTO_DECISIONOposicion a decisiones automatizadas

Para mas informacion sobre la integracion con el SDK, consulta la documentacion del SDK DSAR. Para configurar el centro de privacidad, consulta el modulo Centro de Privacidad.

Ver tambien