Login — Obtener token JWT
Autentica un usuario con credenciales. Devuelve un par de tokens access y refresh.
Login / Obtener Token
Autorización
Se requiere el header
x-api-key para autorización.Endpoint
POSThttps://dev.backend.colurs.co/token/Headers Requeridos
Content-Type: application/jsonAccept: application/jsonx-api-key: [API_KEY]Request Body
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Email o username del usuario | |
| password | string | Contraseña del usuario | |
| platform | string | API, APP, PANEL, IOS, ANDROID (default: API) | |
| code | string | Código de verificación (requerido para PANEL, IOS, ANDROID) | |
| otp | string | Código 2FA de 6 dígitos (si el usuario tiene MFA habilitado) |
Ejemplo cURL
curl -X POST https://dev.backend.colurs.co/token/ \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "x-api-key: [API_KEY]" \
-d '{
"username": "usuario@ejemplo.com",
"password": "Password123!",
"platform": "API"
}'Respuesta
response.json
{
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh":
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}Errores Posibles
| Código | Error | Descripción |
|---|---|---|
| 400 | DataInvalidException | Credenciales inválidas o plataforma no válida |
| 400 | CodeMustBeRequiredException | Código requerido para PANEL/IOS/ANDROID |
| 400 | CodeExpiredException | Código de verificación expirado |
| 400 | OTPRequiredException | Se requiere código 2FA (usuario tiene MFA habilitado) |
| 400 | InvalidOTPException | Código 2FA inválido |
⚠️
Para plataformas **PANEL**, **IOS** y **ANDROID** se requiere un `code` de verificación adicional enviado previamente al usuario.
Usar el token
⚠️
El access token expira en 15 minutos. Usa el endpoint de Refresh para obtener uno nuevo sin volver a hacer login.
Incluye estos headers en cada petición autenticada:
Content-Type: application/json
Accept: application/json
x-api-key: [API_KEY]
Authorization: Bearer [ACCESS_TOKEN]Flujo con 2FA (MFA)
Si el usuario tiene autenticación de dos factores habilitada (totp_secret en su perfil), el login requiere un paso adicional:
- Envía
username,passwordyplatformnormalmente. - El servidor responde con
OTPRequiredException. - Reenvía la misma petición agregando el campo
otpcon el código de 6 dígitos del autenticador. - Si el OTP es válido, recibes los tokens.
🔐
El código OTP usa TOTP (Time-based One-Time Password) con pyotp. Compatible con Google Authenticator, Authy y similares.
Plataformas soportadas
| Plataforma | Descripción | Requiere code |
|---|---|---|
API | Integración API externa | ❌ |
APP | Aplicación móvil principal | ❌ |
PANEL | Panel administrativo web | ✅ |
IOS | Aplicación iOS | ✅ |
ANDROID | Aplicación Android | ✅ |