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/tenantRetorna 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/tenantActualiza 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-checkVerifica si el tenant tiene un DPO designado. Util para validaciones de cumplimiento.
Obtener uso y cuotas
GET /api/v1/settings/usageRetorna 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-keyscurl -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-keysBody:
{
"name": "CRM Integration",
"scopes": ["consent:read", "consent:write"],
"rateLimitRpm": 100,
"expiresAt": "2027-03-09T00:00:00Z"
}| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
name | string | Si | Nombre descriptivo de la API Key |
scopes | string[] | Si | Permisos: consent:read, consent:write, * |
rateLimitRpm | number | No | Limite de requests por minuto |
expiresAt | datetime | No | Fecha 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
| Scope | Descripcion |
|---|---|
consent:read | Leer templates y consultar consentimientos de un sujeto |
consent:write | Registrar nuevos consentimientos |
* | Acceso completo a todos los endpoints externos |
Actualizar API Key
PUT /api/v1/settings/api-keys/:idPermite actualizar el nombre, scopes, estado activo y limite de rate.
Eliminar API Key
DELETE /api/v1/settings/api-keys/:idElimina 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/recordsAuth: 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"
}
}| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
templateId | string | Si | ID del template de consentimiento |
subjectEmail | string | Si | Email del titular |
subjectRef | string | No | Referencia externa del titular (ej: ID CRM) |
choices | object | Si | Decisiones por proposito |
action | string | Si | GIVEN, WITHDRAWN o UPDATED |
metadata | object | No | Metadatos adicionales (operador, metodo, notas) |
Respuesta (201):
{
"success": true,
"data": {
"id": "rec_new789",
"consentString": "cs_a1b2c3..."
}
}Listar templates activos
GET /api/v1/external/consent/templatesAuth: 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/consentsAuth: 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