Log inTalk to us

List the project's migrations

get/v1/tenants/{tenant_id}/migrations
Requires an API key

Oldest first, with the caller's role in each (null for a key without one). Requires stations:read.

Path parameters

  • tenant_idintegerRequired

Query parameters

  • cursorstring | null
    next_cursor of the previous page.
    Pattern ^mig_[0-9a-f]{32}$
  • limitinteger
    Default 50 · Minimum 1 · Maximum 100

Returns · 200

  • dataarray of MigrationRequired
    Child attributes
    • idstringRequired
      mig_...
    • tenant_idintegerRequired
      The client's project.
    • project_namestring | nullRequired
      The project's name; null when the charging core cannot be read.
    • team_idstring | nullRequired
      The client: the team whose project the migration belongs to.
    • team_namestring | nullRequired
      The client team's name.
    • namestringRequired
    • source_platformstringRequired
    • statusenumRequired
      active; paused (imports and new work stop, rollbacks still go through); completed (a read-only record of the move); archived (closed for good, still readable).
      One of active, paused, completed, archived
    • settingsSettingsRequired
      Child attributes
      • rollback_window_daysintegerRequired
      • drain_per_secondintegerRequired
      • rollback_slabooleanRequired
        An Ivora rollback commitment is in force (rollback by Ivora within 4 business hours). Ivora support stays on the migration either way.
    • completed_atstring | nullRequired
      When the migration was completed; null while it is active or paused.
    • roleenum | nullRequired
      The caller's effective role: client (the project team's owners and admins), support (Ivora staff), partner (an invited partner team's owners, admins, developers and operators), observer (read only: the other members of those teams except billing, invited observer teams, Ivora platform support).
      One of client, support, partner, observer
    • scopeobject | nullRequired
      The caller's narrowing to some sites, or null for every site.
      Child attributes
      • location_idsarray of integerRequired
        The sites the team sees and acts on: the migration's chargers at these locations only.
    • permissionsarray of enumRequired
      What the caller may do here.
    • participantsarray of Participant | nullRequired
      Active and invited participants; null in a list's summary view.
      Child attributes
      • idstringRequired
        mpt_...
      • kindenumRequired
        client: the project's own team. support: Ivora support (team_id null). partner: an invited migration partner or installer. observer: an invited team that only reads.
        One of client, support, partner, observer
      • team_idstring | nullRequired
        The team; null for Ivora support and for an email invite nobody accepted yet.
      • team_namestring | nullRequired
      • statusenumRequired
        removed only in the answer that removed, revoked or declined it.
        One of invited, active, removed
      • invite_emailstring | nullRequired
        The address an email invite went to; shown to the client only, null otherwise.
      • scopeobject | nullRequired
        Narrowing to some sites; null for every site of the migration.
        Child attributes
        • location_idsarray of integerRequired
          The sites the team sees and acts on: the migration's chargers at these locations only.
      • removablebooleanRequired
        true for an invited team (partner or observer); false for the client and Ivora support, which always stay.
      • invited_byenum | nullRequired
        Who invited a partner or observer: the client, or Ivora support on the client's behalf. null for the client and Ivora support.
        One of client, support
      • invited_atstringRequired
      • expires_atstring | nullRequired
        An invite not accepted by then lapses (14 days).
      • accepted_atstring | nullRequired
    • countsobjectRequired
      Chargers per state, and total (of the caller's sites when narrowed).
    • runnersarray of Runner | nullRequired
      Runner credentials, revoked ones included. Empty for observers; null in a list's summary view.
      Child attributes
      • idstringRequired
      • labelstringRequired
        The charger proxy's name, also on its route reports.
      • prefixstringRequired
        The credential's first characters, to recognise it; never the secret.
      • scopesarray of stringRequired
      • created_bystringRequired
      • created_atstringRequired
      • last_seen_atstring | nullRequired
        Its last heartbeat, route poll or report.
      • healthybooleanRequired
        Seen within the last 60 seconds and not revoked.
      • last_revisioninteger | nullRequired
        The last route revision it pulled.
      • heartbeatobject | nullRequired
        Its last heartbeat body: nodes, upstreams, routed and connected counts.
      • revoked_atstring | nullRequired
    • runner_healthybooleanRequired
      A runner was seen within the last 60 seconds.
    • route_revisionintegerRequired
      The last route revision handed to the runners.
    • created_bystringRequired
    • created_atstringRequired
    • updated_atstringRequired
  • next_cursorstring | nullRequired
    Pass as cursor for the next page; null on the last one.
GET /v1/tenants/{tenant_id}/migrations
curl --fail-with-body "https://api.ivoracharge.com/v1/tenants/1042/migrations" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200JSON
{
  "data": [
    {
      "id": "id_0123456789abcdef",
      "tenant_id": 1042,
      "project_name": "string",
      "team_id": "team_0123456789abcdef",
      "team_name": "string",
      "name": "bay-01",
      "source_platform": "string",
      "status": "active",
      "settings": {
        "rollback_window_days": 1,
        "drain_per_second": 1,
        "rollback_sla": false
      },
      "completed_at": "2026-09-30T17:00:00Z",
      "role": "client",
      "scope": {
        "location_ids": [
          7
        ]
      },
      "permissions": [
        "migration:read"
      ],
      "participants": [
        {
          "id": "id_0123456789abcdef",
          "kind": "client",
          "team_id": "team_0123456789abcdef",
          "team_name": "string",
          "status": "invited",
          "invite_email": "string",
          "scope": {
            "location_ids": null
          },
          "removable": false,
          "invited_by": "client",
          "invited_at": "2026-09-30T17:00:00Z",
          "expires_at": "2026-09-30T17:00:00Z",
          "accepted_at": "2026-09-30T17:00:00Z"
        }
      ],
      "counts": {},
      "runners": [
        {
          "id": "id_0123456789abcdef",
          "label": "string",
          "prefix": "string",
          "scopes": [
            null
          ],
          "created_by": "string",
          "created_at": "2026-09-30T17:00:00Z",
          "last_seen_at": "2026-09-30T17:00:00Z",
          "healthy": false,
          "last_revision": 1,
          "heartbeat": {},
          "revoked_at": "2026-09-30T17:00:00Z"
        }
      ],
      "runner_healthy": false,
      "route_revision": 1,
      "created_by": "string",
      "created_at": "2026-09-30T17:00:00Z",
      "updated_at": "2026-09-30T17:00:00Z"
    }
  ],
  "next_cursor": "string"
}
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.