El módulo de autenticación es el punto de entrada al sistema Tiendas Mi Cholo. No requiere ningún token previo — basta con enviar credenciales válidas para recibir un par de tokens JWT firmados con HMAC-SHA256. El access token expira en 24 horas y el refresh token en 7 días. Todas las demás rutas de la API exigen que el access token viaje en la cabeceraDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/interezante456-pixel/Miercoles-Proyecto/llms.txt
Use this file to discover all available pages before exploring further.
Authorization: Bearer <token>.
/api/auth/** es la única ruta pública del sistema. Cualquier otra petición sin token válido recibirá 401 Unauthorized.POST /api/auth/login
Autentica al usuario con username y contraseña, y retorna los tokens JWT junto con el perfil básico del usuario.Request body
Nombre de usuario registrado en el sistema. Case-sensitive.
Contraseña del usuario. Se valida contra el hash BCrypt almacenado.
Response fields — 200 OK
Access token JWT firmado con HMAC-SHA256. Válido por 24 horas (
86 400 000 ms). Incluye claims sub (username), roles y exp.Refresh token JWT. Válido por 7 días (
604 800 000 ms). Usar para obtener nuevos access tokens cuando el anterior expire.Nombre de usuario autenticado.
Nombre de pila del usuario.
Apellido del usuario.
Correo electrónico registrado.
Rol asignado al usuario. Uno de:
ADMIN, VENDEDOR, ALMACENERO.Claims del JWT
El payload del token decodificado contiene:| Claim | Descripción |
|---|---|
sub | username del usuario |
roles | Array de roles p.ej. ["ROLE_ADMIN"] |
iat | Timestamp de emisión (epoch segundos) |
exp | Timestamp de expiración (epoch segundos) |
Ejemplo
- cURL
- Request JSON
Usar el token en peticiones subsecuentes
Una vez obtenido el token, inclúyelo como cabeceraAuthorization en cada llamada a rutas protegidas:
Códigos de error
| Código | Descripción | Causa habitual |
|---|---|---|
401 Unauthorized | Credenciales inválidas | Username o password incorrectos |
400 Bad Request | Validación fallida | Campos username o password ausentes |