Log inTalk to us

Read a migration's network import and its rows

get/v1/migrations/{migration_id}/imports/{import_id}
Requires an API key

As the project's read, and each station row's migration_state and charger_key. Needs migration:import over every site (client, support or partner; see the dry run). Only this migration's imports are reachable here, never another migration's or a project import. Errors: 404 import_not_found, 404 migration_not_found. See Errors and statuses.

Path parameters

  • import_idstringRequired
    The import's ID (the dry run's), imp_ and 32 hex digits
    Pattern ^imp_[0-9a-f]{32}$
  • migration_idstringRequired
    Pattern ^mig_[0-9a-f]{32}$

Returns · 200

  • idstringRequired
  • tenant_idintegerRequired
  • migration_idstring | null
    The migration this import belongs to (made under /v1/migrations/{migration_id}/imports): its applied stations join that migration as imported. null for a project import.
  • sourceenumRequired
    One of csv, ocpi_locations
  • originstring | nullRequired
    The fetched feed's host and path (no query string or token); null for an upload
  • statusenumRequired
    One of planned, applying, applied, partial, reverted, partially_reverted
  • identityenumRequired
    project: chargers keep their own IDs under the project's charger URL; global: each charger ID is a globally unique OCPP connection name
    One of project, global
  • countsImportCountsRequired
    Child attributes
    • createintegerRequired
    • updateintegerRequired
    • skipintegerRequired
    • errorintegerRequired
  • totalsImportTotalsRequired
    Child attributes
    • locationsintegerRequired
      Locations in the source
    • stationsintegerRequired
      Chargers in the source, each one station
    • evsesintegerRequired
    • connectorsintegerRequired
  • actorstringRequired
  • created_atstringRequired
  • updated_atstringRequired
  • applied_atstring | nullRequired
  • reverted_atstring | nullRequired
  • rowsarray of ImportRowRequired
    Child attributes
    • itemstring | nullRequired
      The row's ID in this import (L<n> for a location, S<n> for a station); null for a source row that could not be read
    • kindenumRequired
      One of location, station, row
    • actionenumRequired
      What apply does: create, update (change the existing resource), skip (identical, or removed in the source) or error (nothing is written for it)
      One of create, update, skip, error
    • stateenumRequired
      planned in a dry run; after apply pending, done, failed or skipped; after a revert reverted or kept
      One of planned, pending, done, failed, skipped, reverted, kept
    • sourcestring | nullRequired
      Where the row comes from: CSV line numbers, or the position in the OCPI document
    • refstring | null
      A location's reference: the CSV location_ref or the OCPI Location id, stored as its external_reference
    • charger_idstring | null
    • namestring | null
      The station's OCPP connection name in Ivora
    • location_refstring | null
    • location_idinteger | null
    • station_idinteger | null
    • connector_idsarray of integer | null
      The station's connector resource IDs, once applied
    • evsesinteger | null
    • connectorsinteger | null
    • changesarray of string
      The fields an update changes
    • codestring | null
    • messagestring | null
    • warningsarray of string
    • migration_stateenum | null
      A migration's import (migration_id): the station's state on the migration's board once it joined (imported first); null while it is not in this migration (not applied yet, or in another migration). null on a project import.
      One of imported, proxied, shadow, parity_checked, moved, rolling_back, rolled_back
    • charger_keystring | null
      A migration's import: the charger proxy's routing key the station joined with, <project>/<charger id> (or the global connection name); null while not in the migration.
  • follow_upsarray of stringRequired
    Steps outside this import: RFID tokens, tariffs, EVSE IDs for roaming, credentials
GET /v1/migrations/{migration_id}/imports/{import_id}
curl --fail-with-body "https://api.ivoracharge.com/v1/migrations/mig_0123456789abcdef0123456789abcdef/imports/imp_0123456789abcdef0123456789abcdef" \
  -H "Authorization: Bearer $IVORA_API_KEY"
Response · 200JSON
{
  "id": "id_0123456789abcdef",
  "tenant_id": 1042,
  "migration_id": "migration_0123456789abcdef",
  "source": "csv",
  "origin": "string",
  "status": "planned",
  "identity": "project",
  "counts": {
    "create": 1,
    "update": 1,
    "skip": 1,
    "error": 1
  },
  "totals": {
    "locations": 1,
    "stations": 1,
    "evses": 1,
    "connectors": 1
  },
  "actor": "string",
  "created_at": "2026-09-30T17:00:00Z",
  "updated_at": "2026-09-30T17:00:00Z",
  "applied_at": "2026-09-30T17:00:00Z",
  "reverted_at": "2026-09-30T17:00:00Z",
  "rows": [
    {
      "item": "string",
      "kind": "location",
      "action": "create",
      "state": "planned",
      "source": "string",
      "ref": "string",
      "charger_id": "charger_0123456789abcdef",
      "name": "bay-01",
      "location_ref": "string",
      "location_id": 7,
      "station_id": 1,
      "connector_ids": [
        1
      ],
      "evses": 1,
      "connectors": 1,
      "changes": [
        "string"
      ],
      "code": "string",
      "message": "string",
      "warnings": [
        "string"
      ],
      "migration_state": "imported",
      "charger_key": "string"
    }
  ],
  "follow_ups": [
    "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.