Skip to navigation

Wash API Overview

View as Markdown

Wash API

Default listen port is 4444. There is no application authentication — restrict access with firewall / VLAN.

Base URL

http://{controller_ip}:{port}

Endpoint Groups

GroupDescription
ConnectionConnectivity checks and API/controller version info
Vehicle StatusPhoto-eye / vehicle processing state (MCWW only)
Wash OperationsSend wash packages and read wash counts
Tunnel ControlPause/restart, wetdown, conveyor request, stall on/off
Hot DollyToggle Hot Dolly (Washlink Off is unsupported)
Grand Entrance ArchPackage / entrance / instructional lights (MCWW only)
SystemOutput sync and asset map (MCWW only)
DiagnosticsOps dumps gated by DIAGNOSTIC_MODE=true
DeprecatedLegacy conveyor endpoints — use ConveyorRequest / PauseTunnel

Mode matrix (same URL ≠ same behavior)

PathMCWWWashlink
POST /ConveyorRequestLive Modbus conveyor requestLive Snap7 start conveyor
POST /ConveyorOn|Off|AutoDEPRECATED / JSON 500Same — use ConveyorRequest / PauseTunnel
POST /HotDollyOnCoil onSnap7 send roller
POST /HotDollyOffCoil off400 unsupported (no PLC equivalent)
POST /sendWashOptional WASH_MAP / WASH_MAP_CONTROLLER_TO_POS; response WashPackage / listsREVERSE_WASH_MAP; BaseWash 1–20, Upsell/Override 1–10; same response keys. Stacker disabled → JSON 500
GET /GetWashCountsLength-16 raw; zero-padded parsed; midnight_local; 501 if no DTD (e.g. C6000)Washes 21, Upsells/Overrides 10; zero-padded parsed; controller_lifetime
GET /ping_controlleronline, site_code, controller_version_numberonline, null site/version, plus system_status
Vehicle / arch / stall / asset map / output syncYes404
/washlink/* diagnostics404Gated by DIAGNOSTIC_MODE

Wash maps and ranges

MCWW

/sendWash body codes are whatever the POS sends. Define translation with exactly one of:

  • WASH_MAP — POS → controller
  • WASH_MAP_CONTROLLER_TO_POS — controller → POS (inverted at startup)

Omit both (or set {}) for direct writes. When a map is active: POS key hit → mapped value; else in-range controller codes that are not reserved map targets are accepted as raw fallback.

Verify live ranges with GET /get_controller_version (BaseWash_*, Upsell_*, Override_*). Series bands include C1000, C4, C5000, C6000, and C7000 (New in 2.4).

Uses REVERSE_WASH_MAP (no raw fallback). Body ranges: BaseWash 1–20; UpsellList / OverrideList 1–10. Success JSON matches MCWW: WashPackage, UpsellList, OverrideList.

Wash counts (New in 2.4)

GET /GetWashCounts returns wash / upsell / override tallies:

{
"raw": { "Washes": [], "Upsells": [], "Overrides": [] },
"parsed": {
"Washes": { "Wash_01": 0 },
"Upsells": { "Upsell_01": 0 },
"Overrides": { "Override_01": 0 }
},
"reset_policy": "midnight_local | controller_lifetime"
}

Both modes use 2-digit zero-padded parsed keys so lexicographic order matches numeric order.

Authentication

Closed LAN only. No request authentication. CORS allows all origins for LAN browser clients — do not expose to the public internet.

Error Handling

Handled domain failures return JSON:

{ "message": "...", "error": "optional_code" }

Common status codes:

  • 200 — Success (endpoint-specific body)
  • 400 — Client / domain error (WashError, validation, unsupported)
  • 403 — Diagnostic mode disabled
  • 404 — Endpoint not available in the active controller mode
  • 500 — Internal error or deprecated conveyor stubs
  • 501 — Wash counts not configured for this MCWW series