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

FieldTypeRequiredDescription
evseIdintegerRequiredThe EVSE. 0 for the whole station.
durationintegerRequiredHow many seconds ahead to report.
chargingRateUnitChargingRateUnitEnumTypeOptionalA or W.
json
[2, "19223201", "GetCompositeSchedule", {
  "evseId": 1,
  "duration": 86400,
  "chargingRateUnit": "A"
}]

Response

FieldTypeRequiredDescription
statusGenericStatusEnumTypeRequiredAccepted or Rejected.
scheduleCompositeScheduleTypeOptionalThe combined schedule, with scheduleStart and chargingSchedulePeriod.
statusInfoStatusInfoTypeOptionalReason 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.