Transactions
Charging session history: start/stop, id token, duration, stop reason, and each transaction's full event log.
6 endpoints
Lists a charging_station's transaction history across every connector, paginated, most recently started first.
get/v1/charging-stations/{charging_station_id}/transactionsRequires a bearer token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| charging_station_id* | path | string<uuid> | ChargingStation id |
| page | query | integer<int32> | 1-indexed page number. Defaults to 1. |
| per_page | query | integer<int32> | Transactions per page, capped at 100. Defaults to 20. |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | ListChargerTransactionsResponse | A page of the charging_station's transactions across every connector, most recently started first |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 403 | ErrorBody | The caller is a member of the charging_station's organization but below the required role |
| 404 | ErrorBody | No charging_station with this id exists, or you cannot access its environment |
Lists a connector's transaction history, paginated, most recently started first.
get/v1/connectors/{connector_id}/transactionsRequires a bearer token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| connector_id* | path | string<uuid> | Connector id |
| page | query | integer<int32> | 1-indexed page number. Defaults to 1. |
| per_page | query | integer<int32> | Transactions per page, capped at 100. Defaults to 20. |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | ListTransactionsResponse | A page of the connector's transactions, most recently started first |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 404 | ErrorBody | No connector with this id exists, or you cannot access its environment |
Searches an environment's transaction history across every charging_station, paginated, most recently started first. Pass `started_after`/ `started_before` to bound the date range, and `q` to match either the charging_station's `charge_point_id` or the driver's id token value — both compose with each other and with pagination.
get/v1/environments/{environment_id}/transactionsRequires a bearer token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| environment_id* | path | string<uuid> | Environment id |
| page | query | integer<int32> | 1-indexed page number. Defaults to 1. |
| per_page | query | integer<int32> | Transactions per page, capped at 100. Defaults to 20. |
| started_after | query | string<date-time> | Only transactions that started at or after this instant. |
| started_before | query | string<date-time> | Only transactions that started at or before this instant. |
| q | query | string | Free-text filter, matched case-insensitively as a substring against
both the charging_station's charge_point_id and the driver's id token
value. Composes with the date range and with pagination
(page/per_page/total describe the filtered set). Omitted,
empty, or whitespace-only behaves as no filter at all. |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | ListEnvironmentTransactionsResponse | A page of the environment's transactions across every charging_station, most recently started first |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 404 | ErrorBody | No environment with this id exists, or you cannot access it |
Fetches a single transaction's detail by id.
get/v1/transactions/{transaction_id}Requires a bearer token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| transaction_id* | path | string<uuid> | Transaction id |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | TransactionSummary | The transaction |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 404 | ErrorBody | No transaction with this id exists, or you cannot access its environment |
Fetches a transaction's full event log, each event with its meter readings attached.
get/v1/transactions/{transaction_id}/eventsRequires a bearer token
Started/Updated*/Ended. Deliberately unpaginated, like
evses/connectors — a transaction's event count stays small.
Accepts an optional ?consistency_token= (FR-029/030): with one, this
waits up to 500ms for the transactions projection to catch up to it
before reading, and marks the response x-consistency-stale: true if
the wait expired first rather than failing or hanging. Without one —
every caller before this feature, and every caller who never learns
this exists — the read runs immediately, exactly as before.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| transaction_id* | path | string<uuid> | Transaction id |
| consistency_token | query | integer<int64> | A token a prior write echoed under x-consistency-token; waits briefly for the read model to catch up to it |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | ListTransactionEventsResponse | The transaction's full event log, in order, each with its meter readings |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 404 | ErrorBody | No transaction with this id exists, or you cannot access its environment |
Asks a transaction to be capped at the given ceiling.
put/v1/transactions/{transaction_id}/limitRequires a bearer token
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| transaction_id* | path | string<uuid> | Transaction id |
Request bodySetTransactionLimitRequest
| Field | Type | Description |
|---|---|---|
| max_energy_wh | number | null<double> | Energy ceiling in Wh. |
| max_soc_percent | integer | null<int32> | State-of-charge ceiling, 0-100. |
| max_time_seconds | integer | null<int32> | Time ceiling in seconds, counted from the transaction starting. |
Responses
| Status | Body | Description |
|---|---|---|
| 202 | SetTransactionLimitResponse | The ceiling is recorded and will be sent to the station on its next transaction event |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 404 | ErrorBody | No transaction with this id exists, or you cannot access its environment |
| 422 | ErrorBody | The request states no ceiling at all |