Locations (CPO)

Push locations, EVSEs, and connectors to ChargeIndia Hub.

Hub role: RECEIVER (CPO push)

When you update locations on the Hub, routed eMSPs receive the same PUT/PATCH on their registered locations RECEIVER URL. See Async Delivery for how Hub forwards your pushes.

Endpoints

MethodPathDescription
PUT/ocpi/2.2.1/locations/{cc}/{pid}/{location_id}Create or replace location
PATCH/ocpi/2.2.1/locations/{cc}/{pid}/{location_id}Partial location update
PUT.../{location_id}/{evse_uid}Create or replace EVSE
PATCH.../{location_id}/{evse_uid}Partial EVSE update
PUT.../{evse_uid}/{connector_id}Create or replace connector
PATCH.../{evse_uid}/{connector_id}Partial connector update

Use your own CPO country_code and party_id in URL paths and object bodies. Do not use Hub (CIH) party ids. See Hub Receiver Identity (CPO).

Push example

PUT /ocpi/2.2.1/locations/IN/ABC/LOC001
Authorization: Token {cpo-token}
Content-Type: application/json

{
  "country_code": "IN",
  "party_id": "ABC",
  "id": "LOC001",
  "publish": true,
  "name": "Station Alpha",
  "address": "123 Main Road",
  "city": "Bengaluru",
  "country": "IND",
  "coordinates": { "latitude": "12.9716", "longitude": "77.5946" },
  "evses": [ ... ],
  "last_updated": "2025-06-23T10:00:00.000Z"
}

publish: false

Locations with publish: false are stored on the Hub but not forwarded to eMSP receivers. eMSP GET /locations also excludes unpublished locations. See Async Delivery for fan-out details.

Hub pull from CPO (admin)

Operators can trigger a manual sync from your SENDER GET /locations endpoint via the admin API (POST /admin/v1/parties/{id}/pull/locations). The Hub paginates results and upserts locations in place. Incremental pulls use date_from from the last successful run unless a full pull is requested.

Rate limit

Location list: 200 requests/minute per party.

OCPI spec

See OCPI 2.2.1 Locations module for full Location, EVSE, and Connector objects.