Resolver el consentimiento vigente
/v1/consent-rules/resolvePara desarrolladores
Descripción
Responde la pregunta operativa del consentimiento: ¿le puedo enviar a esta persona, por este canal, para esta finalidad?
Dado un canal, una finalidad y los identificadores que se conozcan del titular, aplica la misma precedencia que el envío y devuelve el veredicto vigente. Es la única forma correcta de consultarlo: el listado de eventos es historial, y derivar el veredicto de él por su cuenta puede dar otra respuesta.
Guía relacionada
- Consentimiento — Registre y consulte el consentimiento de sus contactos.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
consent:read. Formato:Bearer <API_KEY>. X-Instance-Slugstringheaderobligatorio- Identificador de su instancia. Ver Autenticación.
Request
Query params:
channelstring, enum: `mail | sms | wsp | call | push`obligatorio- Canal del envío.
purpose_idintegerobligatorio- Finalidad del envío (ver `GET /v1/consent-purposes`).
contactstring (repetible)obligatorio- Identificador del titular. Se repite para consultar por varios identificadores de la misma persona.
contact_typestring (repetible), enum: `email_address | phone_number | uniquecode`obligatorio- Tipo de cada
contact, en el mismo orden y con la misma cantidad.
contact y contact_type se emparejan por posición:
GET /v1/consent-rules/resolve?channel=mail&purpose_id=1&contact=[email protected]&contact_type=email_address&contact=RUT-123&contact_type=uniquecode HTTP/1.1
Pase todos los identificadores que conozca de la persona. El vínculo entre una dirección de correo y un código propio no existe en Fidelizador: solo quien llama sabe que son la misma persona, así que la precedencia solo puede aplicarse sobre lo que venga en la consulta. Si dos identificadores de la misma persona sostienen reglas opuestas, gana la que deniega.
Response
matched indica si existe una regla para alguno de los identificadores; action y rule vienen solo cuando es true.matchedbooleansiempre presentetruesi existe una regla para alguno de los identificadores consultados.actionstring, enum: `allow | deny` | null- El veredicto que gobierna. Ausente cuando
matchedesfalse. ruleobject | null- La regla que ganó la precedencia, con el evento que la originó. Ausente cuando
matchedesfalse.
Sin ninguna regla registrada para los identificadores consultados, la respuesta es { "matched": false }, sin action ni rule.
Errores
| Código | Cuándo |
|---|---|
| 409 | contact y contact_type no traen la misma cantidad de valores (consent_contact_pairs_mismatch). |
matched: falseno es lo mismo queallow. Significa que no hay ninguna regla registrada. Si el remitente exige la finalidad en modoopt_in, la ausencia de regla impide el envío; en modoopt_out, lo permite. Configure el remitente desde el panel (ver Campos, formularios y consentimiento).- Las direcciones de correo se comparan en forma canónica, así que consultar
[email protected]devuelve la regla registrada para[email protected]. Losuniquecodese comparan tal cual:ABCyabcson códigos distintos. - El veredicto es por finalidad. Si el remitente declara más de una, el envío requiere que todas pasen: basta una denegada para que el correo no salga.
curl -G "https://$API_HOST/v1/consent-rules/resolve" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG" \
--data-urlencode "channel=mail" \
--data-urlencode "purpose_id=1" \
--data-urlencode "[email protected]" \
--data-urlencode "contact_type=email_address"
{
"matched": true,
"action": "deny",
"rule": {
"consent_event_id": 42,
"channel": "mail",
"contact_type": "email_address",
"purpose_id": 1,
"action": "deny"
}
}