API Referencia

Integra con la Plataforma de Gestión de Consentimiento de Conzent. Estos puntos finales alimentan el banner de consentimiento, la segmentación geográfica, el registro de auditoría de consentimiento y el escaneo de cookies.

URL Base
https://your-instance.example.com

Todos los puntos finales son relativos a tu instancia de Conzent autoalojada. Reemplaza la URL base con tu dominio real.

Autenticación

La mayoría de los puntos finales son públicos — se llaman desde el script del banner de consentimiento que se ejecuta en los navegadores de tus visitantes.

Los puntos finales que aceptan datos utilizan una Clave de Sitio para identificar a qué sitio pertenece la solicitud. Encuentra tu clave de sitio en el panel de control de Conzent bajo Sitios.

Webhook de Escáner es el único punto final que requiere una clave de API. Pásala a través del encabezado X-Api-Key. La clave debe coincidir con la SCANNER_WEBHOOK_SECRET variable de entorno.
Método de AutenticaciónUsado PorCómo
NingunoVerificación de Salud, GeolocalizaciónNo se requiere autenticación
Clave de SitioVista de Página, Consentimiento, Datos de EscaneoPasa key en el cuerpo de la solicitud
Clave de APIWebhook de EscaneoEncabezado X-Api-Key

Formato de Respuesta

Las respuestas de la API utilizan dos formatos dependiendo del punto final:

Respuesta Estándar

Usado por Verificación de Salud y Webhook de Escaneo.

JSON
{
  "success": true,
  "data": {
    "status": "ok"
  }
}

Respuesta Ligera

Usado por puntos finales de beacon (Vista de Página, Consentimiento, Datos de Escaneo) para una sobrecarga mínima.

JSON
{
  "status": "ok"
}
Los puntos finales de beacon siempre devuelven 200. Las solicitudes inválidas devuelven {"status": "ignored"} con HTTP 200 para evitar errores en navigator.sendBeacon().
GET /health

Verificación de Salud

Devuelve el estado de salud de la aplicación y los servicios de respaldo. Úsalo para monitoreo, verificaciones de balanceador de carga y sondas de salud de Docker.

Sin autenticación

Respuesta

200 OK
{
  "success": true,
  "data": {
    "status": "ok",
    "services": {
      "database": true,
      "redis": true
    },
    "environment": "producción",
    "timestamp": "2026-03-16T12:00:00+00:00"
  }
}
503 — Degradado
{
  "success": true,
  "data": {
    "status": "degradado",
    "services": {
      "database": true,
      "redis": false
    }
  }
}

Ejemplo

curl
curl https://your-instance.example.com/health
GET /api/v1/geo_ip

Geolocalización

Devuelve el código de país del visitante y el estado de membresía en la UE. Usado por el script de consentimiento para aplicar regulaciones geográficas (GDPR, CCPA).

Sin autenticación Cacheado 1hr CORS

Campos de Respuesta

CampoTipoDescripción
countrystringCódigo ISO 3166-1 alpha-2 (minúsculas)
in_eubooleanSi el país está en la UE

Respuesta

200 OK
{
  "country": "dk",
  "in_eu": true
}

Ejemplo

curl
curl https://your-instance.example.com/api/v1/geo_ip
POST /api/v1/log

Beacon de Vista de Página

Registra eventos de vista de página y carga de banner. Enviado a través de navigator.sendBeacon() como multipart/form-data. Incrementa el contador diario de vistas de página y almacena observaciones de cookies para procesamiento asíncrono.

Clave de Sitio CORS

Cuerpo de Solicitud multipart/form-data

ParámetroTipoRequeridoDescripción
keystringRequeridoLa clave de sitio de tu página
request_typestringRequeridobanner_load o banner_view
log_timeintegerOpcionalMarca de tiempo Unix del evento
payloadJSON stringOpcionalObjeto con consent_session_id, banner_id, url, cookies

Respuesta

200 OK
{
  "status": "ok"
}

Ejemplo

curl
curl -X POST https://your-instance.example.com/api/v1/log \
  -F "key=YOUR_WEBSITE_KEY" \
  -F "request_type=banner_load" \
  -F "log_time=$(date +%s)"
POST /api/v1/scan_data

Beacon de Datos de Escaneo

Recibe datos de escaneo de cookies del lado del cliente. El script de consentimiento detecta cookies en el navegador del visitante y las informa para categorización automática. Los datos se almacenan en Redis y se procesan de manera asíncrona.

Clave de Sitio 600 req/min CORS

Cuerpo de Solicitud multipart/form-data

ParámetroTipoRequeridoDescripción
keystringRequeridoLa clave de sitio de tu página
payloadJSON stringRequeridoObjeto de datos de escaneo (ver abajo)

Estructura del Payload

payload (cadena JSON)
{
  "scan_id": 123,
  "action": "runscan",
  "scan_url": "https://example.com/",
  "consent_phase": "pre_consent",
  "data": {
    "cookies": [
      { "name": "_ga", "domain": ".example.com" }
    ]
  }
}

Respuesta

200 OK
{
  "status": "ok"
}

Ejemplo

curl
curl -X POST https://your-instance.example.com/api/v1/scan_data \
  -F "key=YOUR_WEBSITE_KEY" \
  -F 'payload={"scan_id":123,"action":"runscan","scan_url":"https://example.com/"}'
POST /api/v1/scan-webhook

Webhook de Escáner

Recibe resultados de escaneo de servidores de escáner externos cuando se completa un escaneo de cookies. Autenticado a través del encabezado X-Api-Key que coincide con la SCANNER_WEBHOOK_SECRET variable de entorno.

Clave de API

Encabezados

EncabezadoRequeridoDescripción
X-Api-KeyRequeridoDebe coincidir con SCANNER_WEBHOOK_SECRET
Content-TypeRequeridoapplication/json

Cuerpo de Solicitud application/json

ParámetroTipoRequeridoDescripción
actionstringOpcionalwebhook (predeterminado), runscan, o client_scan
scan_idintegerCondicionalRequerido para runscan / client_scan
scan_urlstringCondicionalURL que fue escaneada
dataobjectOpcionalDatos de resultado del escaneo (cookies, scripts)

Respuesta

200 OK
{
  "success": true,
  "data": {
    "status": "processed"
  }
}

Error

401 Unauthorized
{
  "success": false,
  "error": "No autorizado"
}

Ejemplo

curl
curl -X POST https://your-instance.example.com/api/v1/scan-webhook \
  -H "X-Api-Key: YOUR_SCANNER_WEBHOOK_SECRET" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "webhook",
    "scan_id": 456,
    "scan_url": "https://example.com/",
    "data": {
      "cookies": [
        {"name": "_ga", "domain": ".example.com", "category": "analytics"}
      ]
    }
  }'