🔐 Autenticación

POST /auth/login Pública

Autentica un usuario con email y contraseña. Retorna un token JWT válido para acceder a los endpoints protegidos.

📤 Request Body

Campo Tipo Requerido Descripción
email string ✅ Sí Email del usuario
password string ✅ Sí Contraseña del usuario
{
  "email": "usuario@ejemplo.com",
  "password": "micontraseña123"
}

📥 Response

{
  "success": true,
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "user": {
      "id": 1,
      "email": "usuario@ejemplo.com",
      "name": "Juan Pérez",
      "is_admin": false
    }
  }
}
POST /auth/register Pública

Completa el registro de un usuario pre-aprobado. El usuario debe existir previamente en el sistema (pre-registro).

📤 Request Body

Campo Tipo Requerido Descripción
email string ✅ Sí Email del usuario pre-registrado
password string ✅ Sí Nueva contraseña (mín. 6 caracteres)
name string ✅ Sí Nombre completo del usuario

📥 Response

{
  "success": true,
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "user": {
      "id": 1,
      "email": "usuario@ejemplo.com",
      "name": "Juan Pérez"
    }
  }
}

🎫 Gestión de Tokens

POST /token/validate Pública

Valida un token JWT y retorna información sobre su validez.

📤 Request Body

Campo Tipo Requerido Descripción
token string ✅ Sí Token JWT a validar

📥 Response

{
  "success": true,
  "data": {
    "valid": true,
    "user": {
      "user_id": 1,
      "email": "usuario@ejemplo.com",
      "is_admin": false
    }
  }
}
POST /token/decode Pública

Decodifica un token JWT sin validar su firma. Útil para debugging.

POST /token/user-info Pública

Obtiene información completa del usuario a partir de un token válido.

👤 Gestión de Usuarios

GET /users/profile 🔒 Protegido

Obtiene el perfil completo del usuario autenticado.

🔑 Headers

Header Valor Requerido
Authorization Bearer {token} ✅ Sí
POST /users/change-password 🔒 Protegido

Cambia la contraseña del usuario autenticado.

📤 Request Body

Campo Tipo Requerido Descripción
current_password string ✅ Sí Contraseña actual
new_password string ✅ Sí Nueva contraseña (mín. 6 caracteres)

⚙️ Administración

💡 Nota: Todos los endpoints de administración requieren permisos de administrador.
GET /admin/users 👑 Admin

Obtiene la lista de todos los usuarios del sistema.

GET /admin/users/{id} 👑 Admin

Obtiene información detallada de un usuario específico.

🛡️ Seguridad

Autenticación JWT

El microservicio utiliza JSON Web Tokens (JWT) para la autenticación:

Parámetro Valor Descripción
Algoritmo HS256 Algoritmo de firma
Expiración 24 horas Tiempo de vida del token
Issuer auth-service Emisor del token

Headers de Autenticación

Para acceder a endpoints protegidos, incluye el token en el header:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...

❌ Códigos de Error

Código Descripción Posible Causa
400 Bad Request Datos de entrada inválidos o faltantes
401 Unauthorized Token inválido, expirado o no proporcionado
403 Forbidden Usuario no tiene permisos para la operación
404 Not Found Recurso no encontrado
429 Too Many Requests Límite de rate limiting excedido
500 Internal Server Error Error interno del servidor