Documentación API

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).

GET /admin/users

Headers

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

403Forbidden

Requiere global_admin.

{"msg": "Acceso denegado"}

GET /admin/users/client/{client_id}

Lista usuarios de un cliente específico.

GET /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 Found

Cliente no encontrado.

{"error": "Cliente no encontrado"}

GET /admin/users/{user_id}

Obtiene los datos completos de un usuario.

GET /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 Found

Usuario no encontrado.

{"error": "Usuario no encontrado"}

POST /admin/users

Crea un usuario en cualquier cliente del sistema.

POST /admin/users

Headers

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 Request

Datos inválidos.

{"error": "Email ya registrado"}
409Conflict

Email duplicado.

{"error": "Ya existe un usuario con ese email"}

PUT /admin/users/{user_id}

Actualiza los datos de cualquier usuario del sistema.

PUT /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 Found

Usuario no encontrado.

{"error": "Usuario no encontrado"}

DELETE /admin/users/{user_id}

Elimina un usuario del sistema.

DELETE /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 Found

Usuario no encontrado.

{"error": "Usuario no encontrado"}

GET /admin/users/roles

Lista todos los roles disponibles en el sistema.

GET /admin/users/roles

Headers

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

403Forbidden

Requiere global_admin.

{"msg": "Acceso denegado"}

GET /admin/users/clients

Lista todos los clientes del sistema (para asignar usuarios).

GET /admin/users/clients

Headers

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

403Forbidden

Requiere 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).

PUT /admin/users/{user_id}/password

Headers

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 Found

Usuario no encontrado.

{"error": "Usuario no encontrado"}

GET /admin/users/stats

Estadísticas globales de usuarios del sistema.

GET /admin/users/stats

Headers

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

403Forbidden

Requiere global_admin.

{"msg": "Acceso denegado"}

© 2025 Devol. Todos los derechos reservados.