Consensa Developers

Privacy Center

Permite que un cliente autenticado consulte y administre sus consentimientos.

El Privacy Center es una superficie de gestión de consentimientos autenticada y white-label. No autentica usuarios ni implementa solicitudes de derechos: el tenant autentica al cliente y su backend crea una sesión efímera ligada a ese cliente.

Cliente → login del tenant
Backend tenant → POST /v1/privacy-center/sessions
Frontend tenant → <consensa-privacy-center>
Runtime Consensa → lectura y revocación ligadas a la sesión

Crear una sesión desde el backend

La API key necesita consent:runtime y consent:identity-assert. customerId debe pertenecer al tenant autenticado; una referencia de otro tenant falla sin revelar su existencia. No envíes la API key al navegador.

curl --request POST "$CONSENSA_API_URL/v1/privacy-center/sessions" \
  --header "Authorization: Bearer $CONSENSA_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: privacy-customer-4821-01" \
  --data '{
    "configKey": "customer-privacy",
    "customerId": "customer-4821",
    "origin": "https://bank.example",
    "authentication": {
      "source": "client",
      "method": "bank_session",
      "authenticatedAt": 1787702400000,
      "reference": "session-reference-8f2a"
    }
  }'

La respuesta contiene sessionId, launchTicket, launchExpiresAt, expiresAt y el estado de autenticación. launchTicket no permite leer ni revocar nada: es un ticket de un solo uso que vence a los 60 segundos. La credencial que sí puede ver evidencia, descargar comprobantes y revocar se crea dentro del iframe Consensa y nunca pasa por tu página.

Montar el Web Component

El frontend no selecciona customerId; la identidad ya está congelada en la sesión. Entrega el ticket con launch(), nunca en un atributo o una URL.

<script type="module" src="https://embed.consensa.example/host.js"></script>
<consensa-privacy-center id="privacy"
  src="https://embed.consensa.example/runtime.html"></consensa-privacy-center>
<script type="module">
  const privacy = document.querySelector('#privacy');
  privacy.setAttribute('session', sessionId);
  privacy.launch(launchTicket);
</script>

El runtime canjea el ticket una única vez, sólo si el origen de tu página que certifica el navegador coincide con el origin de la sesión, y sólo puede ser enmarcado por ese origen (frame-ancestors).

El runtime lista consentimientos generales y REDEC, muestra estado, vigencia, scopes y una representación comprensible del comprobante. Una revocación pide confirmación y sólo actualiza la interfaz cuando el caso de uso canónico responde con éxito.

El runtime resuelve el TenantBranding vigente en cada bootstrap, incluso para una sesión ya creada; la marca no forma parte de la proyección inmutable ni de sus hashes. El canal usa origin y source exactos, protocolo versionado y eventos sanitizados: consensa:privacy-center-ready, consensa:consent-revoked y consensa:privacy-center-error. Ningún evento contiene tokens, API keys, RUT, Evidence raw o identificadores internos.

On this page