Propósito
Devuelve la lista de supresión vigente de la organización: por cada titular, canal y finalidad, el último recibo que retiró o negó el consentimiento. Es el recurso que tu herramienta de campañas debe consultar antes de enviar. Requiere el permiso suppressions:read.
Método y ruta
GET /api/v1/organizations/:organization/suppressions
Query string
| Campo | Tipo | Obligatorio | Reglas |
|---|---|---|---|
channel |
enum | No | email, whatsapp |
search |
string | No | Trim, máximo 512; búsqueda sobre el identificador normalizado. |
page |
number | No | Mínimo 1; valor por defecto 1. |
perPage |
number | No | Entre 1 y 100; valor por defecto 100. |
curl
curl --fail-with-body \
-H "Authorization: Bearer $TOKEN" \
-H 'Accept: application/json' \
"$BASE_URL/api/v1/organizations/$ORGANIZATION/suppressions?channel=email&perPage=100"
Respuesta 200
{
"data": [
{
"id": 322,
"subjectDisplay": "a***@example.com",
"purposeId": 12,
"channel": "email",
"given": false,
"noticeVersion": "2026-09",
"parentReceiptId": 310,
"createdAt": "2026-08-23T05:00:00.000+00:00",
"subjectIdentifierHash": "b5fc85e55755f9e0d030a10ab4429b6b2944855f9a0d60077fe832becbc41d72",
"purpose": {
"id": 12,
"name": "Enviar comunicaciones comerciales",
"description": "Ofertas, promociones y publicidad.",
"legalBasisId": 3,
"active": true,
"updatedAt": "2026-08-01T12:00:00.000+00:00"
}
}
],
"metadata": {
"total": 1,
"per_page": 100,
"current_page": 1,
"last_page": 1,
"first_page": 1,
"first_page_url": "/?page=1",
"last_page_url": "/?page=1",
"next_page_url": null,
"previous_page_url": null
}
}
Errores relevantes
401: credencial ausente o inválida.403: la credencial no tienesuppressions:read.404::organizationno es la organización de la credencial.422: filtro o paginación inválida.
Semántica y límites
- Cada entrada es un recibo de consentimiento con
given: false.parentReceiptIdapunta al recibo que se está retirando. subjectDisplayestá enmascarado;subjectIdentifierHashpermite correlacionar con tus propios registros calculando SHA-256 del identificador normalizado.purposeesnullcuando la supresión no está asociada a una finalidad concreta (por ejemplo, retiro general de novedades).- La lista refleja el estado actual: si el titular vuelve a consentir, la entrada deja de aparecer.
- El permiso
suppressions:writeexiste en la plataforma pero API v1 no expone escrituras sobre este recurso.
Los IDs y fechas son ilustrativos; la estructura corresponde al contrato publicado.