Remove what a network import created
Deletes the stations the import created that never connected and have no charging or message history, then the locations it created that no station is at. Other stations and locations stay (state kept, with the reason); updates are not undone. Replays with the same Idempotency-Key return the same result. Audited as network_import.reverted. Requires a team owner or admin of the project (projects:manage) signed in, or Ivora staff (signed in, or a staff key with stations:write); a migration:import key cannot revert. Errors: 404 import_not_found, 409 import_in_progress, 409 import_not_applied, 409 request_in_progress. See Errors and statuses.
Path parameters
- tenant_idintegerRequired
- import_idstringRequiredThe import's ID (the dry run's), imp_ and 32 hex digitsPattern
^imp_[0-9a-f]{32}$
Headers
- idempotency-keystringRequired
Returns · 200
- idstringRequired
- tenant_idintegerRequired
- migration_idstring | nullThe 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.
- sourceenumRequiredOne of
csv,ocpi_locations - originstring | nullRequiredThe fetched feed's host and path (no query string or token); null for an upload
- statusenumRequiredOne of
planned,applying,applied,partial,reverted,partially_reverted - identityenumRequiredproject: chargers keep their own IDs under the project's charger URL; global: each charger ID is a globally unique OCPP connection nameOne of
project,global - countsImportCountsRequired
Child attributes
- createintegerRequired
- updateintegerRequired
- skipintegerRequired
- errorintegerRequired
- totalsImportTotalsRequired
Child attributes
- locationsintegerRequiredLocations in the source
- stationsintegerRequiredChargers 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 | nullRequiredThe 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
- kindenumRequiredOne of
location,station,row - actionenumRequiredWhat 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 - stateenumRequiredplanned in a dry run; after apply pending, done, failed or skipped; after a revert reverted or keptOne of
planned,pending,done,failed,skipped,reverted,kept - sourcestring | nullRequiredWhere the row comes from: CSV line numbers, or the position in the OCPI document
- refstring | nullA location's reference: the CSV location_ref or the OCPI Location id, stored as its external_reference
- charger_idstring | null
- namestring | nullThe station's OCPP connection name in Ivora
- location_refstring | null
- location_idinteger | null
- station_idinteger | null
- connector_idsarray of integer | nullThe station's connector resource IDs, once applied
- evsesinteger | null
- connectorsinteger | null
- changesarray of stringThe fields an update changes
- codestring | null
- messagestring | null
- warningsarray of string
- migration_stateenum | nullA 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 | nullA 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 stringRequiredSteps outside this import: RFID tokens, tariffs, EVSE IDs for roaming, credentials
curl --fail-with-body -X POST "https://api.ivoracharge.com/v1/tenants/1042/imports/imp_0123456789abcdef0123456789abcdef/revert" \
-H "Authorization: Bearer $IVORA_API_KEY" \
-H "Idempotency-Key: order-2026-09-30-0001"{
"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"
]
}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.



