Registrar y consultar el consentimiento
POST /v1/consent, lote, idempotencia y lectura de estado e historial.
Registrar
POST /v1/consent
Authorization: Bearer sk_live_…
Idempotency-Key: 4b0f…
{
"subject": "email:user@example.com",
"purpose": "marketing_email",
"state": "GRANTED",
"channel": "banner",
"locale": "es",
"pageUrl": "https://acme.com/signup"
}El subject puede ser un id interno, <tipo>:<valor> o un objeto { "identifiers": [{ "type", "value" }] } para crear el sujeto si no existe. state solo puede ser GRANTED, DENIED o WITHDRAWN.
Respuesta 201: { id, subjectId, subjectCreated, purpose, state, purposeVersion, collectedAt, receiptId }.
Lote
POST /v1/consent/batch con { "records": [ … ] } (máx. 100). Emite un justificante por sujeto que cubre todos sus registros del lote.
Leer el estado
GET /v1/subjects/email:user@example.com/consent?purpose=marketing_email
→ { "subjectId": "…", "purposes": {
"marketing_email": { "state": "GRANTED", "purposeVersion": 3,
"needsReconsent": false, "latestPurposeVersion": 3 } } }Los propósitos publicados sin registro para el sujeto aparecen con su defaultState. needsReconsent es true si la versión guardada va por detrás de una versión posterior publicada como RECONSENT_REQUIRED, o si el registro ha caducado.
Historial
GET /v1/subjects/{ref}/consent/history (solo sk_) devuelve hasta 500 filas de solo anexión, cada una con su proof y la cadena supersedesId.