Middleware de consentimiento · OneTrust — Mapfre · modelo integrado v1.5

Registro de consentimiento — proceso propuesto

① Lee el catálogo el satélite consulta la versión vigente ② Registro — POST /consents una sola transacción local, respuesta inmediata ③ Despacho al Gateway con reintentos + backoff; si agota → dead-letter ④ Confirmación el receipt cierra la evidencia legal Satélite sistema Mapfre API del MW Worker del MW Gateway corporativo OneTrust BD compartida tablas por paso Pinta su página con la punto-versión vigente y sus propósitos consentimiento del titular 1 transacción local autentica (API key) · idempotencia cifra el payload (app-level) escribe cabecera + detalle + cola POST /consents X-Api-Key · Idempotency-Key 202 Accepted consentId (UUID) Toma de la cola (poll) y despacha proxy + autenticación POST .../consentreceipts Create Consent Receipt Emite el receipt (JWT) receipt (JWT) vía Gateway Guarda el receipt estado CONFIRMADO · ACTIVO G2999761 G2999762 G2999728 G2999731 G2999733 lectura del catálogo idempotencia_respuestas A9009072 A9009083 A9009082 escribe cabecera + detalle + cola + idempotencia A9009082 notif_admin poll de la cola A9009072 A9009083 auditoria_log receipt + auditoría
Flujo de alto nivel del registro de consentimiento (happy path). El detalle de cada paso, las tablas y los endpoints en las páginas siguientes. 1 / 10
Contexto

Qué construimos y qué cubre esta presentación

El middleware (MW) es el intermediario entre los sistemas satélite de Mapfre y OneTrust para la gestión del consentimiento. Su modelo de datos se integra en la base de datos compartida (Mapfre Chile), organizado en tres familias.

  • G
    Serie G · catálogo. Parámetros y definiciones que lee el satélite: puntos de recolección, propósitos y sus versiones.
  • A
    Serie A · transaccional. La evidencia que escribe el MW: cabecera, detalle y cola de despacho de cada consentimiento.
  • M
    Operativas del MW. Idempotencia, auditoría, dominios y notificaciones, en la misma base.

Alcance de esta presentación

El registro de consentimiento de extremo a extremo (happy path): el satélite consulta el catálogo, envía el consentimiento al MW y este lo despacha a OneTrust hasta obtener el receipt.

Glosario mínimo

Punto de recolección — pantalla/canal donde se recoge el consentimiento.
Propósito — finalidad del tratamiento.
PP — punto-propósito: la unidad consentible.
Receipt — comprobante firmado (JWT) que emite OneTrust.

2 / 10
① Paso 1

El satélite lee el catálogo

Prepara la pantalla de consentimiento con la versión vigente

