Saltar al contenido principal

Resolver el consentimiento vigente

GET/v1/consent-rules/resolve

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 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 OKCon regla registrada:

200 OK — sin ninguna regla registrada:

{
"matched": false
}
matchedbooleanobligatorio
true si existe una regla para alguno de los identificadores consultados.
actionstring, enum: `allow | deny` | null
El veredicto que gobierna. Ausente cuando matched es false.
ruleobject | null
La regla que ganó la precedencia, con el evento que la originó. Ausente cuando matched es false.

Errores

CódigoCuándo
409contact y contact_type no traen la misma cantidad de valores (consent_contact_pairs_mismatch).
Notas
  • matched: false no es lo mismo que allow. Significa que no hay ninguna regla registrada. Si el remitente exige la finalidad en modo opt_in, la ausencia de regla impide el envío; en modo opt_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.cl devuelve la regla registrada para ana@ejemplo.cl. Los uniquecode se comparan tal cual: ABC y abc son 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.
Request
curl -X GET "https://$API_HOST/v1/consent-rules/resolve" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"matched": true,
"action": "deny",
"rule": {
"consent_event_id": 42,
"channel": "mail",
"contact_type": "email_address",
"contact": "ana@ejemplo.cl",
"purpose_id": 1,
"action": "deny"
}
}