SDK
Centro de Privacidad

Centro de Privacidad

El Centro de Privacidad es un portal público donde los titulares de datos pueden consultar sus datos, gestionar sus consentimientos y ejercer sus derechos ARSOP. El acceso se realiza mediante verificación de identidad por RUT y correo electrónico, confirmada con un código de un solo uso que se envía a ese correo.

Cómo funciona

1. El titular visita el Centro de Privacidad de la organización
2. Ingresa su RUT y su dirección de correo electrónico
3. DPOLab envía un código de un solo uso (6 dígitos) a ese correo
4. El titular ingresa el código para abrir su sesión
5. Consulta sus datos, gestiona consentimientos y/o ejerce derechos ARSOP
6. Los cambios se reflejan en el panel de la organización

La identidad se verifica con RUT + correo electrónico y un código de un solo uso enviado a ese correo (no se usa contraseña). Es consistente con el módulo descrito en Configuración → Portal de Privacidad.

URL del portal

El Centro de Privacidad está disponible en:

https://app.dpolab.com/portal/privacy-portal/<slug-del-tenant>

Puedes encontrar la URL exacta en Configuración → Portal de Privacidad dentro del panel de administración.

Abrir desde el SDK

El SDK incluye un método para abrir el Centro de Privacidad desde cualquier página de tu sitio:

// Abre el portal en una nueva pestaña
DPOLab.openPrivacyPortal();

Ejemplo: enlace en el footer

<footer>
  <a href="#" onclick="DPOLab.openPrivacyPortal(); return false;">
    Gestionar mi privacidad
  </a>
</footer>
⚠️

openPrivacyPortal() requiere que el SDK haya sido inicializado con DPOLab.init() previamente.

Verificación de identidad

El acceso usa RUT + correo electrónico con confirmación por código de un solo uso:

  • El titular ingresa su RUT (con o sin puntos y guión) y su correo electrónico.
  • DPOLab valida el formato del RUT y envía un código de 6 dígitos al correo indicado.
  • El titular ingresa el código para abrir su sesión; el código tiene una vigencia limitada.
  • La sesión expira automáticamente después del tiempo configurado.

API REST (endpoints públicos)

Todos los endpoints están bajo /api/v1/public/privacy-portal/:tenantSlug.

Sin autenticación

MétodoEndpointDescripción
GET/configConfiguración del portal (organización, propósitos)
POST/otp/initEnvía un código de un solo uso al correo (body: rut, email)
POST/otp/verifyVerifica el código y retorna el sessionToken (body: rut, code)

Con session token

Requieren el header Authorization: Bearer {sessionToken}:

MétodoEndpointDescripción
GET/consentEstado actual de los consentimientos del titular
POST/consentActualiza preferencias de consentimiento
POST/dsarCrea una solicitud ARSOP
GET/dsarLista las solicitudes del titular
GET/dsar/:idDetalle de una solicitud

Ejemplo: solicitar el código

curl -X POST https://api.dpolab.com/api/v1/public/privacy-portal/{tenantSlug}/otp/init \
  -H "Content-Type: application/json" \
  -d '{
    "rut": "12345678-9",
    "email": "[email protected]"
  }'

Ejemplo: verificar el código

curl -X POST https://api.dpolab.com/api/v1/public/privacy-portal/{tenantSlug}/otp/verify \
  -H "Content-Type: application/json" \
  -d '{
    "rut": "12345678-9",
    "code": "123456"
  }'

Respuesta exitosa:

{
  "success": true,
  "data": {
    "sessionToken": "eyJ...",
    "expiresAt": "2026-08-15T14:00:00Z"
  }
}

Ejemplo: crear solicitud ARSOP

curl -X POST https://api.dpolab.com/api/v1/public/privacy-portal/{tenantSlug}/dsar \
  -H "Authorization: Bearer {sessionToken}" \
  -H "Content-Type: application/json" \
  -d '{
    "subjectName": "Carlos Muñoz",
    "rightType": "ACCESS",
    "description": "Quiero saber qué datos tienen de mí"
  }'

Valores de rightType

ValorDescripción
ACCESSAcceso a datos personales
RECTIFICATIONRectificación de datos inexactos
DELETIONSupresión de datos
OPPOSITIONOposición al tratamiento
PORTABILITYPortabilidad en formato estructurado
BLOCKINGBloqueo temporal del tratamiento
AUTO_DECISIONRevisión de decisiones automatizadas

Errores comunes

CódigoSignificadoSolución
NOT_FOUNDSlug de tenant inválido o portal no configuradoVerifica que el slug sea correcto y que el portal esté activo
VALIDATION_ERRORRUT con formato inválido, o código incorrecto/expiradoRevisa el RUT y solicita un nuevo código si expiró
SESSION_EXPIREDSesión expiradaEl titular debe volver a verificar su identidad
UNAUTHORIZEDSession token ausente o inválidoIncluir el header Authorization: Bearer {sessionToken}

Ver también