Autenticación Interna
Endpoints de autenticación para la aplicación de Docmind. Usan JWT tokens enviados como cookie HTTP-only o en el header Authorization.
POST /api/auth/login
Autentica un usuario con email y password. Devuelve un JWT token para acceso a la API interna.
/api/auth/loginHeaders
Content-Type: application/json Body (JSON)
{
"email": "usuario@ejemplo.com",
"password": "tu_password"
} email: (obligatorio) Email del usuario.password: (obligatorio) Contraseña del usuario.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "usuario@ejemplo.com", "password": "tu_password"}' Respuesta exitosa
{
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"is_admin": false,
"user": {
"id": "user-uuid-123",
"nombre": "Juan Pérez",
"email": "usuario@ejemplo.com",
"role_name": "admin"
}
} El token JWT se envía también como cookie HTTP-only para uso desde el navegador.
Respuestas de error
400 Bad RequestFaltan campos obligatorios.
{"msg": "Se requiere email y contraseña"}401 UnauthorizedCredenciales incorrectas.
{"msg": "Credenciales incorrectas"}415 Unsupported Media TypeContent-Type no es JSON.
{"msg": "La solicitud debe tener formato JSON"}500 Internal Server ErrorError interno.
{"msg": "Error interno del servidor"}POST /api/auth/impersonar
Permite a un administrador global cambiar de cliente activo. Genera un nuevo token con el contexto del cliente seleccionado.
/api/auth/impersonarHeaders
Content-Type: application/json
Authorization: Bearer JWT_TOKEN Body (JSON)
{
"cliente_id": "62242e32-ba8f-4b59-9c4b-7867fc51a5f6"
} cliente_id: (obligatorio) ID del cliente al que se quiere cambiar.
Ejemplos
curl -X POST https://api-docmind.devol.es/api/auth/impersonar \
-H "Content-Type: application/json" \
-H "Authorization: Bearer JWT_TOKEN" \
-d '{"cliente_id": "62242e32-ba8f-4b59-9c4b-7867fc51a5f6"}' Respuesta exitosa
{
"access_token": "eyJhbGciOiJIUzI1NiIs...(nuevo)",
"is_admin": true,
"cliente_nombre": "Empresa Demo"
} Devuelve un nuevo JWT con el contexto del cliente seleccionado. Solo disponible para global_admin.
Respuestas de error
400 Bad RequestFalta cliente_id.
{"msg": "Se requiere cliente_id"}403 ForbiddenNo es administrador global.
{"msg": "Acceso denegado: se requiere rol de administrador global"}404 Not FoundCliente no encontrado.
{"msg": "Cliente no encontrado"}POST /api/auth/logout
Cierra la sesión del usuario. Invalida la cookie JWT.
/api/auth/logoutHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X POST https://api-docmind.devol.es/api/auth/logout \
-H "Authorization: Bearer JWT_TOKEN" Respuesta exitosa
{"msg": "Logout exitoso"} La cookie de sesión se elimina.
Respuestas de error
401 UnauthorizedToken inválido o ya expirado.
{"msg": "Token inválido"}GET /api/auth/user-info
Obtiene la información del usuario autenticado, incluyendo su rol y cliente activo.
/api/auth/user-infoHeaders
Authorization: Bearer JWT_TOKEN Ejemplos
curl -X GET https://api-docmind.devol.es/api/auth/user-info \
-H "Authorization: Bearer JWT_TOKEN" Respuesta exitosa
{
"id": "user-uuid-123",
"nombre": "Juan Pérez",
"email": "usuario@ejemplo.com",
"role_name": "admin",
"is_global_admin": false,
"cliente_id": "62242e32-ba8f-4b59-9c4b-7867fc51a5f6",
"cliente_nombre": "Empresa Demo"
} Información completa del usuario autenticado.
Respuestas de error
401 UnauthorizedToken inválido o expirado.
{"msg": "Token inválido"}404 Not FoundUsuario no encontrado.
{"msg": "Usuario no encontrado"}