API REST
El middleware expone una API REST en el puerto 8080 para control y monitoreo.
Base URL
Endpoints
Health Check
Response:
Estadísticas Generales
Response:
{
"queue": {
"waiting": 5,
"active": 2,
"completed": 1234,
"failed": 3,
"delayed": 0
},
"processed": 1234,
"errors": 3
}
Métricas de Flows
Response:
{
"articulos": {
"lastRun": "2025-01-08T10:30:00.000Z",
"avgDuration": 1234,
"p95Duration": 2100,
"totalRuns": 500,
"totalErrors": 2
},
"clientes": {
"lastRun": "2025-01-08T10:28:00.000Z",
"avgDuration": 456,
"p95Duration": 800,
"totalRuns": 100,
"totalErrors": 0
}
}
Errores Recientes
Response:
[
{
"id": "articulos-wms-ART001-1704710400000",
"entity": "articulos",
"adapter": "wms",
"pk": "ART001",
"error": "HTTP 400: Campo requerido",
"timestamp": "2025-01-08T10:30:00.000Z",
"attempts": 3
}
]
Estado de Flows
Response:
{
"articulos": {
"paused": false,
"runLimit": null,
"runCount": 0
},
"clientes": {
"paused": true,
"runLimit": null,
"runCount": 0
},
"pedidos": {
"paused": false,
"runLimit": 5,
"runCount": 3
}
}
Sync Endpoints
Forzar Sync de Flow
Ejecuta polling del flow (sin limpiar cache).
Ejemplo:
Response:
Sync de Item Individual
Sincroniza un solo item (ignora pause).
Ejemplo:
Response:
Reset Hashes de Flow
Borra todos los hashes del flow. El próximo poll re-sincroniza todo.
Ejemplo:
Response:
Reset Hash de Item
Borra hash de un item específico.
Ejemplo:
Resync de Flow
Reset + Sync inmediato (re-sincroniza todo).
Ejemplo:
Resync de Item
Reset hash de item + poll completo.
Ejemplo:
Control de Flows
Pausar Flow
Ejemplo:
Response:
Reanudar Flow
Ejemplo:
Response:
Pausar Todos
Reanudar Todos
Establecer Límite de Ejecuciones
El flow se auto-pausa después de N ejecuciones.
Ejemplo:
Response:
Quitar Límite
Ejemplo:
Test de Alertas
Dispara una notificación de prueba a todos los canales configurados en alerts.onJobFailed del flow (ignora el filtro destinations para permitir verificar conectividad de cada canal). Devuelve el resultado por canal.
Ejemplo:
Response 200 — todos los canales OK:
{
"flow": "clientes",
"results": [
{ "type": "email", "target": "ops@empresa.com", "ok": true },
{ "type": "slack", "target": "https://hooks.slack.com/...", "ok": true }
]
}
Response 207 — al menos un canal falló:
{
"flow": "clientes",
"results": [
{ "type": "email", "target": "ops@empresa.com", "ok": true },
{ "type": "webhook", "target": "https://hooks.miservicio.com/erp",
"ok": false, "error": "HTTP 404" }
]
}
Response 400 — flow sin alertas configuradas:
Ver detalles de configuración en Arquitectura · Alertas.
Códigos de Respuesta
| Código | Significado |
|---|---|
| 200 | Éxito |
| 207 | Multi-Status — algunos canales OK, otros fallaron (solo /test-alerts) |
| 400 | Petición inválida (ej. flow sin alertas configuradas en /test-alerts) |
| 404 | Flow no encontrado |
| 500 | Error interno |
Ejemplos de Uso
Workflow de Testing
# 1. Pausar flow de producción
curl -X POST http://localhost:8080/flow/articulos/pause
# 2. Probar con un solo item
curl -X POST http://localhost:8080/sync/articulos/ART001
# 3. Verificar resultado en logs
# 4. Si OK, habilitar con límite
curl -X POST http://localhost:8080/flow/articulos/limit/10
# 5. Monitorear 10 ejecuciones
# (se auto-pausa)
# 6. Si todo OK, quitar límite y reanudar
curl -X DELETE http://localhost:8080/flow/articulos/limit
curl -X POST http://localhost:8080/flow/articulos/resume