Documentación API

Admin - Clientes

Requiere rol global_admin. Gestión completa de clientes/organizaciones incluyendo licencias, configuración y estadísticas.


GET /admin/clients

Lista todos los clientes del sistema con información básica.

GET /admin/clients

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X GET https://api-docmind.devol.es/admin/clients \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{"clients": [{"id": "uuid", "nombre": "Empresa A", "status": "activo", "plan": "profesional", "users_count": 15}]}

Lista de clientes con estado y plan.

Errores

403Forbidden

Requiere global_admin.

{"msg": "Acceso denegado"}

GET /admin/clients/{client_id}

Obtiene los datos completos de un cliente incluyendo configuración y licencia.

GET /admin/clients/{client_id}

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X GET https://api-docmind.devol.es/admin/clients/CLIENT_ID \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{
  "client": {
    "id": "uuid", "nombre": "Empresa A", "status": "activo",
    "licencia": {"plan": "profesional", "extracciones_limite": 10000, "fecha_expiracion": "..."},
    "config": {"logo_url": "...", "primary_color": "#FF6600"},
    "stats": {"users": 15, "habilidades": 8, "extracciones_totales": 5000}
  }
}

Información completa del cliente con licencia, configuración y estadísticas.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

POST /admin/clients

Crea un nuevo cliente/organización en el sistema.

POST /admin/clients

Headers

Content-Type: application/json
Authorization: Bearer JWT_TOKEN

Body (JSON)

{
  "nombre": "Nueva Empresa",
  "plan": "profesional",
  "extracciones_limite": 5000,
  "usuarios_limite": 10,
  "admin_email": "admin@nuevaempresa.com",
  "admin_nombre": "Admin",
  "admin_password": "password123"
}
  • nombre: (obligatorio) Nombre del cliente.
  • plan: (obligatorio) Plan de licencia.
  • extracciones_limite: (obligatorio) Límite de extracciones.
  • usuarios_limite: (obligatorio) Límite de usuarios.
  • admin_email: (obligatorio) Email del primer usuario admin.
  • admin_nombre: (obligatorio) Nombre del admin.
  • admin_password: (obligatorio) Contraseña del admin.

Ejemplos

curl -X POST https://api-docmind.devol.es/admin/clients \
  -H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
  -d '{"nombre": "Nueva Empresa", "plan": "profesional", "extracciones_limite": 5000, "usuarios_limite": 10, "admin_email": "admin@ej.com", "admin_nombre": "Admin", "admin_password": "pass123"}'

Respuesta

{"message": "Cliente creado exitosamente", "client": {"id": "new-uuid", "nombre": "Nueva Empresa"}, "admin_user": {"id": "admin-uuid"}}

Cliente creado con su esquema de base de datos y usuario administrador inicial.

Errores

400Bad Request

Datos faltantes o inválidos.

{"error": "El nombre es obligatorio"}
409Conflict

Email admin ya existe.

{"error": "El email ya está registrado"}

PUT /admin/clients/{client_id}

Actualiza los datos de un cliente.

PUT /admin/clients/{client_id}

Headers

Content-Type: application/json
Authorization: Bearer JWT_TOKEN

Body (JSON)

{"nombre": "Empresa Actualizada", "status": "activo"}
  • nombre: (opcional) Nuevo nombre.
  • status: (opcional) Nuevo estado: activo, inactivo.

Ejemplos

curl -X PUT https://api-docmind.devol.es/admin/clients/CLIENT_ID \
  -H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
  -d '{"nombre": "Empresa Actualizada"}'

Respuesta

{"message": "Cliente actualizado exitosamente"}

Confirmación.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

DELETE /admin/clients/{client_id}

Elimina un cliente y todos sus datos (usuarios, extracciones, habilidades, etc.).

DELETE /admin/clients/{client_id}

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X DELETE https://api-docmind.devol.es/admin/clients/CLIENT_ID \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{"message": "Cliente y todos sus datos eliminados exitosamente"}

Operación destructiva e irreversible. Se eliminan todos los datos del cliente.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

PUT /admin/clients/{client_id}/licencia

Actualiza la licencia de un cliente (plan, límites, fechas).

PUT /admin/clients/{client_id}/licencia

Headers

Content-Type: application/json
Authorization: Bearer JWT_TOKEN

Body (JSON)

{
  "plan": "enterprise",
  "extracciones_limite": 50000,
  "usuarios_limite": 100,
  "fecha_expiracion": "2026-12-31"
}
  • plan: (opcional) Nuevo plan.
  • extracciones_limite: (opcional) Nuevo límite de extracciones.
  • usuarios_limite: (opcional) Nuevo límite de usuarios.
  • fecha_expiracion: (opcional) Nueva fecha de expiración YYYY-MM-DD.

Ejemplos

curl -X PUT https://api-docmind.devol.es/admin/clients/CLIENT_ID/licencia \
  -H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
  -d '{"plan": "enterprise", "extracciones_limite": 50000}'

Respuesta

{"message": "Licencia actualizada exitosamente", "licencia": {"plan": "enterprise", "extracciones_limite": 50000}}

Licencia actualizada con los nuevos valores.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

GET /admin/clients/{client_id}/config

Obtiene la configuración personalizada del cliente (logo, colores, etc.).

GET /admin/clients/{client_id}/config

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X GET https://api-docmind.devol.es/admin/clients/CLIENT_ID/config \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{"config": {"logo_url": "https://...", "primary_color": "#FF6600", "secondary_color": "#333"}}

Configuración visual del cliente.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

PUT /admin/clients/{client_id}/config

Actualiza la configuración personalizada del cliente.

PUT /admin/clients/{client_id}/config

Headers

Content-Type: application/json
Authorization: Bearer JWT_TOKEN

Body (JSON)

{"logo_url": "https://nueva-url/logo.png", "primary_color": "#0066FF"}
  • logo_url: (opcional) URL del logo.
  • primary_color: (opcional) Color primario (hex).
  • secondary_color: (opcional) Color secundario (hex).

Ejemplos

curl -X PUT https://api-docmind.devol.es/admin/clients/CLIENT_ID/config \
  -H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
  -d '{"primary_color": "#0066FF"}'

Respuesta

{"message": "Configuración actualizada exitosamente"}

Confirmación.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

GET /admin/clients/{client_id}/stats

Obtiene estadísticas detalladas de un cliente.

GET /admin/clients/{client_id}/stats

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X GET https://api-docmind.devol.es/admin/clients/CLIENT_ID/stats \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{
  "stats": {
    "extracciones": {"total": 5000, "este_mes": 450, "completadas": 4800},
    "usuarios": {"total": 15, "activos_este_mes": 12},
    "habilidades": {"total": 8},
    "storage_mb": 2500
  }
}

Estadísticas operativas del cliente.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

POST /admin/clients/{client_id}/reset-usage

Resetea el conteo de uso de extracciones del cliente.

POST /admin/clients/{client_id}/reset-usage

Headers

Authorization: Bearer JWT_TOKEN

Ejemplos

curl -X POST https://api-docmind.devol.es/admin/clients/CLIENT_ID/reset-usage \
  -H "Authorization: Bearer JWT_TOKEN"

Respuesta

{"message": "Contadores de uso reseteados exitosamente"}

Los contadores de extracción vuelven a 0.

Errores

404Not Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

© 2025 Devol. Todos los derechos reservados.