Added the optional idleFeeGracePeriodMode property to the pricing object on Tariff endpoints. This field controls how the idle fee grace period is calculated: idle_detection (default) starts the grace period when idle charging is detected, while session_start starts it from the beginning of the session. Available on POST /resources/tariffs/v1.0, PUT /resources/tariffs/v1.0/{tariff} (request), and all Tariff and Tariff Snapshot read endpoints (response).
Added createdAfter and createdBefore filter parameters to GET /resources/partner-contracts/v1.0. These allow filtering partner contracts by their creation date, complementing the existing lastUpdatedAfter and lastUpdatedBefore filters.
🔧 Improvements
Changed the name uniqueness validation on Charge Point Model endpoints to be scoped per vendor. Previously, model names had to be globally unique; now the same model name can be used by different vendors. Affects POST /resources/charge-point-models/v1.0 and PATCH /resources/charge-point-models/v1.0/{chargePointModel}.
Added the optional roamingSessionId property to CDR responses on GET /resources/cdrs/v2.0 and GET /resources/cdrs/v2.0/{cdr}. This field contains the session identifier from the roaming partner's system when the CDR originated from a roaming session.
Added the optional chargePointId and evseCount properties to Partner Expense responses on GET /resources/partner-expenses/v1.1.
Added the optional chargePointId, evseCount, and period properties to Partner Revenue responses on GET /resources/partner-revenues/v1.1.
Added support for private EVSE access fee records in Partner Expenses and Partner Revenues. The origin field on both endpoints now includes the private-evse-access-fee value for these records.
Added createdAfter and createdBefore filter parameters to GET /resources/tariff-groups/v1.0 for filtering tariff groups by creation date.
🔧 Improvements
Relaxed the pin field constraint on Charge Point responses. The field no longer enforces a maximum length of 4 characters, allowing for longer PIN codes. Affects GET /resources/charge-points/v2.0, POST /resources/charge-points/v2.0, GET /resources/charge-points/v2.0/{chargePoint}, and PATCH /resources/charge-points/v2.0/{chargePoint}.
Changed intervalPricing behavior on tariff pricing responses: the API now returns only the explicitly configured time periods. Previously, gaps between configured periods were automatically filled with default-priced entries covering the full 24-hour day. Consumers relying on complete day coverage must now handle partial period lists.
✨ New features
Added new filter parameters to GET /resources/sessions/v1.0: filter[roaming][roamingOperatorEmspIds] to filter by roaming eMSP operator IDs, and filter[roaming][roamingConnectionIds] to filter by roaming connection IDs.
Added new filter parameters to GET /resources/subscriptions/v1.0: filter[startedAfter] and filter[startedBefore] to filter by subscription start date, filter[endedAfter] and filter[endedBefore] to filter by subscription end date, and filter[statusChangedAfter] and filter[statusChangedBefore] to filter by the date the subscription status last changed.
Added the filter[sessionId] parameter to GET /resources/cdrs/v2.0 to filter CDRs by internal session ID.
Added roaming as a new allowed value for the category field on Issue endpoints (POST /resources/issues/v1.0, PATCH /resources/issues/v1.0/{issue}). The same value is now also returned in Issue responses.
Added session as a new allowed value for the keyResource.resourceType field when creating issues via POST /resources/issues/v1.0.
Expanded the keyResource.resourceType response field on Issue endpoints to include new values: roaming-cdr, roaming-connection, and session.
🔧 Improvements
Reactivated the status field on Location requests for POST /resources/locations/v2.0 and PATCH /resources/locations/v2.0/{location}, allowing location status to be set during creation and updates.
Added US address validation on Location endpoints (POST /resources/locations/v2.0, PATCH /resources/locations/v2.0/{location}). When country is US, state is now required and postCode must be a valid US ZIP code format. Additionally, the ZIP code is validated to match the provided state.
Added US address validation on User v1.1 endpoints (POST /resources/users/v1.1, PATCH /resources/users/v1.1/{user}). When country is US, post_code must be a valid US ZIP code and state is required (when the state profile field is enabled). The ZIP code is validated to match the provided state.
🔧 Improvements
When updating a US user via PATCH /resources/users/v1.1/{user}, the existing country, post_code, and state values are now used as defaults for ZIP code validation when those fields are not included in the request. This ensures partial updates are validated correctly against the full address context.
Changed the periods array on Electricity Rate Day responses (GET /resources/electricity-rates/v2.0, GET /resources/electricity-rates/v2.0/{electricityRate}) to return aggregated periods. Consecutive periods with the same pricePerKwh are now merged into a single period with the combined time range, resulting in a more compact response.
Expanded tariff pricing visibility for ad-hoc users on GET /resources/tariffs/v1.0 and GET /resources/tariffs/v1.0/{tariff}. Tariff pricings with operator-specific ad-hoc restrictions are now included in responses when filtering by filter.userId=null.
Added the POST /public-api/actions/charge-point/v1.0/{chargePoint}/send-custom-ocpp endpoint to send custom OCPP commands to a charge point. The request requires a command (string) and payload (object).
Added the optional showTermsAndConditions (boolean) and termVersionId (integer or null) properties to Payment Terminal responses for Valina, Adyen Castles, Printec Castles, and Cardlink Castles terminal types. These fields are returned on GET /public-api/resources/payment-terminals/v1.0, POST /public-api/resources/payment-terminals/v1.0, GET /public-api/resources/payment-terminals/v1.0/{paymentTerminal}, PATCH /public-api/resources/payment-terminals/v1.0/{paymentTerminal}, and all corresponding v1.1 endpoints.
Added the optional display object to Tariff Group requests on POST /public-api/resources/tariff-groups/v1.0 and PATCH /public-api/resources/tariff-groups/v1.0/{tariffGroup}. The object supports defaultPriceInformation and defaultPriceInformationOffline string properties (max 150 characters each).
Added the optional email, locale, and invoiceDetails properties to the Transactions request body on POST /resources/transactions/v1.0. When invoiceDetails is provided, an ad-hoc user is created with the supplied invoice information and associated with the transaction. The invoiceDetails object accepts an invoiceType field (individual or company) along with dynamic fields defined by the operator's invoice integration configuration.
Added the optional partnerContractId filter to GET /resources/charge-points/v2.0. Allows filtering charge points by their associated partner contract.
Added the optional lastNetworkStatusUpdateAt property to Charge Point responses on GET /resources/charge-points/v2.0, POST /resources/charge-points/v2.0, GET /resources/charge-points/v2.0/{chargePoint}, and PATCH /resources/charge-points/v2.0/{chargePoint}. This field contains the timestamp of the last network status change.
Added the optional corporateBilling.frequency and corporateBilling.limit properties to Partner requests and responses on GET /resources/partners/v2.0, POST /resources/partners/v2.0, GET /resources/partners/v2.0/{partner}, and PATCH /resources/partners/v2.0/{partner}. These fields allow configuring billing limits with a specified frequency period (e.g., weekly, monthly) instead of fixed monthly limits.
Added the optional options.corporateBillingLimit property to Partner Invite requests and responses on GET /resources/partner-invites/v1.0, POST /resources/partner-invites/v1.0, GET /resources/partner-invites/v1.0/{partnerInvite}, and PATCH /resources/partner-invites/v1.0/{partnerInvite}. This field allows setting a corporate billing spending limit for the invited user.
Added the optional invoiceDetails.lastUpdatedAt property to User responses on GET /resources/users/v1.0, POST /resources/users/v1.0, GET /resources/users/v1.0/{user}, PATCH /resources/users/v1.0/{user}, GET /resources/users/v1.0/{user}/invoice-details, POST /resources/users/v1.0/{user}/invoice-details, and the v1.1 equivalents. This field contains the timestamp when the user's invoice details were last modified.
Added the optional filter.invoiceDetailsLastUpdatedAfter and filter.invoiceDetailsLastUpdatedBefore query parameters to GET /resources/users/v1.0 and GET /resources/users/v1.1. These filters allow retrieving users whose invoice details were modified within a specific date range.
🔧 Improvements
Made the email property conditionally optional on POST /actions/transactions/v1.0/{transaction}/issue-invoice. The field requirement now depends on the operator's invoice processor configuration—if the email field is configured as optional for the invoice type being issued, it no longer needs to be provided.
🗑️ Deprecations
Deprecated the corporateBilling.monthlyLimit property on Partner endpoints (GET /resources/partners/v2.0, POST /resources/partners/v2.0, GET /resources/partners/v2.0/{partner}, PATCH /resources/partners/v2.0/{partner}). Use the new corporateBilling.frequency and corporateBilling.limit properties instead for more flexible billing period configuration.