Log inTalk to us

Roll a pilot charger back to the previous platform

post/v1/tenants/{tenant_id}/migration/chargers/{station_id}/rollback
Requires an API key

Records a rollback that the charger proxy applies within seconds: it routes the charger back to the previous platform and closes its connection to Ivora, and the charger reconnects there by itself. Nothing is sent to the charger and nothing changes on Ivora's charging core. Always allowed, also while charging: a session running on Ivora then stays open on Ivora and is reconciled by hand. name must be the station's connection name (409 station_name_mismatch, details.name); reason is kept in the audit log and the event. Read the result and the reconnect status with GET .../migration/rollbacks/{rollback_id}; migration.charger_rolled_back is emitted once the proxy switched it and no connection to Ivora is open. Works while Ivora's charging core is unreachable (the station is read from the proxy's report). A rollback the proxy does not apply raises an on-call alert after ten minutes and expires after 24 hours; one Ivora staff moved forward again since is superseded. Needs stations:admin (team owners and admins, Ivora staff, API keys created with it). A retry with the same Idempotency-Key returns the same rollback, as it is now. Errors: 404 station_not_found, 409 migration_already_rolled_back, 409 migration_charger_not_proxied, 409 migration_rollback_pending, 409 station_name_mismatch. See Errors and statuses.

Path parameters

  • tenant_idintegerRequired
  • station_idintegerRequired
    Greater than 0

Headers

  • idempotency-keystringRequired

Request body

  • namestringRequired
    The station's OCPP connection name (name in station reads), typed to confirm; refused with 409 station_name_mismatch when it is another one (details.name), so a wrong station ID never moves another charger.
    1–100 characters
  • reasonstringRequired
    Why, for the record: kept with the rollback, in the audit log, the proxy's own audit and migration.charger_rolled_back.
    3–300 characters

Returns · 202

  • idstringRequired
    Ivora's identifier of this rollback (mrb_...).
  • tenant_idintegerRequired
  • station_idintegerRequired
  • namestringRequired
    The station's OCPP connection name.
  • statusenumRequired
    pending: recorded, waiting for the charger proxy to switch the route. applied_socket_open: the proxy routes the charger to the previous platform, but a connection to Ivora is still open; the proxy closes it and the rollback becomes applied (only then is the event emitted). applied: the proxy routes the charger to the previous platform and no connection to Ivora is open. failed: the proxy could not switch it (detail); ask again, or Ivora on-call rolls it back by hand. superseded: Ivora staff moved the charger to Ivora again after it was asked, so it was not applied. expired: the proxy did not apply it within 24 hours (it was unreachable); Ivora on-call rolls it back by hand.
    One of pending, applied_socket_open, applied, failed, superseded, expired
  • reconnectenum | nullRequired
    Whether the charger reconnected to the previous platform through the proxy, from the proxy's latest report: waiting_for_switch (pending), reconnecting (within two minutes of the switch), reconnected (a connection to the previous platform is up), not_connected (no connection two minutes after the switch), still_on_ivora (a connection to Ivora is still open, also while applied_socket_open), superseded (the charger was moved to Ivora again since), unknown (no proxy report since the switch). Null when failed, superseded or expired.
    One of waiting_for_switch, reconnecting, reconnected, not_connected, still_on_ivora, superseded, unknown
  • reasonstringRequired
  • requested_bystringRequired
    Who asked for it: user:<id>, key:<id> or app:<id>.
  • team_idstring | nullRequired
    The project's team.
  • sourceenumRequired
    tenant: the project's own administrators; ivora: Ivora staff.
    One of tenant, ivora
  • requested_atstringRequired
  • rolled_back_atstring | nullRequired
    When the proxy switched the route (its own clock), once applied.
  • settled_atstring | nullRequired
    When Ivora recorded the current status (the proxy's result, the socket closing, the supersession or the expiry).
  • detailstring | nullRequired
    The proxy's note on the result, such as why it failed.
  • event_idstring | nullRequired
    The migration.charger_rolled_back event, once applied.
  • migration_idstring | null
    The migration workspace of the station (/v1/migrations/{migration_id}), when it is in one.
POST /v1/tenants/{tenant_id}/migration/chargers/{station_id}/rollback
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/migration/chargers/1/rollback" \
  -H "Authorization: Bearer $IVORA_API_KEY" \
  -H "Idempotency-Key: order-2026-09-30-0001" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "bay-01",
  "reason": "string"
}'
Response · 202JSON
{
  "id": "id_0123456789abcdef",
  "tenant_id": 1042,
  "station_id": 1,
  "name": "bay-01",
  "status": "pending",
  "reconnect": "waiting_for_switch",
  "reason": "string",
  "requested_by": "string",
  "team_id": "team_0123456789abcdef",
  "source": "tenant",
  "requested_at": "2026-09-30T17:00:00Z",
  "rolled_back_at": "2026-09-30T17:00:00Z",
  "settled_at": "2026-09-30T17:00:00Z",
  "detail": "string",
  "event_id": "event_0123456789abcdef",
  "migration_id": "migration_0123456789abcdef"
}
Requires an approved production API keyProduction access starts with a request, a short meeting with Ivora and a card on file, after which Ivora staff grant your account access. How to request access
Try itproduction · api.ivoracharge.com

Paste a production api key (iv_live_…). Create keys in Developer tools. The key stays in this page's memory, is sent only to https://api.ivoracharge.com and clears when you reload. Test keys are refused.

POST is a write: you confirm the method, path and project before it is sent, with a generated Idempotency-Key.