Login

Setting Up Locations

The Flex Shape API groups every location by a zone, and optionally by segmentation dimension groups. The zone determines which price signal and optimization context apply to a location's assets. Dimensions let you split a zone's shape into groups you trade separately.

Zones are derived automatically from your connected assets, so you can read a flex shape per zone without any setup. Assign zones explicitly when a location's automatic placement needs correcting, and assign dimension groups when you want segmented shapes.

Copy linkAssigning a Location to a Zone

PUT /flex/locations/{locationId}
Content-Type: application/json

{
  "zoneId": "NO1"
}

zoneId must be a market bidding zone identifier — for example NO1, SE3, GER, BE. See Listing Zones below for the set of zones in which your client currently has assets.

Copy linkListing Zones

GET /flex/zones

Returns every zone where your client has connected vehicles.

[{ "id": "NO1" }, { "id": "NO2" }, { "id": "SE3" }]

Copy linkSegmentation Dimensions

A dimension is a named way of splitting a zone's portfolio — grid region, metering class, tariff group, customer segment. Each dimension contains a set of groups, and a location belongs to at most one group per dimension. Dimensions and their groups are configured by Enode and agreed upfront with your organization.

Dimensions prefixed with system: are managed by Enode and cannot be modified. system:asset_composition classifies each household (Enode user) as ev (at least an EV) or ev_pv (an EV plus physical or virtual solar) from its connected assets.

Once locations are assigned to groups, you can read the shape segmented by a dimension.

Copy linkAssigning a Location to a Group

PUT /flex/locations/{locationId}/dimensions/region
Content-Type: application/json

{
  "groupId": "seg_oslo"
}

Assigning a new group replaces the location's previous assignment in that dimension; repeating an assignment is idempotent.

Copy linkAssigning Many Locations at Once

For initial onboarding or bulk re-tagging, assign up to 10,000 locations in one atomic request:

PUT /flex/locations/dimensions/region/assignments
Content-Type: application/json

{
  "assignments": [
    {
      "locationId": "a39578d6-96f8-4f42-a6aa-6fdb1be06d03",
      "groupId": "seg_oslo"
    },
    {
      "locationId": "b7d2c1e0-4f3a-4b2c-9d1e-2f3a4b5c6d7e",
      "groupId": "seg_bergen"
    }
  ]
}

Each location may appear at most once. Validation failures reject the entire batch without partial writes; locations not included keep their current assignments.

Copy linkListing a Location's Group Assignments

GET /flex/locations/{locationId}/dimensions

{
  "data": [{ "dimensionId": "region", "groupId": "seg_oslo" }]
}

Use this to verify your tagging before reading segmented shapes.

Copy linkClearing a Group Assignment

DELETE /flex/locations/{locationId}/dimensions/region

The location's assets then contribute to the unassigned bucket of that dimension's segmented shape.

Copy linkEndpoint Reference

TaskMethodEndpoint
Assign location to zonePUT/flex/locations/{locationId}
List zonesGET/flex/zones
Get zoneGET/flex/zones/{zoneId}
Assign location to dimension groupPUT/flex/locations/{locationId}/dimensions/{dimensionId}
Batch assign dimension groupsPUT/flex/locations/dimensions/{dimensionId}/assignments
List location dimension groupsGET/flex/locations/{locationId}/dimensions
Clear location dimension groupDELETE/flex/locations/{locationId}/dimensions/{dimensionId}
Previous articleFlex Shape API
Next articlePrice Signals
Was this article helpful?