🇪🇸 EspañolAutenticaciónLogin (Obtener token)

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

CampoTipoRequeridoDescripción
usernamestringEmail o username del usuario
passwordstringContraseña del usuario
platformstringAPI, APP, PANEL, IOS, ANDROID (default: API)
codestringCódigo de verificación (requerido para PANEL, IOS, ANDROID)
otpstringCó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ódigoErrorDescripción
400DataInvalidExceptionCredenciales inválidas o plataforma no válida
400CodeMustBeRequiredExceptionCódigo requerido para PANEL/IOS/ANDROID
400CodeExpiredExceptionCódigo de verificación expirado
400OTPRequiredExceptionSe requiere código 2FA (usuario tiene MFA habilitado)
400InvalidOTPExceptionCó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:

  1. Envía username, password y platform normalmente.
  2. El servidor responde con OTPRequiredException.
  3. Reenvía la misma petición agregando el campo otp con el código de 6 dígitos del autenticador.
  4. 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

PlataformaDescripciónRequiere code
APIIntegración API externa
APPAplicación móvil principal
PANELPanel administrativo web
IOSAplicación iOS
ANDROIDAplicación Android