Skip to content

API — Introduction

La API de Zentto es una interfaz REST que expone toda la funcionalidad del ERP para integraciones externas, aplicaciones móviles y el propio frontend modular.

EntornoURL
Producciónhttps://api.zentto.net
Desarrollohttp://localhost:4000

Todas las rutas de la API tienen el prefijo /api:

https://api.zentto.net/api/auth/login
https://api.zentto.net/api/products
https://api.zentto.net/api/invoices

La API está construida con:

  • Node.js + Express + TypeScript.
  • Stored Procedures: toda la lógica de datos reside en SP (SQL Server o PostgreSQL).
  • Helpers de DB: callSp(), callSpOut(), callSpTx() en web/api/src/db/query.ts.
  • Dual database: soporta SQL Server y PostgreSQL, controlado por DB_TYPE en .env.

Todas las respuestas siguen un formato consistente:

{
"ok": true,
"data": { ... },
"message": "Operación exitosa"
}

En caso de error:

{
"ok": false,
"message": "Descripción del error",
"errors": ["detalle1", "detalle2"]
}
CódigoSignificado
200Operación exitosa
201Recurso creado
400Solicitud inválida (validación)
401No autenticado
403Sin permisos
404Recurso no encontrado
500Error interno del servidor
📸 Captura: Documentación Swagger/OpenAPI de la API

Los endpoints de listado soportan paginación:

GET /api/products?page=1&pageSize=20

La respuesta incluye metadatos de paginación:

{
"ok": true,
"data": [...],
"totalCount": 150,
"page": 1,
"pageSize": 20
}

Todas las fechas se manejan en UTC-0. El middleware datetime.ts convierte automáticamente:

  • Request: fechas del cliente se convierten a UTC antes de procesar.
  • Response: fechas UTC se convierten a la zona horaria de la empresa antes de enviar.

La API implementa límites de tasa para prevenir abuso:

ContextoLímite
General100 requests / minuto por IP
Autenticación10 intentos / minuto por IP
Exportaciones5 requests / minuto por usuario

Al exceder el límite, la API responde con código 429 Too Many Requests y un header Retry-After indicando los segundos de espera.

La especificación completa de la API se mantiene en web/contracts/openapi.yaml. Este contrato se actualiza antes de cualquier cambio en el frontend, garantizando que ambos lados estén sincronizados.

SecciónDescripción
AutenticaciónJWT, refresh tokens y API keys
EndpointsLista completa de endpoints por módulo