Autenticación
BistroApi utiliza JWT Bearer para autenticación. Todos los endpoints requieren un token válido, excepto el endpoint de emisión de tokens.
Flujo general
- El cliente envía credenciales a
POST /api/v1/Token. - La API responde con un JWT firmado y una fecha de expiración.
- El cliente incluye el token en el header
Authorizationde cada request posterior. - Cuando el token expira, el cliente repite el paso 1.
No hay refresh tokens. Cuando el JWT expira, la única forma de obtener uno nuevo es volver a enviar las credenciales al endpoint de login.
Obtener un token
Request
POST /api/v1/Token
Content-Type: application/json
{
"username": "[email protected]",
"password": "tu-contraseña"
}Response (200 OK)
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expiration": "2026-04-25T18:32:00Z"
}Las credenciales son las mismas que se usan para ingresar a BistroWeb. La API no gestiona un registro de usuarios propio: valida contra la misma base de identidades que la plataforma web.
La fecha de expiración se devuelve en formato ISO 8601 UTC.
Usar el token
Incluye el token en el header Authorization de cada request:
GET /api/v1/TransactionDetailReport?fromDate=2026-04-01&toDate=2026-04-22
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...Qué contiene el token
El JWT incluye, entre otros datos:
- El rol del usuario (
ApiUseroAdministrador), que determina qué versión de endpoints puede consumir. - Los códigos de comercio (
shop_code) habilitados para la cuenta. La API filtra automáticamente los datos para devolver solo los correspondientes a esos comercios.
No es necesario parsear el token desde el cliente: basta con reenviarlo en el header Authorization.
Roles y versiones
El rol asignado al usuario determina qué versión de endpoints puede consumir:
| Rol | Endpoints accesibles |
|---|---|
ApiUser | v1 |
Administrador | v2 |
Un token con rol ApiUser llamando a un endpoint de v2 devuelve 403 Forbidden, aunque sea técnicamente válido.
Expiración
Por defecto, los tokens expiran a los 2 días de emitidos. La fecha exacta se devuelve en el campo expiration del login, en formato ISO 8601 UTC.
Errores comunes
400 Bad Requesten el login — Cuerpo mal formateado o campos obligatorios faltantes.401 Unauthorized— Token no enviado, malformado o expirado. También se devuelve en el login cuando el usuario o la contraseña son inválidos (code: INVALID_CREDENTIALS).403 Forbidden— Token válido, pero el usuario no tiene el rol necesario para la versión solicitada.
Ejemplo completo
# 1. Obtener token
TOKEN=$(curl -s -X POST https://preprod-mx-api.bistrosoft.com/api/v1/Token \
-H "Content-Type: application/json" \
-d '{"username":"[email protected]","password":"tu-contraseña"}' \
| jq -r .token)
# 2. Consumir un endpoint
curl "https://preprod-mx-api.bistrosoft.com/api/v1/TransactionDetailReport?fromDate=2026-04-01&toDate=2026-04-22" \
-H "Authorization: Bearer $TOKEN"