Virtual chargers
A bench charger leased and driven like a physical one through real OCPP (user-set OCPP URL and kW, plug, card taps, faults, reboot); no bill and no payment. Environments without a bench answer 409 bench_unavailable.
10 endpoints
- getList the workspace's virtual chargers/v1/virtual-chargersNewest first, without their screens (read one for its display).
- postLease a virtual charger/v1/virtual-chargersLeases a free OCPP bench charger (one per workspace and one per user; 409 pool exhausted with Retry-After when every charger is leased) and connects it where target says (GET /v1/sessions/targets; global when omitted): the project's per-project URL or a ready custom OCPP domain (as the bench's station p<project -ivora-bench, stations:write on target.tenant id), or a custom URL with its identity and optional password (signed-in users only, kept in memory and masked, every custom-URL guardrail and limit).
- getRead a virtual charger's screen/v1/virtual-chargers/{charger_id}What the charger's display shows: the connection (connecting, online, refused with reason), each connector's OCPP status, the transaction the target started, kW, kWh (from the charger's Wh), elapsed time, the running cost and price the target pushed, and its QR / checkout URL, with the latest display messages (redacted).
- postPlug the EV in/v1/virtual-chargers/{charger_id}/plugThe simulated EV plugs in (connector Preparing) and draws up to the lease's power once the target system starts a transaction (RemoteStartTransaction) or a card is accepted.
- postUnplug the EV/v1/virtual-chargers/{charger_id}/unplugThe EV leaves; a running transaction ends (StopTransaction reason EVDisconnected) and faults clear.
- postPress the charger's stop button/v1/virtual-chargers/{charger_id}/stopEnds the running transaction locally (StopTransaction reason Local); the EV stays plugged in.
- postTap an RFID card/v1/virtual-chargers/{charger_id}/rfidAs a real charger's reader: the charger sends Authorize with id tag and starts a transaction (StartTransaction) when the target accepts it and the EV is plugged in, in either order within the charger's ConnectionTimeOut (display.connection timeout s).
- postInject a fault/v1/virtual-chargers/{charger_id}/faultA fault from the plugged-in EV: rcd (GroundFailure), diode or error-e; unplug clears it.
- postReboot the charger/v1/virtual-chargers/{charger_id}/rebootA power cycle: the charger restarts and boots again at the same target (BootNotification).
- postRelease the virtual charger/v1/virtual-chargers/{charger_id}/releaseRestores the bench charger: the EV unplugs (ending a running transaction at the target), the route is removed and, after a project or custom target, the charger is factory reset; status releasing until that is done, then ended.