About Roam OCPI
Read a summary about Roam OCPI: About Roam OCPI →What is Roam OCPI?
What is Roam OCPI?
What does “managed roaming” include?
What does “managed roaming” include?
Which OCPI version is used?
Which OCPI version is used?
What are the main deviations from standard OCPI?
What are the main deviations from standard OCPI?
Which OCPI modules are supported (pull/push)?
Which OCPI modules are supported (pull/push)?
How is Roam OCPI different from Drive API?
How is Roam OCPI different from Drive API?
Access and limits
Read the details of how to access the API here: Accessing the API →How do we authenticate / is IP filtering used?
How do we authenticate / is IP filtering used?
Are IDs unique across all CPOs exposed via Roam OCPI?
Are IDs unique across all CPOs exposed via Roam OCPI?
Are rate-limit backoff headers returned?
Are rate-limit backoff headers returned?
429. Currently, no rate-limiting headers such as Retry-After are returned. Location pull is allowed up to once per minute, excluding pagination.Rate limiting / fair usage
Rate limiting / fair usage
Credentials
Read the details of the Credentials module deviations and specifications here: Credentials module →What do we receive during the Credentials handshake?
What do we receive during the Credentials handshake?
Plugsurfing, country_code = DE, and party_id = 8PS. The roles list contains only this Plugsurfing CPO role. Plugsurfing does not use HubClientInfo. The actual CPO/operator is communicated through Locations using country_code, party_id, and the operator field. How do we know which operators are part of the solution?
How do we know which operators are part of the solution?
country_code = DE and party_id = 8PS. The actual CPO/operator information is communicated in each Location object using the connection owner’s country_code + party_id and the operator field. There might be several operators linked to one country_code + party_id combination. If a CPO is removed, its Locations will no longer appear in Location pulls. How are new CPOs added after go-live? Do partners need a new handshake?
How are new CPOs added after go-live? Do partners need a new handshake?
DE*8PS, partners do not need a new handshake when CPOs are added or removed. New CPOs are reflected through new locations becoming available in the Location pulls. If a CPO is removed, its locations will no longer be part of the Location pull.Retrieving locations
Read the details of the Locations module deviations and specifications here: Locations module →Can we connect to specific CPOs, or do we subscribe by country?
Can we connect to specific CPOs, or do we subscribe by country?
How do full and delta pulls work?
How do full and delta pulls work?
GET /locations builds or reconciles the complete cache. A full pull is recommended e.g. once per 24h so that you can remove locations that are no longer available. Delta pulls using date_from / date_to return locations where location data or inlined tariff data has changed during the specified time period. Delta pulls can be performed up to once per minute.How often should partners pull Locations?
How often should partners pull Locations?
How does Location pagination work?
How does Location pagination work?
Link response header. The Link header contains a smart_paging parameter. Parallel pulling of Locations is not supported because smart pagination is used.How are removed Locations handled?
How are removed Locations handled?
Can a Location be delivered without a name?
Can a Location be delivered without a name?
name field (display name of the location) is optional in OCPI 2.2.1, so some locations can be delivered without a name.Which EVSE capabilities are supported?
Which EVSE capabilities are supported?
The following capabilities are not supported, and they will be stripped from the EVSEs returned via the API: CHARGING_PROFILE_CAPABLE, CHARGING_PREFERENCES_CAPABLE, RESERVABLE, TOKEN_GROUP_CAPABLE, UNLOCK_CAPABLE.
Does Plugsurfing support OCPI routing headers?
Does Plugsurfing support OCPI routing headers?
OCPI-to-country-code and OCPI-to-party-id are provided, Plugsurfing uses them to filter locations for that routed CPO within the EMP’s accessible charging network.How are tariffs represented?
How are tariffs represented?
When a CPO updates tariffs, will last_updated change on Locations?
When a CPO updates tariffs, will last_updated change on Locations?
date_from / date_to return Locations where either Location data or inlined tariff data has changed. Partners should process the returned Location and inlined tariff object, including the tariff’s own last_updated.How should partners treat tariff IDs?
How should partners treat tariff IDs?
tariff_id will not change after it has been issued.Tokens and authorization
Read the details of the Tokens module deviations and specifications here: Tokens module →What do partners need to send?
What do partners need to send?
DE*8PS.Are all token types supported?
Are all token types supported?
AD_HOC_USER is not supported.How do whitelist types work?
How do whitelist types work?
NEVER and ALLOWED_OFFLINE are forwarded to CPOs. ALWAYS and ALLOWED are overwritten to ALLOWED_OFFLINE when shared with CPOs. Token whitelist type controls behavior between Plugsurfing and the CPO; real-time authorization between Plugsurfing and the EMP is controlled by an organization setting in Plugsurfing Power Portal.Can partners block charging attempts for unknown or unsupported locations?
Can partners block charging attempts for unknown or unsupported locations?
whitelist=NEVER, enabling external real-time authorization, and denying authorizations when the location reference is missing or unknown. This improves control but can negatively affect driver experience because not all CPOs do real-time authorization for all sessions and not all authorization requests include a resolvable location reference.What is X-Original-Protocol?
What is X-Original-Protocol?
X-Original-Protocol is a header available on outgoing Session and CDR requests in cases where there may be uncertainty about the exact charging key used. This can happen when multiple tokens share the same contract_id and an older upstream protocol only provides the contract_id in the CDR. The header contains <protocol>-<version>, for example OCPI-2.1.1, OCPI-2.2, OCPI-2.2.1, or OICP-2.3.Can contract_id be changed after a token has been pushed?
Can contract_id be changed after a token has been pushed?
contract_id is based on an organization setting, please create a support ticket to learn about or update the setting for your organization.Why does contract_id come back in a different format (with dashes)?
Why does contract_id come back in a different format (with dashes)?
contract_id to a consistent format for downstream partners, and the original formatting is not preserved. You may see the normalized version in sessions/CDRs. Example: DE8PSABCDEFGHI1 becomes DE-8PS-ABCDEFGHI-1Can partners have multiple contract_id prefixes?
Can partners have multiple contract_id prefixes?
contract_id. Plugsurfing needs a list of the contract_id prefixes before tokens are pushed, as those have to be registered in the Plugsurfing portal as well as with some CPO partners before you can roam with them. We expect the contract_id to follow the eMI3/eMA ID format where applicable.Can charging be restricted by supported countries?
Can charging be restricted by supported countries?
Commands
Read the details of the Commands module deviations and specifications here: Commands module →Which remote commands are supported?
Which remote commands are supported?
START_SESSION and STOP_SESSION are supported. RESERVE_NOW, CANCEL_RESERVATION, and UNLOCK_CONNECTOR are not supported. If an unsupported command is sent, an OCPI response with result NOT_SUPPORTED is returned.Sessions
Read the details of the Sessions module deviations and specifications here: Sessions module →How are Sessions delivered, and are pull/PATCH updates supported?
How are Sessions delivered, and are pull/PATCH updates supported?
CDRs
Read the details of the CDRs module deviations and specifications here: CDRs module →When and how are CDRs delivered?
When and how are CDRs delivered?
Can CDRs be delayed?
Can CDRs be delayed?
What is the retry behavior of CDRs?
What is the retry behavior of CDRs?
HTTP 200, the CDR will be resent nightly for up to 7 days.Are credit CDRs supported?
Are credit CDRs supported?
Is the CDR ID always the same as the Session ID?
Is the CDR ID always the same as the Session ID?
Can a CDR be sent without a Session ID?
Can a CDR be sent without a Session ID?
Is cost breakdown always populated?
Is cost breakdown always populated?
Can anything be missing from CDRs?
Can anything be missing from CDRs?
authorization_reference. Downstream OCPI 2.1.1 integrations don’t have the authorization_reference field.Stage testing and support
What should partners test in stage?
What should partners test in stage?
What information should partners include when raising support issues?
What information should partners include when raising support issues?
status_code/status_message, X-Original-Protocol if present, and whether issue is CPO-specific or global.Where can partners monitor platform status?
Where can partners monitor platform status?