Summary
OCPI 2.3.0 focuses on two primary goals:
-
Regulatory Compliance
OCPI 2.3.0 ensures compliance with new laws and regulatory requirements becoming effective in 2025. The changes in this release primarily address transparency obligations, taxation requirements (including North American tax support), accessibility considerations, and enhanced consumer information. -
Extensibility
OCPI 2.3.0 introduces structural enhancements that enable extensibility of the protocol. It becomes possible to add new modules, fields, and enum values without breaking interoperability between implementations.
OCPI 2.3.0 builds on version 2.2.1 and introduces a limited set of changes. However, adding new modules, fields, and enum values may require implementation updates.
Protocol Changes
OCPI 2.3.0 changes the protocol from a strictly defined contract to an extensible and forward-compatible contract.
Architectural Changes
-
Custom Modules
Next to the modules defined in the OCPI specification, additional custom modules can be defined. -
Custom Properties
A class datatype is defined as a set of key-value pairs, where the specification defines the required and optional properties and their value types. Additional properties may be included to allow custom extensions. -
Custom Enumeration Values
An OpenEnum defines a property type with a set of known specified values while allowing additional, custom values. The known values ensure interoperability for common concepts (e.g. connector types), while additional values allow implementers to introduce custom or newly defined variants.
Module Changes
Bookings Module
The Bookings module is new in OCPI 2.3.0. As this module has no 2.2.1 counterpart, no migration diff is available.
Payments Module
The Payments module is new in OCPI 2.3.0. As this module has no 2.2.1 counterpart, no migration diff is available.
CDRs Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /cdrs |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
POST /cdrs |
HIGH |
|
MEDIUM |
|
|
LOW |
|
|
GET /cdrs/{cdr_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Object Types
Modified Object Types
CDR
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CdrDimension
| Property | Changelog |
|---|---|
|
|
CdrDimensionType
| Value | Changelog |
|---|---|
|
|
|
|
CdrLocation
| Property | Changelog |
|---|---|
|
|
CdrToken
| Property | Changelog |
|---|---|
|
|
ChargingPeriod
| Property | Changelog |
|---|---|
|
|
Commands Module
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
POST /commands/RESERVE_NOW |
HIGH |
|
LOW |
|
|
POST /commands/START_SESSION |
HIGH |
|
LOW |
|
Credentials Module
Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /credentials |
HIGH |
|
LOW |
|
|
POST /credentials |
HIGH |
|
LOW |
|
|
PUT /credentials |
HIGH |
|
LOW |
|
Object Types
Modified Object Types
Credentials
| Property | Changelog |
|---|---|
|
|
|
|
CredentialsRole
| Property | Changelog |
|---|---|
|
|
|
|
HubClientInfo Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /hubclientinfo |
LOW |
|
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /hubclientinfo/{country_code}/{party_id} |
LOW |
|
PUT /hubclientinfo/{country_code}/{party_id} |
HIGH |
|
Object Types
Modified Object Types
ClientInfo
| Property | Changelog |
|---|---|
|
|
Role
| Value | Changelog |
|---|---|
|
|
Locations Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /locations |
HIGH |
|
MEDIUM |
||
LOW |
||
GET /locations/{location_id} |
HIGH |
|
MEDIUM |
||
LOW |
||
GET /locations/{location_id}/{evse_uid} |
HIGH |
|
MEDIUM |
||
LOW |
||
GET /locations/{location_id}/{evse_uid}/{connector_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /locations/{country_code}/{party_id}/{location_id} |
HIGH |
|
MEDIUM |
||
LOW |
||
PATCH /locations/{country_code}/{party_id}/{location_id} |
HIGH |
|
LOW |
|
|
PUT /locations/{country_code}/{party_id}/{location_id} |
HIGH |
|
LOW |
|
|
GET /locations/{country_code}/{party_id}/{location_id}/{evse_uid} |
HIGH |
|
MEDIUM |
||
LOW |
||
PATCH /locations/{country_code}/{party_id}/{location_id}/{evse_uid} |
HIGH |
|
LOW |
||
PUT /locations/{country_code}/{party_id}/{location_id}/{evse_uid} |
HIGH |
|
LOW |
||
GET /locations/{country_code}/{party_id}/{location_id}/{evse_uid}/{connector_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
|
PATCH /locations/{country_code}/{party_id}/{location_id}/{evse_uid}/{connector_id} |
HIGH |
|
LOW |
|
|
PUT /locations/{country_code}/{party_id}/{location_id}/{evse_uid}/{connector_id} |
HIGH |
|
LOW |
Object Types
Added Object Types
-
ConnectorCapability -
EVSEParking -
EVSEPosition -
Parking -
ParkingDirection -
VehicleType
Modified Object Types
Capability
-
formatchanged fromenumtoopen-enum
Connector
| Property | Changelog |
|---|---|
|
|
|
|
ConnectorPatch
| Property | Changelog |
|---|---|
|
|
|
|
ConnectorType
-
formatchanged fromenumtoopen-enum
| Value | Changelog |
|---|---|
|
|
|
|
EnergyMix
| Property | Changelog |
|---|---|
|
|
EnvironmentalImpact
| Property | Changelog |
|---|---|
|
|
EnvironmentalImpactCategory
-
formatchanged fromenumtoopen-enum
EVSE
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
EVSEPatch
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Facility
-
formatchanged fromenumtoopen-enum
Location
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LocationPatch
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ParkingRestriction
-
formatchanged fromenumtoopen-enum
| Value | Changelog |
|---|---|
|
|
|
|
|
|
ParkingType
-
formatchanged fromenumtoopen-enum
PublishTokenType
| Property | Changelog |
|---|---|
|
|
Sessions Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /sessions |
HIGH |
|
MEDIUM |
|
|
LOW |
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /sessions/{country_code}/{party_id}/{session_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
||
PATCH /sessions/{country_code}/{party_id}/{session_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
|
PUT /sessions/{country_code}/{party_id}/{session_id} |
HIGH |
|
MEDIUM |
||
LOW |
|
Object Types
Modified Object Types
Session
| Property | Changelog |
|---|---|
|
|
|
|
|
|
SessionPatch
| Property | Changelog |
|---|---|
|
|
|
|
|
|
Tariffs Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /tariffs |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /tariffs/{country_code}/{party_id}/{tariff_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
|
PUT /tariffs/{country_code}/{party_id}/{tariff_id} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Object Types
Added Object Types
-
BookingRestrictionType -
PriceLimit -
TaxIncluded
Modified Object Types
Tariff
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
TariffElement
| Property | Changelog |
|---|---|
|
|
TariffRestrictions
| Property | Changelog |
|---|---|
|
|
Tokens Module
Sender Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /tokens |
HIGH |
|
MEDIUM |
|
|
POST /tokens/{token_uid}/authorize |
HIGH |
|
MEDIUM |
|
|
LOW |
|
Receiver Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /tokens/{country_code}/{party_id}/{token_uid} |
HIGH |
|
MEDIUM |
|
|
LOW |
|
|
PATCH /tokens/{country_code}/{party_id}/{token_uid} |
HIGH |
|
LOW |
|
|
PUT /tokens/{country_code}/{party_id}/{token_uid} |
HIGH |
|
LOW |
|
Versions Module
Interface
| Endpoint | Impact | Changelog |
|---|---|---|
GET /version |
HIGH |
|
MEDIUM |
|
|
GET /versions |
HIGH |
|
MEDIUM |
|
Object Types
Modified Object Types
Endpoint
| Property | Changelog |
|---|---|
|
|
ModuleID
-
formatchanged fromenumtoopen-enum
| Value | Changelog |
|---|---|
|
|
|
|
Version
| Property | Changelog |
|---|---|
|
|
VersionDetails
| Property | Changelog |
|---|---|
|
|
|
|
VersionNumber
-
formatchanged fromenumtoopen-enum
| Value | Changelog |
|---|---|
|
|
Types
Object Types
Added Object Types
-
TaxAmount
Modified Object Types
BusinessDetails
| Property | Changelog |
|---|---|
|
|
Image
| Property | Changelog |
|---|---|
|
|
ImageCategory
-
formatchanged fromenumtoopen-enum
Price
| Property | Changelog |
|---|---|
|
|
|
|
|
|
|
|