Consentimiento
Consulta el resultado canónico y revoca consentimientos generales activos.
Consultar una interacción
GET /v1/consent-interactions/{interactionId} devuelve una interacción pending, expired o completed. Cuando está completada, la lista consents contiene la decisión explícita de cada consentimiento incluido.
curl "$CONSENSA_API_URL/v1/consent-interactions/$INTERACTION_ID" \
--header "Authorization: Bearer $CONSENSA_API_KEY"Ésta es la confirmación de negocio. Los eventos del Web Component son notificaciones sanitizadas para la interfaz; el resultado canónico se confirma siempre desde tu backend.
Consultar un consentimiento
Usa GET /v1/consents/{consentId} para obtener el estado vigente, fechas y scopes de un consentimiento general perteneciente a tu tenant.
curl "$CONSENSA_API_URL/v1/consents/$CONSENT_ID" \
--header "Authorization: Bearer $CONSENSA_API_KEY"{
"id": "consent-72c",
"templateKey": "credit-evaluation",
"status": "granted",
"grantedAt": 1787702400000,
"revokedAt": null,
"validUntil": null,
"scopes": ["credit_information"]
}Consultar Evidence
Estado de consentimiento ≠ Evidence. El estado responde qué está vigente ahora; GET /v1/consents/{consentId}/evidence devuelve la vista pública del hecho canónico que Consensa conserva para auditoría: qué decisión ocurrió, cuándo ocurrió y se registró, sobre qué versión de template, con qué autenticación/provenance y qué scopes quedaron involucrados.
Evidence no es un PDF ni un volcado de la tabla interna. La vista pública excluye ciphertext, RUT, tokens, IDs de ledger/outbox y hashes internos de encadenamiento.
curl "$CONSENSA_API_URL/v1/consents/$CONSENT_ID/evidence" \
--header "Authorization: Bearer $CONSENSA_API_KEY"{
"consentId": "consent-72c",
"decision": "granted",
"occurredAt": 1787702400000,
"recordedAt": 1787702400120,
"customerId": "customer-4821",
"template": { "key": "credit-evaluation", "version": 3, "contentHash": "sha256:…" },
"authentication": { "method": "bank_session", "factors": [], "level": "client_authenticated" },
"provenance": { "sourceType": "consent_action", "channel": "digital", "origin": null, "sourceSystem": "bank-channel", "sourceReference": "decision-72c" },
"scopes": ["credit_information"]
}occurredAt es cuándo decidió el titular; recordedAt es cuándo lo recibió Consensa. En una captura por Embed son prácticamente el mismo instante.
Revocar
La revocación es una escritura canónica e idempotente. No modifica ni borra la evidencia histórica: agrega el hecho de la revocación.
curl --request POST "$CONSENSA_API_URL/v1/consents/$CONSENT_ID/revoke" \
--header "Authorization: Bearer $CONSENSA_API_KEY" \
--header "Content-Type: application/json" \
--header "Idempotency-Key: revoke-$CONSENT_ID-01" \
--data '{
"occurredAt": 1787702460000,
"sourceSystem": "bank-channel",
"sourceReference": "revocation-271"
}'{ "consentId": "consent-72c", "status": "revoked", "revokedAt": 1787702460000, "replayed": false }No uses la ausencia de una respuesta, un timeout o un evento de navegador como una revocación. El estado debe provenir de la respuesta canónica de la API.
El titular también puede revocar por su cuenta desde el Centro de Privacidad: en ese caso tu backend se entera por el evento webhook consent_action.created o al volver a consultar el estado.
Para revocar un consentimiento REDEC usa POST /v1/redec/consents/{redecConsentId}/revoke, que tiene reglas propias de canal y assurance.