For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Dashboard
DocsAPI Reference
DocsAPI Reference
  • Docs
    • Welcome
    • Quickstart
    • Concepts
    • Common workflows
  • SDKs
    • Python
    • TypeScript
  • Authentication
    • Overview
  • Reference
    • API reference
    • Support
Dashboard
LogoLogo
On this page
  • Provision a charger in a new location
  • Bulk-provision chargers from a template
  • Spin up a CPO bundle from a preset
  • Run a bulk transaction command in one location
  • Inspect logs after a command
  • Update configuration and clear cache
  • Manage the local authorization list
  • Inject and clear a fault
Docs

Common workflows

Concrete examples for the flows most teams need first
||View as Markdown|
Was this page helpful?
Edit this page
Previous

Concepts

Next

Python SDK

Built with

Provision a charger in a new location

This is the most common setup sequence:

  1. list models for a brand
  2. create a location
  3. create a charger deployment bound to that location
$curl "$BASE_URL/catalog/brands/wallbox/models?page=1&limit=50" \
> -H "Authorization: Bearer $ACCESS_TOKEN"
$
$curl -X POST "$BASE_URL/locations" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "name": "Lyon Fleet Depot",
> "address": "8 Rue des Freres Lumiere",
> "city": "Lyon",
> "country": "FR",
> "coordinates": { "latitude": 45.764, "longitude": 4.8357 },
> "timezone": "Europe/Paris",
> "owner_name": "Private Fleet Operations",
> "public": false
> }'
$
$curl -X POST "$BASE_URL/chargers" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "identity": "CP-FAST-201",
> "brand_slug": "abb",
> "model_slug": "terra-184",
> "connector_type": "CCS2",
> "ws_url": "wss://example-ocpp-backend.test/ws",
> "ocpp_version": "OCPP2.0.1",
> "charge_point_name": "Fast Bay 01",
> "location_id": "4090477f-a416-4515-a302-97aa344a0a2a",
> "location_name": "Lyon Fleet Depot"
> }'

Bulk-provision chargers from a template

Use location_chargers.create with one or more ChargerGroup entries to stamp out many chargers at once.

$curl -X POST "$BASE_URL/locations/$LOCATION_ID/chargers" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '[
> {
> "template": {
> "brand_slug": "alfen",
> "model_slug": "alfen_eve_double_pg_line_de",
> "connector_type": "Type2",
> "ocpp_version": "OCPP1.6",
> "ws_url": "wss://ocpp.ocpplab.com",
> "identity_prefix": "SITE_01_",
> "template_name": "Bay"
> },
> "charger_ids": ["001", "002"]
> }
> ]'

Spin up a CPO bundle from a preset

$curl -X POST "$BASE_URL/ocpi/cpos" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "template": "small-urban-ac",
> "country_code": "FR",
> "party_id": "DEM",
> "name_prefix": "demo"
> }'

Run a bulk transaction command in one location

When charger_ids is omitted, location-scoped command routes target all chargers in the location.

$curl -X POST "$BASE_URL/locations/$LOCATION_ID/chargers/start-transaction" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "id_tag": "TAG-RFID-001",
> "evse_id": 1,
> "connector_id": 1
> }'

To target only a subset:

$curl -X POST "$BASE_URL/locations/$LOCATION_ID/chargers/start-transaction" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "charger_ids": ["dep-123", "dep-124"],
> "id_tag": "TAG-RFID-001",
> "evse_id": 1,
> "connector_id": 1
> }'

Inspect logs after a command

Use logs as the first verification tool after sending commands:

$curl "$BASE_URL/chargers/$CHARGER_ID/logs?start_date=2026-04-09T00:00:00Z&end_date=2026-04-09T23:59:59Z&event=BootNotification&limit=100&offset=0" \
> -H "Authorization: Bearer $ACCESS_TOKEN"

Typical response shape:

1{
2 "data": [
3 {
4 "direction": "cp_to_csms",
5 "action": "BootNotification",
6 "message": "[2,\"boot-001\",\"BootNotification\",{\"charge_point_vendor\":\"OCPPLAB\",\"charge_point_model\":\"SDK-DC-50\"}]",
7 "timestamp": "2026-04-09T09:30:00Z"
8 }
9 ],
10 "total": 1,
11 "limit": 1000,
12 "offset": 0
13}

Update configuration and clear cache

$curl -X POST "$BASE_URL/chargers/$CHARGER_ID/configuration" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "HeartbeatInterval": "30",
> "MeterValuesSampledInterval": "15"
> }'
$
$curl -X POST "$BASE_URL/chargers/$CHARGER_ID/cache/reset" \
> -H "Authorization: Bearer $ACCESS_TOKEN"

Manage the local authorization list

$curl -X POST "$BASE_URL/chargers/$CHARGER_ID/local-auth-list" \
> -H "Authorization: Bearer $ACCESS_TOKEN" \
> -H "Content-Type: application/json" \
> -d '{
> "list_version": 2,
> "entries": [
> { "id_tag": "TAG-RFID-001", "expiry_date": "2026-12-31T23:59:59Z" },
> { "id_tag": "TAG-RFID-002", "expiry_date": "2026-06-30T23:59:59Z" }
> ]
> }'

Inject and clear a fault

$curl -X POST "$BASE_URL/chargers/$CHARGER_ID/inject-fault?fault_type=OverCurrent&evse_id=1&connector_id=1" \
> -H "Authorization: Bearer $ACCESS_TOKEN"

Use the corresponding clear-fault route to return the charger to a healthy state after your test run.