OCPI 2.1.1
Last updated: September 15, 2025
Everything you need to know about OCPI 2.1.1 and the ENAPI platform
The ENAPI Transaction Broker fully supports OCPI 2.1.1.
However, where necessary the schema has been extended to:
Implement the "hub" topology which is not natively supported by version 2.1.1
Provide added-value functionality seen in other OCPI versions and protocols
Ensure smooth operation for partners on their OCPI version of choice
Roaming on 2.1.1 with a partner that implements OCPI 2.2.1+ has the biggest impact. Similarly, it is important to be aware of the limitations when roaming with a 2.1.1 partner on OCPI 2.2.1+ connections.
This document outlines all additions made and the caveats when roaming across OCPI versions.
🔌 Roaming Partners
ENAPI's Credentials
As part of the Credentials handshake, ENAPI will provide your system with its own hub credentials: DE*ENA.
Receiving Roaming Partner Credentials
In OCPI 2.1.1 there is no way for ENAPI to share the list of roaming partners from which you will receive requests on the ENAPI platform. You must prepare your platform for this before roaming with a partner.
Data received from roaming partners via ENAPI will have the country_code and party_id of the roaming partner in the URL. If your platform does not support this, ENAPI can use its own credentials in the URL.
If the ENAPI credentials are used in the URL, data such as locations and tokens that need to be mapped internally to an operator must be done so via other means. ENAPI modifies the Location operator and Token issuer in OCPI 2.1.1 for this reason. How this is done is outlined in the Version Interoperability section below.
🌐 Version Interoperability
OCPI 2.1.1 features the most changes of all OCPI versions implemented by ENAPI. This section contains information for partners that support OCPI 2.1.1, or which roam with OCPI 2.1.1 partners.
Roaming using OCPI 2.1.1
Common Changes
Each top-level OCPI object (Location, Tariff, Token, Session, CDR) contains the country_code and party_id to help with identification of the operator, for billing purposes. They are not required to be set by the sending 2.1.1 party. They are added by ENAPI (2.1.1 receivers can opt-out).
Property | Type | Card. | Description |
country_code | String(2) | ? | ISO-3166 alpha-2 country code of the operator that 'owns' this object. |
party_id | String(3) | ? | ID of the operator that 'owns' this object (following the ISO-15118 standard). |
New Functionality in OCPI 2.2.1+
You will not receive fields and enumeration values added in OCPI 2.1.1 unless explicitly back-ported by ENAPI. Where necessary, ENAPI maps the incompatible values to OCPI 2.1.1 compatible values.
Locations
The
operator.namefield is also set to thecountry_codeandparty_idof the Location owner, in case the above values are not supported. For example, if the Location hascountry_code=DEandparty_id=CPO, the value of the operator's name will beDE*CPO.Postal code is optional in OCPI 2.2.1+. If receiving a Location from a 2.2.1+ partner that does not include the
postal_code, this value will be an empty string.Connectors that have incompatible
standard,formatandpower_typevalues (i.e. introduced in subsequent OCPI versions) are omitted in OCPI 2.1.1. They will not be shared with OCPI 2.1.1 roaming partners.If a 2.2.1+ roaming partner assigns multiple Tariff IDs to a Connector, ENAPI will attempt to infer the correct Tariff ID for OCPI 2.1.1 partners., based on the Tariff type. If no tariff ID can be selected, it is omitted.
The
max_electric_powerfield was back-ported to OCPI 2.1.1 (see below).
Connector Object
Made available to OCPI 2.1.1 receivers when roaming with 2.2.1+ partners.
Property | Type | Card. | Description |
max_electric_power | int | ? | Maximum electric power that can be delivered by this connector, in Watts (W). When the maximum electric power is lower than the calculated value from voltage and amperage, this value should be set. For example: A DC Charge Point which can delivers up to 920V and up to 400A can be limited to a maximum of 150kW (max_electric_power = 150000). Depending on the car, it may supply max voltage or current, but not both at the same time. For AC Charge Points, the amount of phases used can also have influence on the maximum power. |
Tokens
The
issuerfield is also set to thecountry_codeandparty_idof the Token owner, in case the above values are not supported. For example, if the Tokencountry_code=DEandparty_id=MSP, the issuer value will beDE*MSP.
Sessions and CDRs
In OCPI 2.1.1, ENAPI uses
PENDINGas a fallback session status, in case of receiving e.g. theRESERVATIONstatus value in 2.2.1 or 2.3.0.The
FLATCDR Dimension was removed from subsequent OCPI versions. CDR Dimensions with this type are filtered out in version 2.2.1+.