Saltar al contenido principal

Listar el historial de consentimientos

GET/v1/consent-events

Descripción

Lista el historial de consentimientos de la cuenta, del más reciente al más antiguo, con las reglas de cada evento embebidas.

Este recurso es el historial, no el estado vigente. Para saber si hoy se le puede enviar a alguien, usar GET /v1/consent-rules/resolve: resuelve la precedencia y devuelve el mismo veredicto que aplicará el envío. Derivarlo de este listado a mano —tomando el primer resultado, por ejemplo— puede dar una respuesta distinta, porque la precedencia no es cronológica pura: entre reglas contradictorias gana la que deniega.

Autenticación

Authorizationbearer tokenheaderobligatorio
API key con scope consent:read. Formato: Bearer FD.<key_id>.<token>.
X-Instance-Slugstringheaderobligatorio

Request

Query params:

pageinteger
Página, 1-indexed. Default: 1.
page_sizeinteger
Tamaño de página, 1–100. Default: 20.
term_idinteger | null
Filtra por término — ver `GET /v1/consent-terms`.
statusstring, enum: `confirmed | pending | expired` | null
Filtra por estado del evento.
contactstring | null
Filtra por identificador presente en alguna regla del evento, coincidencia exacta.

El filtro contact compara contra la forma en que el identificador quedó almacenado: las direcciones de correo se guardan normalizadas a minúsculas, y los uniquecode tal cual se enviaron. Buscar Ana@Ejemplo.cl no devuelve el evento que se registró para esa dirección; buscar ana@ejemplo.cl sí.

Response

200 OKDevuelve una página de resultados: data con los elementos y pagination para pedir la siguiente. Cada elemento tiene los campos que siguen.
idintegerobligatorio
Identificador del evento.
term_idintegerobligatorio
Término aceptado.
term_version_idintegerobligatorio
Versión exacta que el titular aceptó. Queda congelada aunque el término publique versiones nuevas.
statusstring, enum: `confirmed | pending | expired`obligatorio
Un evento pending (doble opt-in sin confirmar) deja evidencia pero no autoriza nada.
methodstring, enum: `single_opt_in | double_opt_in`obligatorio
sourcestring, enum: `form | api | import | system`obligatorio
Origen del registro.
confirmed_atstring (date-time) | null
expired_atstring (date-time) | null
created_atstring (date-time)obligatorio
rulesarrayobligatorio
Las reglas que ese evento declaró: id, channel, contact_type, contact, purpose_id, action y created_at. Una revocación se ve acá como una regla con action: deny.
Notas
  • El listado no colapsa el historial: si un titular otorgó y después revocó, aparecen los dos eventos.
  • Para registrar un consentimiento nuevo, ver POST /v1/consent-events.
Request
curl -X GET "https://$API_HOST/v1/consent-events?contact=ana@ejemplo.cl&term_id=4" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"data": [
{
"id": 42,
"term_id": 4,
"term_version_id": 7,
"status": "confirmed",
"method": "double_opt_in",
"source": "api",
"confirmed_at": "2026-05-08T14:22:31Z",
"expired_at": null,
"created_at": "2026-05-08T14:22:31Z",
"rules": [
{
"id": 91,
"channel": "mail",
"contact_type": "email_address",
"contact": "ana@ejemplo.cl",
"purpose_id": 1,
"action": "allow",
"created_at": "2026-05-08T14:22:31Z"
}
]
}
],
"pagination": {
"page": 1,
"page_size": 20,
"has_more": false,
"total_items": 1,
"total_pages": 1
}
}