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ónCrear 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.