Admin - Usuarios
Requiere rol global_admin. Todos los endpoints de esta sección son exclusivos para administradores globales del sistema.
GET /admin/users
Lista todos los usuarios del sistema (todos los clientes).
/admin/usersHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"users": [{"id": "uuid", "nombre": "Juan", "email": "j@ej.com", "role_name": "admin", "cliente_nombre": "Empresa A"}], "total": 50}Lista global de usuarios con su cliente asociado.
Errores
403ForbiddenRequiere global_admin.
{"msg": "Acceso denegado"}GET /admin/users/client/{client_id}
Lista usuarios de un cliente específico.
/admin/users/client/{client_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users/client/CLIENT_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"users": [{"id": "uuid", "nombre": "Juan", "email": "j@ej.com", "role_name": "admin"}]}Usuarios del cliente especificado.
Errores
404Not FoundCliente no encontrado.
{"error": "Cliente no encontrado"}GET /admin/users/{user_id}
Obtiene los datos completos de un usuario.
/admin/users/{user_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users/USER_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"user": {"id": "uuid", "nombre": "Juan", "email": "j@ej.com", "role_name": "admin", "clientes": [...]}}Datos del usuario con sus clientes asociados.
Errores
404Not FoundUsuario no encontrado.
{"error": "Usuario no encontrado"}POST /admin/users
Crea un usuario en cualquier cliente del sistema.
/admin/usersHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"nombre": "Nuevo Usuario", "email": "nuevo@ej.com", "password": "pass123", "role_id": "role-uuid", "cliente_id": "client-uuid"} nombre: (obligatorio) Nombre completo.email: (obligatorio) Email único.password: (obligatorio) Contraseña.role_id: (obligatorio) ID del rol.cliente_id: (obligatorio) ID del cliente al que asociar.
Ejemplos
curl -X POST https://api-docmind.devol.es/admin/users \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"nombre": "Nuevo", "email": "n@ej.com", "password": "pass", "role_id": "r-uuid", "cliente_id": "c-uuid"}' Respuesta
{"message": "Usuario creado", "user": {"id": "new-uuid"}}Usuario creado en el cliente especificado.
Errores
400Bad RequestDatos inválidos.
{"error": "Email ya registrado"}409ConflictEmail duplicado.
{"error": "Ya existe un usuario con ese email"}PUT /admin/users/{user_id}
Actualiza los datos de cualquier usuario del sistema.
/admin/users/{user_id}Headers
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"nombre": "Nombre Actualizado", "role_id": "new-role-uuid"} nombre: (opcional) Nuevo nombre.email: (opcional) Nuevo email.role_id: (opcional) Nuevo rol.
Ejemplos
curl -X PUT https://api-docmind.devol.es/admin/users/USER_ID \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"nombre": "Actualizado"}' Respuesta
{"message": "Usuario actualizado exitosamente"}Confirmación.
Errores
404Not FoundUsuario no encontrado.
{"error": "Usuario no encontrado"}DELETE /admin/users/{user_id}
Elimina un usuario del sistema.
/admin/users/{user_id}Headers
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X DELETE https://api-docmind.devol.es/admin/users/USER_ID \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"message": "Usuario eliminado exitosamente"}El usuario se elimina permanentemente.
Errores
404Not FoundUsuario no encontrado.
{"error": "Usuario no encontrado"}GET /admin/users/roles
Lista todos los roles disponibles en el sistema.
/admin/users/rolesHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users/roles \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"roles": [{"id": "uuid", "name": "admin"}, {"id": "uuid2", "name": "editor"}, {"id": "uuid3", "name": "viewer"}]}Roles del sistema.
Errores
403ForbiddenRequiere global_admin.
{"msg": "Acceso denegado"}GET /admin/users/clients
Lista todos los clientes del sistema (para asignar usuarios).
/admin/users/clientsHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users/clients \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"clients": [{"id": "uuid", "nombre": "Empresa A"}, {"id": "uuid2", "nombre": "Empresa B"}]}Lista de clientes disponibles.
Errores
403ForbiddenRequiere global_admin.
{"msg": "Acceso denegado"}PUT /admin/users/{user_id}/password
Cambia la contraseña de cualquier usuario (sin necesidad de la contraseña actual).
/admin/users/{user_id}/passwordHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{"new_password": "nueva_password_segura"} new_password: (obligatorio) Nueva contraseña.
Ejemplos
curl -X PUT https://api-docmind.devol.es/admin/users/USER_ID/password \
-H "Content-Type: application/json" -H "Authorization: Bearer JWT_TOKEN" \
-d '{"new_password": "nueva_segura"}' Respuesta
{"message": "Contraseña actualizada exitosamente"}Contraseña cambiada sin verificar la actual.
Errores
404Not FoundUsuario no encontrado.
{"error": "Usuario no encontrado"}GET /admin/users/stats
Estadísticas globales de usuarios del sistema.
/admin/users/statsHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/admin/users/stats \
-H "Authorization: Bearer JWT_TOKEN" Respuesta
{"total_users": 150, "active_users": 120, "by_role": {"admin": 15, "editor": 60, "viewer": 75}, "by_client": [{"nombre": "Empresa A", "count": 30}]}Estadísticas de usuarios por rol y cliente.
Errores
403ForbiddenRequiere global_admin.
{"msg": "Acceso denegado"}