This repository contains the OCPI specification. The most recent specification is OCPI 2.3.0, which is published as a core document plus separately packaged optional modules.
More background on OCPI, its development and its contributors can be found on the EV Roaming Foundation website.
See OCPI 2.3.0 releases and branching strategy below for how the documents and branches relate.
The latest official release is OCPI 2.3.0, published across the
2.3.0/release/* branches, with
2.3.0/release/core as the core specification. Development of
the next version of OCPI (new functionality) is done in the ocpi-3 repository, which
is only accessible to Contributors of the EV Roaming Foundation.
The
2.3.0/release/*branches replacemasteras the reference for the current release.
Fixes to earlier documentation live on dedicated bugfix branches:
release-2.2.1-bugfixes— latest fixes to the 2.2.1 documentationrelease-2.2-bugfixes— latest fixes to the 2.2 documentationrelease-2.1.1-bugfixes— latest fixes to the 2.1.1 documentation
OCPI 2.3.0 is published as a core specification together with several functional modules that are packaged and released independently. This section explains how the branches, documents, and versions relate.
The 2.3.0 work is organized into three kinds of branches under the shared 2.3.0/ namespace: release branches (
published sources of truth), feature branches (work in progress), and hotfix branches (corrections to a
published release).
Release branches hold the published sources of truth — the core specification and each module.
| Branch | Contents | Role |
|---|---|---|
2.3.0/release/core |
Core specification | Source of truth for the core spec |
2.3.0/release/payments |
Core + Payments module | Source of truth for Payments |
2.3.0/release/bookings |
Core + Bookings module | Source of truth for Bookings |
Feature branches hold work in progress. Once a module or change is ready, it is merged into the relevant release branch and the feature branch is archived.
| Branch | Contents | Role |
|---|---|---|
2.3.0/feature/* |
Modules or changes being drafted | Merged into a release branch, then archived |
Hotfix branches collect corrections to an already-published release. As with feature branches, the fixes are merged into the relevant release branch and the hotfix branch is then archived.
| Branch | Contents | Role |
|---|---|---|
2.3.0/hotfix/* |
Corrections being drafted for a published release | Merged into a release branch, then archived |
release-2.3.0-bugfixespredates the2.3.0/release/*convention. It holds edition 1 and is now frozen: all of its fixes have been carried into2.3.0/release/core. New work and new implementations should follow the2.3.0/release/*branches.
OCPI releases use a semantic-style version number of the form MAJOR.MINOR.PATCH (for example 2.0, 2.1.1, 2.2,
2.2.1). Any change to the specification produces a new number: a larger increment signals a broader or breaking
change, a smaller one a minor or corrective change. Documentation revisions of the same specification are marked with
a -dN suffix (for example 2.1.1-d2, 2.2-d2), indicating updated text and examples with no protocol change.
Note — versioning methodology under discussion. One proposal is to adopt the CEN-CENELEC versioning methodology: the protocol version stays fixed, and changes are expressed through multiple levels; for example, an edition (
ed2) for changes to messages, fields, or datatypes, and a documentation update (-d2) for text and examples only. The same methodology could also be applied to modules so that each module carries its own edition and evolves independently of the core.
| Document (PDF) | GitHub tag | GitHub branch | Core | Modules | Remarks | Status |
|---|---|---|---|---|---|---|
| OCPI 2.3.0 (including Payments) | v2.3.0 |
release-2.3.0-bugfixes |
1 | Payments 1 | The release-2.3.0-bugfixes branch will be deleted |
Released |
| OCPI 2.3.0 Edition 1 | v2.3.0-ed1 |
2.3.0/release/core |
1 | - | Similar to OCPI 2.3.0 without the payment module | Internal Release |
| OCPI 2.3.0 Edition 2 | v2.3.0-ed2 |
2.3.0/release/core |
2 | - | Core improvements and Invoice Reconciliation | Planned |
| OCPI 2.3.0 Payments | v2.3.0-payments |
2.3.0/release/payments |
1 | Payments 1 | Exactly the same specification as OCPI 2.3.0 (including Payments) | - |
| OCPI 2.3.0 Edition 2 Payments | v2.3.0-ed2-payments |
2.3.0/release/payments |
2 | Payments 1 | Core changes are applied to the payment document. No changes to the Payment module. To be certified | Planned |
| OCPI 2.3.0 Bookings | - | develop-2.3.0-booking |
1 | Bookings 1 | The develop-2.3.0-booking branch will be deleted |
Released |
| OCPI 2.3.0 Bookings 1.1 | - | develop-2.3.0-booking |
1 | Bookings 1.1 | The develop-2.3.0-booking branch will be deleted |
Released |
| OCPI 2.3.0 Bookings | v2.3.0-bookings |
2.3.0/release/bookings |
1 | Bookings 1 | Exactly the same specification as OCPI 2.3.0 Bookings |
- |
| OCPI 2.3.0 Bookings 1.1 | v2.3.0-bookings-ed2 |
2.3.0/release/bookings |
1 | Bookings 1.1 | Exactly the same specification as OCPI 2.3.0 Bookings 1.1 |
- |
| OCPI 2.3.0 Edition 2 Bookings 1.1 | v2.3.0-ed2-bookings-ed2 |
2.3.0/release/bookings |
2 | Bookings 1.1 | Both core changes and booking changes are applied. | Planned |
Notes
- None of the 2.3.0 tags are published as GitHub Releases — they exist only as git tags.
- The current Bookings source of truth (Booking 1.1) is not yet tagged; the
v2.3.0-bookingstag still points at Booking 1.0.2.3.0/release/bookingsbranches from the core lineage before edition 2, so it does not yet include the edition 2 core fixes or the Invoice Reconciliation module. Rebasing the module branches onto2.3.0/release/corewould align every package on the same core edition.- Two edition-1 baseline tags exist for the restructured branches —
v2.3.0-ed1andv2.3.0-edition1(the latter is orphaned, on no branch). They do not correspond to a separate published document and should be consolidated.
- Version History
- Introduction
- Protocol Meta Information — describes the connections between the parties
- Overview of Modules — each section describes one module
- Locations
- Sessions
- CDRs
- Tariffs
- Tokens
- Commands
- Charging Profiles
- Hub Client Info
- Invoice Reconciliation (added in edition 2)
- Generic Types — describing all data types that are used by multiple objects
- Changelog
Additional Modules