Log inTalk to us

List the project's migrating chargers and where each is routed

get/v1/tenants/{tenant_id}/migration/chargers
Requires an API key

The chargers the migration's charger proxy reports for this project, and those a site flip recorded: each one's route (ivora or previous_platform), the side its connection is open on, shadow mode, the recorded route QR scans follow, and its latest rollback with the reconnect status. Ordered by station ID; after is the last station ID of the previous page. Requires stations:read.

Path parameters

  • tenant_idintegerRequired

Query parameters

  • afterinteger
    Default 0 · Minimum 0
  • limitinteger
    Default 100 · Minimum 1 · Maximum 500

Returns · 200

  • dataarray of MigrationChargerRequired
    Child attributes
    • station_idintegerRequired
    • namestring | nullRequired
      The station's OCPP connection name; null when the station no longer exists on Ivora.
    • stateenumRequired
      on_ivora: the charger is routed to Ivora. on_previous_platform: routed to the previous platform (never moved, or rolled back). rollback_pending: a rollback is recorded and not finished (pending, or applied_socket_open).
      One of on_ivora, on_previous_platform, rollback_pending
    • routeenumRequired
      Where the charger is routed: the proxy's latest report, else the recorded route.
      One of ivora, previous_platform
    • proxiedbooleanRequired
      true when the charger proxy reports this charger, so it can be rolled back here; false for a charger only a site flip or a route report recorded.
    • connectedenum | nullRequired
      Which side the charger has a connection open on through the proxy, at its latest report; null when not proxied.
      One of ivora, previous_platform, both, none
    • proxy_reported_atstring | nullRequired
      When Ivora last received the proxy's report of this charger.
    • proxy_stalebooleanRequired
      true when that report is more than five minutes old: the proxy may be down, and a rollback waits.
    • shadowbooleanRequired
      The station is in shadow mode: the previous platform controls it and Ivora only observes.
    • recorded_routeobject | nullRequired
      The route Ivora recorded from site flips and route reports, which QR sticker scans follow; null when none is recorded.
      Child attributes
      • currentenumRequired
        The side QR sticker scans follow.
        One of ivora, previous_platform
      • flipped_atstringRequired
      • sourcestringRequired
        site_flip (a site flip record) or charger_route (a charger's own route report or rollback).
      • referencestring | nullRequired
    • rollback_availablebooleanRequired
      Whether POST .../rollback would be accepted now: proxied, routed to or connected on Ivora, and no rollback pending or applied_socket_open.
    • last_rollbackobject | nullRequired
      Child attributes
      • 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.
  • next_cursorinteger | nullRequired
    Pass as after for the next page; null on the last one.
GET /v1/tenants/{tenant_id}/migration/chargers
curl --fail-with-body "https://api.ivoracharge.com/v1/tenants/1042/migration/chargers" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200JSON
{
  "data": [
    {
      "station_id": 1,
      "name": "bay-01",
      "state": "on_ivora",
      "route": "ivora",
      "proxied": false,
      "connected": "ivora",
      "proxy_reported_at": "2026-09-30T17:00:00Z",
      "proxy_stale": false,
      "shadow": false,
      "recorded_route": {
        "current": "ivora",
        "flipped_at": "2026-09-30T17:00:00Z",
        "source": "string",
        "reference": "string"
      },
      "rollback_available": false,
      "last_rollback": {
        "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"
      }
    }
  ],
  "next_cursor": 1
}
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.