El sistema satélite pinta su página de consentimiento con la punto-versión vigente y los propósitos asociados a ese punto.

  • 1
    Resuelve el punto de recolección y su versión activa (vigencia por fechas).
  • 2
    Obtiene los punto-propósito (PP): qué propósitos aplican y cuáles son obligatorios.
  • 3
    Acceso solo vía package (definer's rights): ningún sistema lee las tablas directamente y el catálogo nunca expone la clave de API.

Tablas que participan

G2999761punto G2999762*punto-versión G2999728propósito-versión G2999731propósito G2999733PP

Endpoint del MW

lectura de catálogo (sin endpoint HTTP)
* Número provisional — sujeto a confirmación de disponibilidad con Mapfre.3 / 10
② Paso 2

Registro — POST /consents

Una sola transacción local; respuesta inmediata sin contactar al Gateway

  • 1
    Autentica. La API key (hasheada en la punto-versión) autentica al satélite y resuelve la versión exacta de página — la atribución no se declara, se deriva de la credencial.
  • 2
    Idempotencia. Clave repetida con el mismo cuerpo devuelve el mismo 202 cacheado; con cuerpo distinto, conflicto.
  • 3
    Cifra el payload a nivel de aplicación (IPayloadCipher).
  • 4
    Escribe cabecera + detalle (uno por PP) + cola de despacho + idempotencia, y confirma la transacción.

202 Accepted · consentId (UUID v4)

Endpoint del MW

POST/consents

Cabeceras: X-Api-Key · Idempotency-Key. Devuelve 202 con el consentId.

Tablas que participan

G2999762*autenticación idempotencia_respuestas A9009072cabecera A9009083*detalle A9009082cola
* Número provisional — sujeto a confirmación de disponibilidad con Mapfre.4 / 10
③ Paso 3

El Worker despacha al Gateway

Proceso asíncrono, desacoplado de la respuesta al satélite

El Worker toma los pendientes de la cola de despacho (poll) y los envía a OneTrust a través del Gateway corporativo.

  • 1
    Lee la cola por estado y reintento programado; toma un lease para evitar despacho doble.
  • 2
    Envía el Create Consent Receipt al Gateway, que hace de proxy autenticado hacia OneTrust.
  • 3
    Resiliencia: reintentos con backoff exponencial; al agotar, pasa a dead-letter y notifica al operador.

Endpoint de OneTrust (vía Gateway)

POST…/onetrust/consentreceipts

Create Consent Receipt. El cuerpo lleva los propósitos consentidos del punto.

Tablas que participan

A9009082cola / estado notif_admindead-letter
5 / 10
④ Paso 4

Confirmación — el receipt cierra la evidencia

OneTrust responde y el Worker consolida el estado

OneTrust emite el receipt (JWT). El Worker lo deposita y consolida el estado del consentimiento como evidencia legal.

  • 1
    Guarda el receipt en la cabecera y marca el evento como CONFIRMADO.
  • 2
    Cada línea de detalle (PP) pasa a ACTIVO.
  • 3
    La operación queda registrada en la auditoría append-only (inmutable por triggers).

Resultado

A9009072receipt · CONFIRMADO A9009083*ACTIVO auditoria_logevidencia

Consulta operacional

La vista v_consentimiento_vigente proyecta el estado actual por titular × propósito.

* Número provisional — sujeto a confirmación de disponibilidad con Mapfre.6 / 10
Referencia

Catálogo de tablas del modelo

Serie G · Catálogo

parámetros y definiciones — lo lee el satélite
G2999731Propósito. Porta el purposeId de OneTrust.
G2999728Versión del propósito (texto legal, vigencia).
G2999761Punto de recolección. Porta el collectionPointId.
G2999762*Versión del punto. Aloja la clave de API y la atribución.
G2999733Punto-propósito (PP): la unidad consentible.
G2999763*Contadores para numeración continua sin saltos.

Serie A · Transaccional

evidencia — lo escribe el MW (API y Worker)
A9009072Consentimiento — cabecera (una fila por respuesta).
A9009083*Consentimiento — detalle (una fila por PP).
A9009082Cola de despacho (fusión con el outbox del MW).

Operativas del MW

misma base de datos compartida
idempotencia_respuestasEscudo anti-duplicados del registro.
auditoria_logAuditoría legal append-only (inmutable).
dominiosCatálogo central de estados y códigos.
notif_adminNotificaciones al operador de TI (dead-letter).
v_consentimiento_vigenteVista: estado actual por titular × propósito.
auditoria_req_resp · ratelimit_bucketsTrazas saneadas y control de uso.
* Número provisional — sujeto a confirmación de disponibilidad con Mapfre.7 / 10
Referencia

Endpoints del proceso

MétodoRutaDirecciónPropósito
POST /consents entrada El satélite registra un consentimiento. Responde 202 con el consentId; el despacho es asíncrono.
POST …/onetrust/consentreceipts salida Create Consent Receipt. El Worker envía los propósitos consentidos a OneTrust vía Gateway.
POST …/onetrust/Consent/v2/receipts salida Receipt V2 (Consent Receipt v2), variante vigente del comprobante.

Los endpoints de revocación y consulta de estado existen en el diseño del MW, pero quedan fuera del alcance de esta presentación (registro de consentimiento).

Rutas de OneTrust abreviadas — el prefijo de host lo resuelve el Gateway corporativo por entorno.8 / 10
Modelo de datos

Convenciones del modelo propuesto

Cómo leer el ERD de la página siguiente

#

Numeración continua sin saltos

Contadores (G2999763*) con bloqueo en la misma transacción: ningún correlativo se pierde y sin colisiones.

Transacción del llamador

Los packages no hacen commit ni rollback; el control transaccional lo tiene quien invoca.

Estados por dominio

EVENT_STATUS, DECISION_TYPE y DETAIL_STATUS se validan contra el catálogo dominios.

🔒

Datos personales protegidos

Identificador cifrado reversible + hash de búsqueda + payload cifrado a nivel de aplicación (IPayloadCipher).

🔑

Identidad = punto-versión

La API key vive hasheada en G2999762*: autentica al satélite y atribuye la versión exacta de página.

Tiempo según la serie

TIMESTAMP WITH TIME ZONE en la serie A (evidencia); DATE en la serie G (catálogo).

🛡

Sin acceso directo

Sin GRANT a PUBLIC: todo acceso pasa por packages; la frontera de exposición es el SELECT de cada procedimiento.

Leyenda del ERD

PK clave primaria · FK foránea · UK único. Color por familia: G · A · MW.

* Número provisional — sujeto a confirmación de disponibilidad con Mapfre.9 / 10
Modelo de datos

ERD v1.5 — modelo integrado propuesto

ERD cluster_G Serie G · Catálogo lo lee el sistema satélite cluster_A Serie A · Transaccional lo escribe el MW (API y Worker) cluster_MW Operativas del MW misma BD compartida G2999731 G2999731 · propósito PK cod_proposito cod_proposito_codigo = purposeId (OT) nom_proposito · cod_cia · mca_estado G2999728 G2999728 · propósito-versión PK cod_ver_proposito FK cod_proposito nom_version_proposito · txt_legal_version url_publicacion · fec_ini · fec_fin G2999731->G2999728 G2999733 G2999733 · punto-propósito (PP) PK cod_punto_proposito FK cod_ver_punto · FK cod_ver_proposito obligatorio · txt_link_canal G2999728->G2999733 G2999761 G2999761 · punto de recolección PK cod_punto_coleccion_id UK cod_punto_onetrust = collectionPointId nom_punto_recoleccion · canal · origen G2999762 G2999762 · punto-versión PK cod_ver_punto FK cod_punto_coleccion num_version = collectionPointVersion requestInformation (JWT) · url_politica UK hash_clave_api · scopes G2999761->G2999762 IDEMP idempotencia_respuestas PK (cod_punto_coleccion, endpoint_destino,       clave_idempotencia) hash_cuerpo · estado · cuerpo_respuesta FK cod_consentimiento · fecha_expiracion G2999761->IDEMP G2999762->G2999733 A9009072 A9009072 · consentimiento — cabecera PK cod_consentimiento UK id_consentimiento (UUID v4) · trace_id tip_docum · identificador_cliente (cifrado) hash_sujeto · FK cod_ver_punto payload (BLOB cifrado) · receipt_jwt estado_evento · fec_consentimiento G2999762->A9009072 atribución A9009083 A9009083 · consentimiento — detalle PK cod_detalle FK cod_consentimiento · FK cod_punto_proposito decision · fec_expiracion · estado G2999733->A9009083 G2999763 G2999763 · contadores PK cod_serie valor_actual (numeración sin saltos) A9009072->A9009083 A9009082 A9009082 · cola de despacho PK cod_sync FK · UK cod_consentimiento (1:1) endpoint_destino · estado num_reintentos · max_reintentos · fecha_prox_reintento trace_id A9009072->A9009082 1:1 A9009072->IDEMP AUDIT auditoria_log (append-only) PK idauditoria · trace_id operacion · estado · hash_sujeto A9009072->AUDIT trace_id NOTIF notif_admin PK idnotif · tipo_evento · severidad payload_json · estado DOM dominios PK iddominio · UK (nombre, codigo) EVENT_STATUS · DECISION_TYPE · DETAIL_STATUS VISTA v_consentimiento_vigente (vista) último detalle por hash_sujeto × PP estado ∈ (ACTIVO, REVOCADO, EXPIRADO)
* Los números G2999762, G2999763 y A9009083 son provisionales, sujetos a confirmación de disponibilidad con Mapfre.10 / 10