Resolver el consentimiento vigente
/v1/consent-rules/resolveDescripció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 aplica 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 a mano puede dar otra respuesta.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
consent:read. Formato:Bearer FD.<key_id>.<token>. X-Instance-Slugstringheaderobligatorio
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:
?channel=mail&purpose_id=1
&contact=ana@ejemplo.cl&contact_type=email_address
&contact=RUT-123&contact_type=uniquecode
Conviene pasar todos los identificadores que se conozcan 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
200 OK — sin ninguna regla registrada:
{
"matched": false
}
matchedbooleanobligatoriotruesi 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.
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. La configuración del remitente se hace desde el panel — ver la suite de consentimiento.- Las direcciones de correo se comparan en forma canónica, así que consultar
Ana@Ejemplo.cldevuelve la regla registrada paraana@ejemplo.cl. 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 -X GET "https://$API_HOST/v1/consent-rules/resolve" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
{
"matched": true,
"action": "deny",
"rule": {
"consent_event_id": 42,
"channel": "mail",
"contact_type": "email_address",
"contact": "ana@ejemplo.cl",
"purpose_id": 1,
"action": "deny"
}
}