Autenticación

Toda interacción con el API (excepto los endpoints de metadata pública) requiere un Bearer token obtenido con POST /api/v1/auth/login. El token es opaco para el cliente (un hash de 64 caracteres) y lleva implícita la empresa del usuario — eso convierte al API en multi-tenant sin que el cliente tenga que hacer nada extra.

Flujo completo

  1. Login → obtienes token y expires_at.
  2. Cada request lleva header Authorization: Bearer <token>.
  3. Refresh opcional cuando faltan menos de 4 h para expirar.
  4. Logout invalida el token del lado del servidor.

POST /auth/login

curl -X POST http://localhost/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"usuario": "cb", "password": "1234"}'

Respuestas posibles:

StatusSignificado
200Login exitoso, data.token disponible.
401Usuario o password incorrectos.
422Faltan campos requeridos en el body.

POST /auth/refresh

Idempotente: si al token le quedan más de 4 horas, retorna el mismo; si quedan menos, genera uno nuevo (otras 24h).

curl -X POST http://localhost/api/v1/auth/refresh \
  -H "Authorization: Bearer $TOKEN"

POST /auth/logout

Invalida el token actual. Con ?all=true cierra todas las sesiones del usuario en la empresa. Siempre responde 204 (fire-and-forget — no revela si el token existía o no, por seguridad).

curl -X POST "http://localhost/api/v1/auth/logout?all=true" \
  -H "Authorization: Bearer $TOKEN"

GET /auth/permissions

Lista módulos, modelos y acciones que el usuario puede ver/ejecutar. Se usa para construir menús dinámicos y filtrar botones de acción. La respuesta está cacheada en Memcached por 300 segundos.

curl http://localhost/api/v1/auth/permissions \
  -H "Authorization: Bearer $TOKEN"

Si un admin cambia el perfil del usuario y necesitas reflejarlo al instante, llama a:

curl -X POST http://localhost/api/v1/auth/permissions/invalidate \
  -H "Authorization: Bearer $TOKEN"