Display Messages
What a charging station should show on its screen, as a protocol-agnostic desired-state resource. OCPP 2.0.1/2.1 only — a 1.6 station has no equivalent and reports supported: false. A write records a target an existing refresh loop converges on its own schedule; it never talks to the station synchronously. User reads; Admin writes.
4 endpoints
Lists every display-message target this station has a stored row for.
get/v1/charging-stations/{chargingStationId}/display-messagesRequires a bearer token
Display messages have no fixed catalog: messageKey is caller-chosen,
so "every key" means every key set at least once via PUT, not a fixed
list of possible keys.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| chargingStationId* | path | string<uuid> | ChargingStation id |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | ListDisplayMessagesResponse | Every display-message target this station has a row for |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 403 | ErrorBody | The caller is a member of the station's organization but below the required role |
| 404 | ErrorBody | No charging station with this id exists, or the caller cannot access its environment |
| 429 | ErrorBody | The caller has exceeded its request budget. error is rateLimited. Wait Retry-After seconds before retrying — a prior successful response's own RateLimit-Remaining/RateLimit-Reset headers show this coming before it happens. |
| 500 | ErrorBody | An unexpected internal error. error is always internalError; message is deliberately the fixed string "an unexpected error occurred", never the real cause, which is logged server-side instead of being returned to the caller. |
| 503 | ErrorBody | ocpp is not configured in this environment |
Fetches one display-message target.
get/v1/charging-stations/{chargingStationId}/display-messages/{messageKey}Requires a bearer token
Returns the current target/actual state recorded for this
messageKey, including whether reconciliation has caught up yet.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| chargingStationId* | path | string<uuid> | ChargingStation id |
| messageKey* | path | string | The caller-chosen resource id |
Responses
| Status | Body | Description |
|---|---|---|
| 200 | DisplayMessageView | The display-message target's state |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 403 | ErrorBody | The caller is a member of the station's organization but below the required role |
| 404 | ErrorBody | No such charging station, no target with this key, or the caller cannot access the station's environment |
| 429 | ErrorBody | The caller has exceeded its request budget. error is rateLimited. Wait Retry-After seconds before retrying — a prior successful response's own RateLimit-Remaining/RateLimit-Reset headers show this coming before it happens. |
| 500 | ErrorBody | An unexpected internal error. error is always internalError; message is deliberately the fixed string "an unexpected error occurred", never the real cause, which is logged server-side instead of being returned to the caller. |
| 503 | ErrorBody | ocpp is not configured in this environment |
Records what this station should show under `messageKey`.
put/v1/charging-stations/{chargingStationId}/display-messages/{messageKey}Requires a bearer token
Replaces any previous content at that key. Requires Admin, not
User — this changes what a physical station's screen shows; reading
the resource stays User.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| chargingStationId* | path | string<uuid> | ChargingStation id |
| messageKey* | path | string | The caller-chosen resource id |
Request bodyDisplayMessageContentView
| Field | Type | Description |
|---|---|---|
| display | null | ComponentView | — |
| endDateTime | string | null<date-time> | Until what date-time this message should be shown. |
| message* | MessageContentView | The primary message content, shown when no better-matching
messageExtra entry exists. |
| messageExtra | array<MessageContentView> | Alternate-language (or alternate-format) versions of the same message. |
| priority* | MessagePriorityView | How this message competes for space on the station's display against
any other message currently shown.
This mirrors OCPP's MessagePriorityEnumType verbatim, including its
casing — these are the protocol's own values, not this platform's
vocabulary. |
| startDateTime | string | null<date-time> | From what date-time this message should be shown. Absent means "directly". |
| state | null | MessageStateView | — |
| transactionId | string | null | During which transaction this message should be shown — the station removes it once that transaction ends. Opaque: nothing requires it to name a transaction this platform has itself recorded. |
Responses
| Status | Body | Description |
|---|---|---|
| 202 | DisplayMessageView | The target was recorded; reconciliation happens out of band |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 403 | ErrorBody | The caller is a member of the station's organization but below the required role |
| 404 | ErrorBody | No such charging station, or the caller cannot access its environment |
| 429 | ErrorBody | The caller has exceeded its request budget. error is rateLimited. Wait Retry-After seconds before retrying — a prior successful response's own RateLimit-Remaining/RateLimit-Reset headers show this coming before it happens. |
| 500 | ErrorBody | An unexpected internal error. error is always internalError; message is deliberately the fixed string "an unexpected error occurred", never the real cause, which is logged server-side instead of being returned to the caller. |
| 503 | ErrorBody | ocpp is not configured in this environment |
Stops showing whatever is under `messageKey` on this station.
delete/v1/charging-stations/{chargingStationId}/display-messages/{messageKey}Requires a bearer token
This is the desired-state analogue of removal: the row stays (its
lastSyncedAt/syncError remain useful diagnostics), only target
becomes absent.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| chargingStationId* | path | string<uuid> | ChargingStation id |
| messageKey* | path | string | The caller-chosen resource id |
Responses
| Status | Body | Description |
|---|---|---|
| 202 | DisplayMessageView | The target was cleared; reconciliation happens out of band |
| 401 | ErrorBody | Missing, invalid, or expired bearer token |
| 403 | ErrorBody | The caller is a member of the station's organization but below the required role |
| 404 | ErrorBody | No such charging station, or the caller cannot access its environment |
| 429 | ErrorBody | The caller has exceeded its request budget. error is rateLimited. Wait Retry-After seconds before retrying — a prior successful response's own RateLimit-Remaining/RateLimit-Reset headers show this coming before it happens. |
| 500 | ErrorBody | An unexpected internal error. error is always internalError; message is deliberately the fixed string "an unexpected error occurred", never the real cause, which is logged server-side instead of being returned to the caller. |
| 503 | ErrorBody | ocpp is not configured in this environment |