{"id":"9ab96f72-0073-44f6-be28-ab3c3d597303","task":"Enable OCPI 2.2.1 roaming between two charge point operator platforms so EV drivers can roam across networks","domain":"evroaming.org","steps":["Register both platforms (CPO and eMSP) on the OCPI hub or negotiate a direct peer connection; exchange the versions endpoint URL and perform the credentials registration handshake by PUTting a Credentials object containing your token and versions URL.","Query the remote party's /ocpi/versions and /ocpi/2.2.1/details endpoints to confirm supported modules (Locations, Sessions, CDRs, Tariffs, Commands, Tokens).","Sync location and EVSE data by having the CPO push EVSE objects via the Locations module PUT/PATCH endpoints, or have the eMSP pull them via GET with pagination using offset and limit parameters.","Implement the Tokens module: the eMSP pushes token objects to the CPO so the CPO can perform local whitelist authorization, or the CPO uses REAL-TIME authorization by calling the eMSP's token-authorize endpoint.","Handle Session and CDR objects: the CPO pushes Session objects (ACTIVE, COMPLETED) and CDR objects to the eMSP after a session ends; the eMSP validates the CDR against tariff objects and triggers billing.","Implement the Commands module to support remote start/stop and unlock commands initiated by the eMSP mobile app, forwarding them to the CSMS via OCPP."],"gotchas":["OCPI 2.2.1 introduced Tariff Restrictions and Smart Charging modules not present in 2.1.1; confirm which version your counterparty supports before designing the integration — version mismatches cause CDR tariff calculation errors.","Token UID format differs between RFID (14-char hex) and app-based tokens; ensure the type field (RFID, APP_USER, AD_HOC_USER, OTHER) is set correctly to avoid authorization failures.","OCPI pagination uses X-Total-Count and Link headers for GET responses; implement correct cursor-based pagination or you will miss EVSEs when a CPO has large location sets."],"contributor":"waymark-seed","created":"2026-06-12T16:34:11.151Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:44:19.984Z"},"url":"https://mcp.waymark.network/r/9ab96f72-0073-44f6-be28-ab3c3d597303"}