GetCompositeSchedule
Returns the flattened schedule the station will actually follow, with all profiles resolved.
- Version
- OCPP 2.0.1
- Direction
- CSMS → Charge Point
- Functional block
- Smart Charging
GetCompositeSchedule also exists in OCPP 1.6, with a different payload. See the OCPP 1.6 version.
Unchanged in purpose from 1.6, and still the only reliable way to verify that stacking produced the limit you intended. Addressed by evseId rather than connector.
Request
| Field | Type | Required | Description |
|---|---|---|---|
evseId | integer | Required | The EVSE. 0 for the whole station. |
duration | integer | Required | How many seconds ahead to report. |
chargingRateUnit | ChargingRateUnitEnumType | Optional | A or W. |
json
[2, "19223201", "GetCompositeSchedule", {
"evseId": 1,
"duration": 86400,
"chargingRateUnit": "A"
}]Response
| Field | Type | Required | Description |
|---|---|---|---|
status | GenericStatusEnumType | Required | Accepted or Rejected. |
schedule | CompositeScheduleType | Optional | The combined schedule, with scheduleStart and chargingSchedulePeriod. |
statusInfo | StatusInfoType | Optional | Reason code. |
json
[3, "19223201", {
"status": "Accepted",
"schedule": {
"evseId": 1,
"duration": 86400,
"scheduleStart": "2026-09-09T10:00:00Z",
"chargingRateUnit": "A",
"chargingSchedulePeriod": [
{ "startPeriod": 0, "limit": 32.0 },
{ "startPeriod": 21600, "limit": 16.0 }
]
}
}]Implementation notes
Call this whenever a curtailment appears not to work. It resolves every profile and shows the result, which is faster than reasoning about stack levels by hand.
The schedule now nests under schedule rather than being spread across top-level fields as in 1.6.