Docs

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.