Autenticación
La API acepta dos credenciales en la cabecera Authorization:
| Tipo | Formato | Uso |
|---|---|---|
| Token de API | Bearer lit_… | Integraciones de terceros (recomendado) |
| Sesión JWT | Bearer eyJ… | La aplicación web (caduca a las 8 h) |
Tokens de API
Se crean desde la aplicación web en API / Integraciones (roles de gestión; los usuarios estándar e instaladores no pueden emitirlos).
- El valor completo (
lit_+ 48 hex) solo se muestra al crearlo — guárdalo en un gestor de secretos. En el servidor solo se almacena su hash. - Un token hereda el rol y el ámbito de su propietario en el momento de cada llamada: revocar o desactivar al usuario inhabilita sus tokens.
- Revocación inmediata desde la misma pantalla.
curl https://api.linter-iot-stg.icent.digital/v1/devices?limit=5 \ -H "Authorization: Bearer lit_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Sesiones de usuario (JWT)
curl -X POST https://api.linter-iot-stg.icent.digital/v1/auth/login \ -H "Content-Type: application/json" \ -d '{"email":"usuario@empresa.com","password":"********"}'Respuesta: { "token": "eyJ…", "user": { … } }. El token caduca a las 8 horas.
Verificación en dos pasos (2FA)
Si la cuenta tiene activada la verificación en dos pasos, el login devuelve un reto en lugar del token y envía un PIN de 6 dígitos por email:
{ "twoFactorRequired": true, "challengeId": "665f…" }Se completa con:
curl -X POST https://api.linter-iot-stg.icent.digital/v1/auth/login/verify \ -H "Content-Type: application/json" \ -d '{"challengeId":"665f…","code":"482913"}'El PIN caduca en 10 minutos y admite 5 intentos.
Ámbito de datos (tenencia)
Cada credencial lleva un ámbito (ROOT, filial, distribuidor o cliente). La
API intersecta siempre ese ámbito con cada consulta en el servidor: no es
posible ver datos de otra rama comercial aunque se manipulen los parámetros.