Autenticación
Zentto utiliza JSON Web Tokens (JWT) para autenticar las solicitudes a la API. Las integraciones externas también pueden usar API keys para acceso programático.
Para obtener un token JWT, enviar las credenciales al endpoint de login:
POST /api/auth/loginContent-Type: application/json
{ "email": "usuario@empresa.com", "password": "contraseña"}Respuesta exitosa
Sección titulada «Respuesta exitosa»{ "ok": true, "data": { "token": "eyJhbGciOiJIUzI1NiIs...", "refreshToken": "eyJhbGciOiJIUzI1NiIs...", "user": { "id": 1, "name": "Juan Pérez", "email": "usuario@empresa.com", "role": "Administrador" }, "expiresIn": 3600 }}Respuesta de error
Sección titulada «Respuesta de error»{ "ok": false, "message": "Credenciales inválidas"}La verificación de contraseña se realiza con bcrypt en Node.js. Las contraseñas nunca se envían ni almacenan en texto plano.
Usar el token
Sección titulada «Usar el token»Incluir el token en el header Authorization de cada solicitud:
GET /api/productsAuthorization: Bearer eyJhbGciOiJIUzI1NiIs...Si el token es inválido o ha expirado, la API responde con 401 Unauthorized.
Refresh token
Sección titulada «Refresh token»El token principal expira en 1 hora (configurable). Para obtener uno nuevo sin re-autenticar:
POST /api/auth/refreshContent-Type: application/json
{ "refreshToken": "eyJhbGciOiJIUzI1NiIs..."}Respuesta
Sección titulada «Respuesta»{ "ok": true, "data": { "token": "eyJhbGciOiJIUzI1NiIs...(nuevo)", "refreshToken": "eyJhbGciOiJIUzI1NiIs...(nuevo)", "expiresIn": 3600 }}El refresh token tiene una vida útil de 7 días. Cada vez que se usa, se genera uno nuevo y el anterior se invalida (rotación).
API keys
Sección titulada «API keys»Para integraciones de sistema a sistema que no involucran un usuario interactivo, se pueden usar API keys.
Crear una API key
Sección titulada «Crear una API key»- Navegar a Administración → Integración → API Keys.
- Clic en Nueva API Key.
- Asignar un nombre descriptivo y los permisos necesarios.
- El sistema genera la key (se muestra una sola vez).
Usar una API key
Sección titulada «Usar una API key»GET /api/productsX-API-Key: zk_live_abc123def456...Las API keys tienen los siguientes atributos:
| Atributo | Descripción |
|---|---|
| Nombre | Identificación descriptiva |
| Permisos | Módulos y acciones autorizadas |
| IP permitidas | Restricción por dirección IP (opcional) |
| Fecha de expiración | Caducidad automática (opcional) |
| Último uso | Fecha y hora del último request |
| Estado | Activa / Revocada |
Seguridad
Sección titulada «Seguridad»- Las contraseñas se hashean con bcrypt (salt + hash).
- Los tokens JWT se firman con un secreto configurado en el servidor.
- Las API keys se almacenan hasheadas en la base de datos.
- Cada intento fallido de login se registra en la bitácora de auditoría.
- Tras 5 intentos fallidos, la cuenta se bloquea temporalmente (15 minutos).
- Todas las comunicaciones van sobre HTTPS (TLS 1.2+).
Para invalidar la sesión actual:
POST /api/auth/logoutAuthorization: Bearer eyJhbGciOiJIUzI1NiIs...Esto invalida tanto el token como el refresh token asociado.