LAVALO es una plataforma abierta que permite a cualquier fabricante de equipos de lavado vehicular integrar sus máquinas. Este documento define el protocolo de integración — el contrato bidireccional entre LAVALO y las máquinas del fabricante.
Flujo de un lavado:
Cliente escanea QR → Elige programa → Paga
↓
LAVALO API → POST /machines/:id/start → Máquina del fabricante
↓
Lavado en curso (countdown)
↓
Notificación al cliente ← LAVALO API ← Webhook "finished" ← Máquina termina
El Simulador FOMO (ver panel) es la implementación de referencia del protocolo. La marca ficticia "FOMO Equipment" con 3 modelos demuestra cómo integrar máquinas reales.
Cada fabricante recibe un API Token único que identifica la marca y da acceso a sus máquinas habilitadas. Todos los endpoints autenticados requieren:
Authorization: Bearer <API_TOKEN>
Usá este token para probar los endpoints con las máquinas FOMO:
Marca: FOMO Equipment | País: UY | API Version: 1.0 | Máquinas: 6
curl -s https://simulator.lavalo.mx/machines \ -H "Authorization: Bearer fomo-live-token-2026"
| Status | Error | Causa |
|---|---|---|
401 | Token requerido | Falta el header Authorization |
401 | Token inválido | Token no reconocido |
403 | Sin acceso | La máquina no pertenece a tu marca |
Con el token FOMO tenés acceso a estas 6 máquinas:
curl -s https://simulator.lavalo.mx/machines \ -H "Authorization: Bearer fomo-live-token-2026"
[
{
"id": "FOMO-TUN-001",
"name": "Túnel de Lavado #1",
"type": "tunnel",
"brandId": "fomo",
"model": "FW-100",
"status": "idle",
"program": null,
"duration": 0,
"timeLeft": 0,
"startedAt": null,
"operationId": null,
"completedCount": 0
},
...
]
curl -s https://simulator.lavalo.mx/machines/FOMO-TUN-001/status \ -H "Authorization: Bearer fomo-live-token-2026"
{
"id": "FOMO-TUN-001",
"name": "Túnel de Lavado #1",
"type": "tunnel",
"status": "idle",
"program": null,
"timeLeft": 0,
"completedCount": 3
}
curl -s https://simulator.lavalo.mx/machines/FOMO-TUN-001/info \ -H "Authorization: Bearer fomo-live-token-2026"
{
"machineId": "FOMO-TUN-001",
"brand": "FOMO Equipment",
"model": "FW-100",
"modelName": "TunnelPro 3000",
"type": "tunnel",
"capabilities": ["cold_water", "hot_water", "foam", "wax", "drying"],
"programs": [...],
"firmwareVersion": "2.1.0",
"apiVersion": "1.0"
}
curl -s -X POST https://simulator.lavalo.mx/machines/FOMO-TUN-001/start \
-H "Authorization: Bearer fomo-live-token-2026" \
-H "Content-Type: application/json" \
-d '{
"program": "Estándar",
"duration": 300,
"operationId": "op-uuid-123"
}'
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
program | string | sí | Nombre del programa: Básico, Estándar, Premium, Completo |
duration | number | no | Duración en segundos (default: según programa) |
operationId | string | no | ID de la operación en LAVALO (para tracking) |
{ "ok": true, "machine": { "id": "FOMO-TUN-001", "status": "washing", "program": "Estándar", ... } }
| Status | Error | Causa |
|---|---|---|
400 | machine_busy | La máquina ya está lavando |
404 | not_found | Máquina no existe |
curl -s -X POST https://simulator.lavalo.mx/machines/FOMO-TUN-001/stop \ -H "Authorization: Bearer fomo-live-token-2026"
{ "ok": true, "machine": { "id": "FOMO-TUN-001", "status": "idle", ... } }
curl -s https://simulator.lavalo.mx/brand \ -H "Authorization: Bearer fomo-live-token-2026"
{
"brandId": "fomo",
"name": "FOMO Equipment",
"country": "UY",
"apiVersion": "1.0",
"models": {
"FW-100": { "name": "TunnelPro 3000", "type": "tunnel", "capabilities": [...] },
"FV-200": { "name": "VacuumMax 500", "type": "vacuum", "capabilities": [...] },
"FD-300": { "name": "DryWind 200", "type": "dryer", "capabilities": [...] }
},
"machines": [...]
}
curl -s https://simulator.lavalo.mx/programs
[
{ "id": "basico", "name": "Básico", "duration": 180, "capabilities": ["cold_water"], "suggestedPrice": 15.00 },
{ "id": "estandar", "name": "Estándar", "duration": 300, "capabilities": ["cold_water","foam"], "suggestedPrice": 22.00 },
{ "id": "premium", "name": "Premium", "duration": 480, "capabilities": ["hot_water","foam","wax"], "suggestedPrice": 38.00 },
{ "id": "completo", "name": "Completo", "duration": 720, "capabilities": ["hot_water","foam","wax","drying","underbody"], "suggestedPrice": 72.00 }
]
La máquina envía eventos a LAVALO vía HTTP POST. En producción, el fabricante configura la URL del webhook de LAVALO.
Authorization: Bearer <API_TOKEN> Content-Type: application/json X-Machine-Id: FOMO-TUN-001 X-Event-Type: machine.finished X-Timestamp: 2026-04-03T01:00:00Z
Enviado cada 30 segundos. Confirma que la máquina está online.
{
"event": "machine.heartbeat",
"machineId": "FOMO-TUN-001",
"status": "idle",
"metrics": { "temperature": 25.5, "waterPressure": 3.2, "waterLevel": 85 },
"timestamp": "2026-04-03T01:00:00Z"
}
Cuando la máquina confirma que arrancó el lavado.
{
"event": "machine.started",
"machineId": "FOMO-TUN-001",
"operationId": "op-uuid-123",
"program": "Estándar",
"duration": 300,
"timestamp": "2026-04-03T01:00:00Z"
}
Cada 30 segundos durante el lavado.
{
"event": "machine.progress",
"machineId": "FOMO-TUN-001",
"operationId": "op-uuid-123",
"phase": "soap",
"progress": 65,
"timeLeft": 105,
"timestamp": "2026-04-03T01:02:00Z"
}
Cuando el lavado termina exitosamente.
{
"event": "machine.finished",
"machineId": "FOMO-TUN-001",
"operationId": "op-uuid-123",
"program": "Estándar",
"actualDuration": 298,
"metrics": { "waterUsedLiters": 45.2, "energyUsedKwh": 1.8 },
"timestamp": "2026-04-03T01:05:00Z"
}
Cuando ocurre un error.
{
"event": "machine.error",
"machineId": "FOMO-TUN-001",
"operationId": "op-uuid-123",
"errorCode": "E001",
"errorMessage": "Presión de agua baja",
"severity": "critical",
"timestamp": "2026-04-03T01:03:00Z"
}
┌───────────┐
┌───→│ IDLE │←───────────────────┐
│ │ (libre) │ │
│ └─────┬─────┘ │
│ │ POST /start │ auto-reset (10s)
│ ▼ │
│ ┌───────────┐ ┌──────┴──────┐
│ │ WASHING │────────────→│ FINISHED │
│ │ (lavando) │ timeLeft=0 │ (terminado) │
│ └─────┬─────┘ └─────────────┘
│ │ error
│ ▼
│ ┌───────────┐
└────│ ERROR │
│ (falla) │
└───────────┘
Transiciones válidas:
idle → washing (POST /start)
washing → finished (countdown llega a 0)
washing → idle (POST /stop — emergencia)
washing → error (falla de hardware)
finished → idle (auto-reset después de 10s)
error → idle (reset manual)
Cada fabricante se registra con un perfil que describe su marca, modelos, y capabilities.
| Campo | Valor |
|---|---|
| Brand ID | fomo |
| Nombre | FOMO Equipment |
| País | Uruguay (UY) |
| API Version | 1.0 |
| Modelo | Nombre | Tipo | Capabilities |
|---|---|---|---|
FW-100 | TunnelPro 3000 | tunnel | cold_water, hot_water, foam, wax, drying |
FV-200 | VacuumMax 500 | vacuum | interior_vacuum, fragrance |
FD-300 | DryWind 200 | dryer | drying |
| ID | Descripción |
|---|---|
cold_water | Agua fría |
hot_water | Agua caliente |
foam | Espuma activa |
wax | Cera protectora |
drying | Secado por aire |
underbody | Lavado de chasis |
wheels | Lavado de ruedas |
interior_vacuum | Aspirado interior |
fragrance | Aromatización |
| Código | Descripción | Severidad |
|---|---|---|
E001 | Presión de agua baja | critical |
E002 | Falla en bomba de agua | fatal |
E003 | Nivel de jabón bajo | warning |
E004 | Falla en motor de cepillos | critical |
E005 | Sensor de presencia fallido | critical |
E006 | Sobrecalentamiento | fatal |
E010 | Timeout de comunicación | warning |
E011 | Falla de red | warning |
E020 | Nivel de cera bajo | warning |
E099 | Error desconocido | critical |
Antes de conectar máquinas reales a LAVALO, el fabricante debe:
# 1. Verificar autenticación
curl -s https://simulator.lavalo.mx/machines \
-H "Authorization: Bearer fomo-live-token-2026"
# 2. Iniciar un lavado
curl -s -X POST https://simulator.lavalo.mx/machines/FOMO-TUN-001/start \
-H "Authorization: Bearer fomo-live-token-2026" \
-H "Content-Type: application/json" \
-d '{"program":"Básico","duration":180}'
# 3. Verificar estado
curl -s https://simulator.lavalo.mx/machines/FOMO-TUN-001/status \
-H "Authorization: Bearer fomo-live-token-2026"
# 4. Parada de emergencia
curl -s -X POST https://simulator.lavalo.mx/machines/FOMO-TUN-001/stop \
-H "Authorization: Bearer fomo-live-token-2026"
LAVALO — Protocolo de Integración de Máquinas v1.0 | Abril 2026
Volver al Panel | lavalo.mx