Skip to main content
The sites API lets you model your physical infrastructure. Each site represents a location — a car park, depot, or forecourt — with a defined power capacity. You can link chargers to sites, attach energy assets, and retrieve a live summary of everything connected at that location.

Create a site

POST /api/v1/sites
name
string
required
Display name for the site (e.g. “King Street Depot”).
address
string
required
Full street address of the site.
max_power_kw
number
required
Maximum available grid power in kilowatts. Smart charging uses this value as the ceiling for load balancing.
lat
number
required
Latitude in decimal degrees.
lng
number
required
Longitude in decimal degrees.
curl -X POST "https://api.dynamo-csms.com/api/v1/sites" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "King Street Depot",
    "address": "14 King Street, Manchester, M2 6AQ",
    "max_power_kw": 150,
    "lat": 53.4808,
    "lng": -2.2426
  }'
{
  "site_id": "site_01HZ4K8XVPQR3TY5N6M",
  "name": "King Street Depot",
  "address": "14 King Street, Manchester, M2 6AQ",
  "max_power_kw": 150,
  "lat": 53.4808,
  "lng": -2.2426,
  "created_at": "2024-06-01T09:00:00Z",
  "charger_count": 0
}
site_id
string
required
Unique identifier for the created site.
name
string
Display name of the site.
address
string
Full street address.
max_power_kw
number
Configured grid power ceiling in kilowatts.
lat
number
Latitude.
lng
number
Longitude.
created_at
string
ISO 8601 timestamp of when the site was created.
charger_count
number
Number of chargers currently linked to this site.

List sites

GET /api/v1/sites Returns all sites in your organisation.
limit
number
default:"50"
Maximum number of sites to return. Max 200.
offset
number
default:"0"
Pagination offset.
curl "https://api.dynamo-csms.com/api/v1/sites?limit=10&offset=0" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "sites": [
    {
      "site_id": "site_01HZ4K8XVPQR3TY5N6M",
      "name": "King Street Depot",
      "address": "14 King Street, Manchester, M2 6AQ",
      "max_power_kw": 150,
      "lat": 53.4808,
      "lng": -2.2426,
      "charger_count": 8,
      "created_at": "2024-06-01T09:00:00Z"
    }
  ],
  "total": 1,
  "limit": 10,
  "offset": 0
}

Get a site

GET /api/v1/sites/{site_id}
site_id
string
required
The unique identifier of the site.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update a site

PATCH /api/v1/sites/{site_id} All fields are optional. Only the fields you include will be updated.
site_id
string
required
The unique identifier of the site.
name
string
New display name.
address
string
New address.
max_power_kw
number
Updated power ceiling. Smart charging rebalances automatically when this changes.
lat
number
Updated latitude.
lng
number
Updated longitude.
curl -X PATCH "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"max_power_kw": 200}'

Delete a site

DELETE /api/v1/sites/{site_id}
Deleting a site does not delete the chargers linked to it. Chargers are unlinked and remain in your fleet.
site_id
string
required
The unique identifier of the site.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M" \
  -H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.
POST /api/v1/sites/{site_id}/chargers/{charge_point_id}/link Associates a charger with a site so it participates in site-level power management and reporting.
site_id
string
required
The site to link the charger to.
charge_point_id
string
required
The OCPP identity of the charger.
curl -X POST "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/chargers/CP-001/link" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "site_id": "site_01HZ4K8XVPQR3TY5N6M",
  "charge_point_id": "CP-001",
  "linked_at": "2024-06-01T10:15:00Z"
}

DELETE /api/v1/sites/{site_id}/chargers/{charge_point_id}
site_id
string
required
The site to unlink the charger from.
charge_point_id
string
required
The OCPP identity of the charger.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/chargers/CP-001" \
  -H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.

Get site summary

GET /api/v1/sites/{site_id}/summary Returns a live overview of the site, including charger statuses and current power draw.
site_id
string
required
The unique identifier of the site.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/summary" \
  -H "Authorization: Bearer YOUR_API_KEY"
{
  "site_id": "site_01HZ4K8XVPQR3TY5N6M",
  "name": "King Street Depot",
  "max_power_kw": 150,
  "current_power_kw": 87.4,
  "chargers": {
    "total": 8,
    "online": 7,
    "charging": 5,
    "available": 2,
    "faulted": 1
  },
  "active_sessions": 5,
  "energy_assets": [
    {
      "asset_id": "asset_9XM3T",
      "type": "solar",
      "capacity_kw": 50,
      "current_output_kw": 22.1
    }
  ]
}
site_id
string
Site identifier.
max_power_kw
number
Configured power ceiling.
current_power_kw
number
Total power currently being drawn across all chargers at this site.
chargers
object
energy_assets
object[]
Energy assets attached to this site and their current output.

Add an energy asset

POST /api/v1/sites/{site_id}/energy-assets Attach a solar panel array, battery storage unit, or other energy asset to the site. Assets are factored into smart charging allocation calculations.
site_id
string
required
The site to add the asset to.
type
string
required
Asset type. Accepted values: solar, battery, wind, generator.
name
string
required
A human-readable label for the asset.
capacity_kw
number
required
Rated capacity of the asset in kilowatts.
metadata
object
Optional key/value pairs for custom asset data (e.g., manufacturer, model).
curl -X POST "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "solar",
    "name": "Rooftop PV Array",
    "capacity_kw": 50,
    "metadata": {
      "manufacturer": "SunPower",
      "install_date": "2023-03-15"
    }
  }'
{
  "asset_id": "asset_9XM3T",
  "site_id": "site_01HZ4K8XVPQR3TY5N6M",
  "type": "solar",
  "name": "Rooftop PV Array",
  "capacity_kw": 50,
  "created_at": "2024-06-01T11:00:00Z"
}

List energy assets

GET /api/v1/sites/{site_id}/energy-assets
site_id
string
required
The site to list assets for.
curl "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets" \
  -H "Authorization: Bearer YOUR_API_KEY"

Update an energy asset

PUT /api/v1/sites/{site_id}/energy-assets/{asset_id}
site_id
string
required
The site the asset belongs to.
asset_id
string
required
The unique identifier of the asset.
name
string
Updated display name.
capacity_kw
number
Updated rated capacity.
metadata
object
Updated metadata key/value pairs.
curl -X PUT "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets/asset_9XM3T" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capacity_kw": 60}'

Delete an energy asset

DELETE /api/v1/sites/{site_id}/energy-assets/{asset_id}
site_id
string
required
The site the asset belongs to.
asset_id
string
required
The unique identifier of the asset to remove.
curl -X DELETE "https://api.dynamo-csms.com/api/v1/sites/site_01HZ4K8XVPQR3TY5N6M/energy-assets/asset_9XM3T" \
  -H "Authorization: Bearer YOUR_API_KEY"
Returns 204 No Content on success.