Centro de documentación
Guía 10/POST/api/v1/organizations/:organization/consents

Registrar consentimiento

Crea o actualiza la decisión de contacto de un titular y recibe el recibo inmutable y el enlace de preferencias.

Índice de guías

Propósito

Registra una decisión de contacto para una organización. Crea o actualiza la fila única definida por organización, identificador normalizado y canal, emite un recibo inmutable encadenado al registro de evidencia con la versión del aviso vigente y, si el identificador es un correo, envía el recibo al titular con el enlace a su centro de preferencias. Requiere el permiso consents:write.

Método y ruta

POST /api/v1/organizations/:organization/consents

Body JSON

Campo Tipo Obligatorio Reglas
subjectType string enum email, rut, phone, custom
subjectValue string Trim, longitud 1..512 y normalización según subjectType.
channel string enum email, whatsapp
given boolean true otorga; false registra revocación o no consentimiento.
purposeId integer No ID de una finalidad del inventario de la organización, por ejemplo marketing.

curl

curl --fail-with-body \
  -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  "$BASE_URL/api/v1/organizations/$ORGANIZATION/consents" \
  --data '{
    "subjectType": "email",
    "subjectValue": " Ada@Example.COM ",
    "channel": "email",
    "given": true,
    "purposeId": 12
  }'

Respuesta 201

{
  "id": 91,
  "subjectType": "email",
  "subjectValue": "ada@example.com",
  "channel": "email",
  "given": true,
  "source": "api",
  "consentedAt": "2026-08-23T04:05:00.000+00:00",
  "revokedAt": null,
  "updatedAt": "2026-08-23T04:05:00.000+00:00",
  "receipt": {
    "id": 310,
    "subjectDisplay": "a***@example.com",
    "purposeId": 12,
    "channel": "email",
    "given": true,
    "noticeVersion": "2026-09",
    "parentReceiptId": null,
    "createdAt": "2026-08-23T04:05:00.000+00:00",
    "consentTextSnapshot": "Acepto recibir ofertas, promociones y publicidad por correo electrónico.",
    "context": null
  },
  "preferenceUrl": "https://app.lpdatos.cl/preferencias/acme?token=..."
}

Errores relevantes

  • 401: credencial ausente o inválida.
  • 403: la credencial no tiene consents:write.
  • 404: :organization no es la organización de la credencial.
  • 422: body, identificador o purposeId inválido.

Semántica y límites

  • No es un alta estricta. Repetir el POST para la misma clave actualiza la fila existente y responde 201 con un recibo nuevo enlazado al anterior (parentReceiptId).
  • Con given: true, la API actualiza consentedAt y limpia revokedAt. Con given: false, fija revokedAt.
  • noticeVersion es la versión del aviso de privacidad publicada al momento del registro. Sin aviso publicado, el recibo sale con sin-version-publicada.
  • context incluye IP y agente de usuario solo si la organización activó esa captura en su configuración.
  • preferenceUrl es null cuando el identificador no es un correo.

Los IDs y fechas son ilustrativos; los campos y la semántica corresponden al contrato publicado.

¿Necesitas el contrato exhaustivo?Revisa parámetros, esquemas y respuestas de todas las operaciones en la referencia.Abrir referencia
WhatsApp