API REST (Desarrolladores)
Configuracion y API Keys

Endpoints de Configuracion y API Keys

Endpoints para gestionar la configuracion del tenant y las API Keys para integraciones server-to-server.

Configuracion del Tenant

Obtener configuracion

GET /api/v1/settings/tenant

Retorna la configuracion actual del tenant: datos del DPO, emails de notificacion y preferencias.

curl -X GET https://api.dpolab.com/api/v1/settings/tenant \
  -H "Authorization: Bearer {token}"

Actualizar configuracion

PUT /api/v1/settings/tenant

Actualiza la configuracion del tenant.

curl -X PUT https://api.dpolab.com/api/v1/settings/tenant \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "dpoName": "Maria Garcia",
    "dpoEmail": "[email protected]"
  }'

Verificar DPO designado

GET /api/v1/settings/tenant/dpo-check

Verifica si el tenant tiene un DPO designado. Util para validaciones de cumplimiento.

Obtener uso y cuotas

GET /api/v1/settings/usage

Retorna el uso actual del tenant respecto a los limites de su plan.

curl -X GET https://api.dpolab.com/api/v1/settings/usage \
  -H "Authorization: Bearer {token}"

API Keys

La gestion de API Keys requiere rol de Administrador o Owner y el feature flag CMP_API habilitado en el plan.

Las API Keys permiten integraciones server-to-server con la plataforma, especialmente para el registro de consentimientos desde sistemas externos (CRM, call center, apps moviles).

Listar API Keys

GET /api/v1/settings/api-keys
curl -X GET https://api.dpolab.com/api/v1/settings/api-keys \
  -H "Authorization: Bearer {token}"

Respuesta (200):

{
  "success": true,
  "data": [
    {
      "id": "key_abc123",
      "name": "CRM Integration",
      "keyPrefix": "dk_abc1...",
      "scopes": ["consent:read", "consent:write"],
      "rateLimitRpm": 100,
      "isActive": true,
      "lastUsedAt": "2026-03-09T14:30:00Z",
      "expiresAt": "2027-03-09T00:00:00Z",
      "createdBy": "usr_001",
      "createdAt": "2026-03-01T10:00:00Z"
    }
  ]
}

Crear API Key

POST /api/v1/settings/api-keys

Body:

{
  "name": "CRM Integration",
  "scopes": ["consent:read", "consent:write"],
  "rateLimitRpm": 100,
  "expiresAt": "2027-03-09T00:00:00Z"
}
CampoTipoRequeridoDescripcion
namestringSiNombre descriptivo de la API Key
scopesstring[]SiPermisos: consent:read, consent:write, *
rateLimitRpmnumberNoLimite de requests por minuto
expiresAtdatetimeNoFecha de expiracion

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "key_new456",
    "name": "CRM Integration",
    "key": "dk_a1b2c3d4e5f6...",
    "scopes": ["consent:read", "consent:write"],
    "createdAt": "2026-03-09T10:00:00Z"
  }
}
⚠️

La API Key completa (key) solo se muestra una vez al momento de la creacion. Guardala en un lugar seguro. Despues solo se mostrara el prefijo (keyPrefix).

Scopes disponibles

ScopeDescripcion
consent:readLeer templates y consultar consentimientos de un sujeto
consent:writeRegistrar nuevos consentimientos
*Acceso completo a todos los endpoints externos

Actualizar API Key

PUT /api/v1/settings/api-keys/:id

Permite actualizar el nombre, scopes, estado activo y limite de rate.

Eliminar API Key

DELETE /api/v1/settings/api-keys/:id

Elimina permanentemente la API Key. Los requests que la utilicen dejaran de funcionar inmediatamente.


API Externa de Consentimiento

Los siguientes endpoints se autentican con API Key (header Authorization: Bearer dk_...) y permiten gestionar consentimientos desde sistemas externos.

Registrar consentimiento

POST /api/v1/external/consent/records

Auth: API Key con scope consent:write

Body:

{
  "templateId": "tpl_abc123",
  "subjectEmail": "[email protected]",
  "subjectRef": "CRM-12345",
  "choices": {
    "prp_001": true,
    "prp_002": false
  },
  "action": "GIVEN",
  "metadata": {
    "operatorId": "agent_001",
    "collectionMethod": "phone",
    "notes": "Consentimiento dado por telefono"
  }
}
CampoTipoRequeridoDescripcion
templateIdstringSiID del template de consentimiento
subjectEmailstringSiEmail del titular
subjectRefstringNoReferencia externa del titular (ej: ID CRM)
choicesobjectSiDecisiones por proposito
actionstringSiGIVEN, WITHDRAWN o UPDATED
metadataobjectNoMetadatos adicionales (operador, metodo, notas)

Respuesta (201):

{
  "success": true,
  "data": {
    "id": "rec_new789",
    "consentString": "cs_a1b2c3..."
  }
}

Listar templates activos

GET /api/v1/external/consent/templates

Auth: API Key con scope consent:read

Retorna los templates de consentimiento activos del tenant.

Respuesta (200):

{
  "success": true,
  "data": [
    {
      "id": "tpl_abc123",
      "name": "Consentimiento marketing",
      "category": "MARKETING",
      "formKey": "fk_xyz789",
      "enabledChannels": ["WEB", "API", "MANUAL"]
    }
  ]
}

Consultar consentimientos de un sujeto

GET /api/v1/external/consent/subject/:ref/consents

Auth: API Key con scope consent:read

Retorna todos los consentimientos registrados para un titular identificado por su referencia.

curl -X GET https://api.dpolab.com/api/v1/external/consent/subject/CRM-12345/consents \
  -H "Authorization: Bearer dk_a1b2c3..."

Respuesta (200):

{
  "success": true,
  "data": [
    {
      "id": "rec_001",
      "templateId": "tpl_abc123",
      "templateName": "Consentimiento marketing",
      "noticeId": "ntc_001",
      "choices": { "prp_001": true },
      "action": "GIVEN",
      "channel": "API",
      "createdAt": "2026-03-09T14:00:00Z"
    }
  ]
}

Ver tambien

  • Modulo CMP — Guia funcional del modulo de consentimiento