Enode Developers
Latest version

Changelog

RSS

Keep track of updates and new API versions. More on versioning here.

  • New power delivery state: `PLUGGED_IN:DISCHARGING`

    Released

    New power delivery state `PLUGGED_IN:DISCHARGING` added.

    A new state PLUGGED_IN:DISCHARGING has been added to the PowerDeliveryState enum. This state indicates that the vehicle or charger is actively discharging power to the home/grid, causing the battery level to decrease.

  • Version 2024-10-01

    Released

    Improved Inverter Statistics. Standardize location attributes across assets

    New features

    • HVACs: Report Unknown as mode if the mode is currently not available or not supported.
    • Meters: Expose location.id & location.lastUpdated.
    • Inverters: Expose the serial number under information.sn.
    • Inverters: Improvements to Inverter Statistics, stats are now collected directly from vendor APIs.
    EndpointDescription
    GET /inverters/{inverterId}/statisticsReturns statistics about power production for the given inverter in the form of a time series, collected from vendor APIs. Note: Existing inverters linked to Enode are currently being migrated to be compatible with this new endpoint. Until this is complete, you may see empty responses for inverters linked on an older API version.

    Breaking changes

    Enums no longer versioned:

    • Adding values to an existing enum is no longer considered a breaking change.

    Every asset now has a location object with at least an id and a timestamp. The top-level locationId has been moved under this object. Specifically, the following has changed:

    • Batteries: Top level locationId has been moved to location.id
    • Batteries: Added location.lastUpdated
    • Inverters: Top level chargingLocationId has been moved to location.id
    • Inverters: Added location.lastUpdated
    • Hvacs: Top level locationId has been moved to location.id
    • Hvacs: Added location.lastUpdated
    • Chargers: Top level locationId has been moved to location.id
    • Vehicle: Top level locationId has been moved to location.id

    The following changes have been made to problem responses. See this documentationAPI for more details.

    • For some problem responses, the API would return duplicated fields error and message. These are no longer included. type and detail should be used instead.
    • The contents of the type field has changed. Specifically, the subdomain has changed from docs.enode.io to developers.enode.com. For example, https://docs.enode.io/problems/bad-request becomes https://developers.enode.com/api/problems/bad-request.

    Interventions may now be brand agnostic. We recommend styling your UI using the domain attribute, and filling in brand-specific information if present. Specifically:

    • The vendor, brand, or vendorType fields may be null.
    • As indicated by the openapi schema, all three fields will be present or null.

    The following deprecated fields have been removed:

    • Hvacs: Deprecated attributes mode, heatSetpoint, coolSetpoint, holdType, isActive, and currentTemperature have been removed. Use their replacements under the temperatureState object instead.
    • Hvacs: Deprecated attribute capabilities.capableHoldTypes has been removed. Instead of checking for the presence of the hold type in the array, use capabilities.setFollowSchedule or capabilities.setPermanentHold instead.
    • Smart Vehicle Plan: Deprecated attribute externalStart. Instead, use the smartOverride field on the Smart Charge Status object.
    • Smart Vehicle Plan: Deprecated attribute chargingLocationId has been removed. Use locationId instead.

    The following deprecated endpoints have been removed:

    EndpointDescription
    PUT /webhooks/firehoseRemoved. Use /webhooks resources instead.
    DELETE /webhooks/firehoseRemoved. Use /webhooks resources instead.
    POST /webhooks/firehose/testRemoved. Use /webhooks resources instead.

    The following endpoints have been deprecated:

    EndpointDescription
    GET /users/{userId}/statistics/productionDeprecated. Use the new Inverter Statistics endpoint.
    GET /users/{userId}/vendor-statisticsDeprecated. Use the new Inverter Statistics endpoint.

    Pass 2024-10-01 as your version header to use this new version.

  • Schneider Electric Chargers support

    Released

    Beta support for Integrating with Schneider Electric chargers using Wiser Home is added

    We are excited to announce that support for integrating with Schneider Electric chargers using Wiser Home is now in beta.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Improved linking of devices under the same account

    Released

    Linking all your devices from one account? We removed the need for tediously repeating the login process in subsequent link sessions.

    Users often own multiple energy devices from the same vendor. For example, home energy devices such as solar inverters, batteries, or meters are frequently purchased together as a package, with their API access managed under a single vendor account.

    To improve the linking process of different devices under the same account, we have enabled the re-use of vendor authentication across different device categories. Users after the initial linking flow, are able to skip repeating the same step of entering credentials with all subsequent sessions with LinkUI automatically using the previously granted authorization of the vendor account. This reduces friction and enhances the overall user experience.

  • SMA Meters support

    Released

    Support for integrating with SMA meters is added.

    SMA support is enabled by default. You can disable SMA in the enabled-brands section under your Enode client.

  • SMA Batteries support

    Released

    Support for integrating with SMA batteries is added.

    SMA support is enabled by default. You can disable SMA in the enabled-brands section under your Enode client.

  • Security: Webhook IP addresses

    Released

    Customers can now fetch a list of origin IPs for Webhooks.

    These IPs can be used for additional verification or allowlists. More in the Webhooks docs.

  • Vendor sign-in available for BMW / MINI

    Released

    BMW / MINI now supports the `Vendor sign-in` feature

    Vendor sign-in is now available for BMW and MINI vehicles for a more streamlined authentication flow.

    Note that an SDK version of 1.0.2 or higher is required to use this feature in Android. For iOS, the minimum required SDK version is 1.0.0.

  • SolarEdge Batteries support

    Released

    Support for Integrating with SolarEdge batteries is added

    The integration currently only enables Information capabilities for these batteries and does not allow controlling of modes. To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Micromatic now generally available

    Released

    We are removing the beta label from the vendor

    The integration has been stable for several months. Micromatic HVACs can now be linked to all Enode clients without manual activation.

  • Garo Chargers support

    Released

    Support for Integrating with Garo chargers is added

    We are excited to announce that we added support for integrating with Garo chargers.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • SolarEdge Meters support

    Released

    Support for Integrating with SolarEdge meters is added

    We are excited to announce that we added support for integrating with SolarEdge meters.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Hyundai Bluelink Australia vehicle support

    Released

    Support for Integrating with Hyundai Bluelink vehicles in Australia is added

    We are excited to announce that we added support for integrating with Hyundai Australia vehicles.

  • Huawei Batteries & Meters support

    Released

    Support for Integrating with Huawei batteries and meters is added

    We are excited to announce that we added support for integrating with Huawei batteries and meters.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Dutch (Belgium) support

    Released

    Now supporting Dutch (Belgium) in the Interventions API and Link UI

    You can now request a linking session with the nl-BE language code to present the LinkUI in Dutch (Belgium). To use this feature, set the language attribute to nl-BE when creating a linking session.

    Additionally, interventions will now be available in Dutch (Belgium) as well. Similarly, set the language query parameter to nl-BE when fetching interventions to receive the resolution descriptions in Dutch (Belgium).

  • Ohme charger support

    Released

    Support for integrating with Ohme chargers is added

    We are excited to announce that we added support for integrating with Ohme chargers.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Added support for MyÅ koda app

    Released

    The new MyÅ koda app is now supported

    Customers can now pick between MyÅ koda and MyÅ koda Essentials when linking their accounts. We expect Å koda to migrate their vehicles away from MyÅ koda Essentials.

  • Auto-link vehicles in Sandbox 2

    Released

    Newly created vehicles in Sandbox 2 can now be automatically linked

    During the creation of a virtual vehicle you can now choose to automatically link it to a user. You can chose to link it to an existing user ID or let Sandbox create a new user ID for you automatically. This will save you time and make it easier to test your integration with Enode.

  • Battery Discharge Limit

    Released

    Battery discharge limit added to battery information

    The configured battery discharge limit is now available under chargeState.dischargeLimit. This value can be used to determine whether the battery will discharge.

  • Vehicle Display Names

    Released

    Vehicle display names are now included in the Asset API

    User-defined vehicle nicknames are now surfaced in our Vehicle Asset API under information.displayName. These display names are easily recognizable by users and can be used to identify vehicles in your app.

  • Link SDKs Required to Link Ford

    Released

    Ford is now only available through the Link SDKs

    Ford vehicles can now only be linked using the Enode Link SDKs. This is because Ford has a new authentication flow that requires the use of the Vendor sign-in feature in the Link SDKs.

  • Netatmo HVAC support

    Released

    Support for integrating with Netatmo HVACs is added

    We are excited to announce that we added support for integrating with Netatmo HVACs.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Made spec more compatible with OpenAPI client generators

    Released

    Our spec is not yet fully compatible with popular OpenAPI client generators such as openapi-generator, but we are making progress towards that goal.

    • 2024-05-16: Previously, code generated from our spec by openapi-generator and similar tools would attempt to pass pagination parameters as a single field query param, e.g. ?field={"after": "abc"} or ?field[after]=abc, neither of which are accepted by our API. After removing explode: true, code produced by openapi-generator is now passing pagination params correctly: ?after=abc&pageSize=50.

    • 2024-05-16: Ensured that all paginated endpoints correctly document their query parameters.

    • 2024-05-21: Inlined nullable timestamps and HourMinute since allOf: [{ $ref }, { description }] was not supported by openapi-generator.

  • FoxESS Fox Cloud support

    Released

    Support for Integrating with FoxESS inverters using Fox Cloud is added

    We are excited to announce that we added support for integrating with FoxESS inverters using Fox Cloud.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Tesla Charger support

    Released

    Support for Integrating with Tesla Wall Connector chargers is added

    We are excited to announce that we added support for integrating with Tesla Wall Connector chargers.

    To opt-in, please navigate to the enabled-brands section under your Enode client.

  • Redirect URI validation in Link UI v4

    Released

    `about:blank` is no longer allowed as a redirect URI in Link UI v4

    The about:blank URI scheme is no longer permitted as a redirect URI for Link UI v4. This change is to prevent errors with respect to Tesla linking.

  • Fronius Charger support

    Released

    Support for Integrating with Fronius Wattpilot chargers is added

    We are excited to announce that we added support for integrating with Fronius Wattpilot chargers.

  • Sol-Ark support

    Released

    Support for Integrating with Sol-Ark inverters is added

    We are excited to announce that we added support for integrating with Sol-Ark inverters.

  • Improved Cleanup of EV State When Plugging Out

    Released

    Improved Cleanup of EV State When Plugging Out.

    In certain situations our API to stop charging (POST /{assetCategory}/{assetId}/charging) could delay future charging sessions due to flawed state. From now on, Enode will clear any such state when the vehicle is plugged out, ensuring that charging resumes correctly when plugged in.

  • US support for Toyota and Lexus

    Released

    US support for Toyota and Lexus added.

    We are excited to announce US support for Toyota and Lexus.

  • Link SDKs 1.0 for Android and iOS

    Released

    Enode Link SDKs receive a major update and reach version 1.0

    The 1.0 releases of both SDKs bring several improvements when linking through Enode:

    • Rendering of Link UI in fullscreen for a native user experience on mobile devices

    For linking and pairing Teslas:

    • Pairing flow polished with many UX improvements
    • Automatic selection of vehicle during pairing
    • Automatic pairing without keycard or other interaction with the vehicle
    • Gracefully falling back to manual selection or pairing
    • Improved error handling and retry-flows for pairing

    For linking Google Nest and Teslas:

    • Vendor sign-in for better and faster authentication

    We recommend all users of Link UI v4 to implement the SDKs or upgrade from <1.0 versions.

    Get the 1.0 SDKs from our documentation:

  • Charge Action Validation

    Released

    Behavioral change for charge actions sent to unplugged assets.

    Charge Actions sent to unplugged chargers and vehicles will now be rejected with a HTTP 400 Bad Request and no Action will be created. Previously, such Actions would be accepted with a HTTP 200 OK and then transitioned to a CANCELLED state when asynchronously processed. Enode doesn't deliver Charge Actions to Vendor APIs when vehicles or charges are unplugged, and therefore, we believe this change better reflects how our platform handles such actions.

  • Additional Vendors Activated by Default

    Released

    Many integrations across different asset categories have become available by default.

    With this update, we're taking 15 integrations that previously required an opt-in and are making them available by default. Unless they've been manually disabled in the Developers Dashboard, these brands will be available for linking in LinkUI. We do this periodically when we've determined that these brands are stable and reliable enough to be present in most Link sessions.

    • Vehicles: Rivian & Mercedes
    • Meters: Enphase & Tesla
    • Batteries: Enphase & Tesla
    • Chargers: GoE
    • Hvacs: Panasonic & Hoymiles
    • Inverter: Huawei, Sofar, Solax, Sungrow & Tesla

    Note that the Meters and Batteries categories are still in Beta, and may see breaking changes in the future.

  • Lexus support

    Released

    Support for Integrating with Lexus vehicles is added

    We are excited to announce that we added support for integrating with Lexus vehicles.

  • Canada support for Hyundai, KIA and Nissan

    Released

    Canada support for Hyundai, KIA and Nissan added.

    We are excited to announce Canada support for Hyundai, KIA and Nissan.

  • Mitsubishi US, Fox ESS and SunSynk updates

    Released

    US support for Mitsubishi `kumo cloud` HVACs added. Fox ESS and SunSynk Inverters now in beta.

    We are excited to announce US support for Mitsubishi kumo cloud HVAC models. Additionally, we have expanded our inverter lineup by integrating Fox ESS and SunSynk.

    Fox ESS and SunSynk are in beta. To opt-in, please navigate to the enabled-brands section under your Enode client and activate them.

  • Integration with vehicles of XPENG

    Released

    Added beta support for 5 XPENG models

    We added beta support for 5 models of XPENG:

    • G3i
    • G9
    • P5
    • P7
    • P7i

    To opt-in, please head to the enabled-brands under your Enode client and activate the vendor.

  • Improved retry logic for actions

    Released

    State of actions transitions now quicker while maintaining confidence.

    We have optimized the retry logic for actions, which enables Enode to terminate unsuccesful actions quicker. The exact timings and re-try logic depends on the vendor. Actions will now transition quicker from PENDING to FAILED or CANCELLED while maintaining the same level of confidence.

  • Inverter vendor statistics: caching and timezone fixes

    Released

    Fixed a bug where data was cached for too long, resulting in some responses containing wrong data. Fixed a bug where data returned from Growatt inverters had the wrong timezone. Added stricter input validation.

    Endpoints
    GET /users/{userId}/vendor-statistics (beta)
    GET /inverters/{inverterId}/vendor-statistics (beta)

    Fresher data, less aggressive caching

    Inverter vendor statistics had a bug where stale data was returned. For example, if energy production for the current day (not yet finished) was requested, the initial value would also be returned for all subsequent requests.

    This has been fixed, and real-time data (with in-progress buckets) will now be cached for a maximum of 15 minutes, instead of indefinitely.

    Growatt timezone fix

    Responses for Growatt inverters had an issue where data was aligned with the wrong timezone, and the data would be shifted by an amount that depended on the startDate parameter of the request. Due to this, we have invalidated all existing cached data for Growatt inverters, so that the correct data will be returned from now on.

    Stricter input validation

    Additionally, start dates must now start exactly at the beginning of an hour. Previously, it was possible to ask for an hour of data between e.g. 12:30 to 13:30, but this should not have been possible, and the results were unpredictable. Inverters with non-integer timezone offsets are not supported yet.

  • Ford now opt-in, improved reporting of consumption rate for HVACs

    Released

    Fixed a bug where HVAC devices reported misleading consumption data, and made Ford opt-in due to reliability issues with the vendor.

    Copy linkFord now opt-in

    Due to reliability issues with the vendor, we have made Ford opt-in. Head to enabled-brands in the settings to switch it on for your clients. Already existing connections are not affected, but to continue linking Ford, opting in is required.

    Copy linkFixed consumption rate

    HVACs falsely reported consumptionRate as 0 even though it was unavailable on the device. This has now been improved and made more explicit:

    • If the data point is unavailable, we report null.
    • If the data point is available but the device is idle, we report 0.
    • If the data point is available and the device is consuming energy, we report the actualValue.
  • Webhook Authentication

    Released

    Webhook authentication is now available.

    Customers can now configure header-based authentication on their webhooks. More details can be found in the Webhooks Guide.

  • Link SDKs 0.10.0 for Android and iOS

    Released

    Bug fixes and UX improvements for our iOS and Android SDKs

    The 0.10.0 releases of both SDKs bring several improvements when linking Teslas through Enode:

    • fixed a bug when the Tesla 1st party app was on the same device
    • improved error handling and reporting
    • improved connection handling
    • improved and simplified UX in Link UI
    • avoid native Bluetooth dialog by selecting the car in the background
    • new Vendor sign-in which makes the authentication easier and faster

    Furthermore, linking sessions using SDK versions 0.10.0+ also support Google Nest.

    Get the new SDKs from our documentation:

  • Inverter vendor statistics interval selection bug fix

    Released

    Fixed a bug where some start dates were shifted further back in time, resulting in too many data points in the response.

    Start dates not aligned with midnight (UTC), for example 2023-08-03T22:00:00Z, were shifted to 2023-08-03T00:00:00Z, causing the response to include too many data points. All resolutions were affected by this bug. This has been fixed and the start date is no longer shifted.

    Fixed endpoints
    GET /users/{userId}/vendor-statistics (beta)
    GET /inverters/{inverterId}/vendor-statistics (beta)

    Additionally, these endpoints are no longer locked behind a feature flag and are now available to all customers.

  • Improved behavior around invalid credentials / expired oauth authorization token

    Released

    Introducing new behavior and interventions when credentials become invalid.

    Invalid credentials used to cause the automatic deletion of the underlying connected asset(s). From users we have learned that the vast majority of these deletions are involuntary. To address this, and help users to re-gain access to their asset(s), we no longer remove these assets from the system automatically and instead apply an intervention prompting the user to re-link their account.

    In the event of invalid credentials or expired oauth authorization token:

    • Asset becomes unreachable.
    • A user:credentials:invalidated webhook event is sent.
    • A Re-link your {asset} to re-enable telemetry intervention gets added and all capabilities become isCapable: false.
    • GET /users/{userId} will return an array linkedVendors[].isValid where isValid indicates if credentials are valid.

    This change avoids data loss around the asset and users can now be guided through re-linking using the interventions.

  • Version 2024-01-01

    Released

    Adds support for Link UI v4, new mobile SDKs and a revamped scopes structure.

    This new version supports the new Link UI (v4), the new Link SDKs and introduces revamped scopesAPI and permission flows. For more information about migrating to Link UI v4, please see our migration guide.

    Copy linkUpdated device linking endpoint endpoint

    Copy linkPayload changes

    All experimental and unused fields have been deprecated, and are no longer supported in Link UI v4. For the full payload documentation, refer to the link userAPI endpoint documentation.

    ParameterChangeChange description
    vendorTypeUpdatedThis field is now required.
    forceLanguageRemovedDeprecated, removed and replaced with language.
    languageAddedA new required field supporting new i18n locales (e.g. en-US and nb-NO), as well as a browser for defaulting to the user’s browser language.
    scopesUpdatedThis field is now required, and accepts new values as specified in the new scopes sectionAPI in the API reference. Old scopes have been deprecated and migrated to the new scopes (no re-linking is required).
    redirectUriUpdatedThis field is now required, and will return new error and error_message URL parameters if the user exits the Link UI flow before completing. Additionally, about:blank is no longer allowed. Contact us if your app requires this.
    colorSchemeAddedA new optional field for setting the color scheme of Link UI to either light, dark or system (defaults to the user’s operating system color scheme). Defaults to system if not specified.
    usernameRemovedThis field was deprecated, and has now been removed.

    Copy linkResponse changes

    ParameterChangeChange description
    linkUrlUpdatedNow follows a new URL scheme, and is deployed on link.enode.com. This is used for presenting Link UI via mobile in-app browsers, or web redirects.
    linkStateRemovedThis field has been deprecated and removed.
    linkTokenAddedA new field used for initializing the new mobile SDKs for iOS and Android.

    Copy linkUpdated asset API endpoints

    As part of the new scopesAPI updates, all asset-related API endpoints now return a scope property with the scopes granted to the asset.

    EndpointChangeChange description
    GET /batteriesUpdatedAsset objects now include a new scopes property.
    GET /chargersUpdatedAsset objects now include a new scopes property.
    GET /hvacsUpdatedAsset objects now include a new scopes property.
    GET /invertersUpdatedAsset objects now include a new scopes property.
    GET /metersUpdatedAsset objects now include a new scopes property.
    GET /vehiclesUpdatedAsset objects now include a new scopes property.
    GET /batteries/<assetId>UpdatedAsset objects now include a new scopes property.
    GET /chargers/<assetId>UpdatedAsset objects now include a new scopes property.
    GET /hvacs/<assetId>UpdatedAsset objects now include a new scopes property.
    GET /inverters/<assetId>UpdatedAsset objects now include a new scopes property.
    GET /meters/<assetId>UpdatedAsset objects now include a new scopes property.
    GET /vehicles/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /batteries/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /chargers/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /hvacs/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /inverters/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /meters/<assetId>UpdatedAsset objects now include a new scopes property.
    UPDATE /vehicles/<assetId>UpdatedAsset objects now include a new scopes property.

    Pass 2024-01-01 as your version header to use this new version.

  • Beta Release of Batteries and Meters

    Released

    Introducing two new hardware categories: `batteries` and `meters`.

    New BatteriesAPI Endpoints (Beta):

    New EndpointDescription
    GET /batteriesList all available batteries
    GET /batteries/{batteryId}Fetch detailed information about a specific battery
    GET /users/{userId}/batteriesList of batteries associated with a user
    POST /batteries/{batteryId}/operation-modeSet the operation mode for a specific battery
    GET /batteries/actions/{actionId}Retrieve info about a specific battery action
    POST /batteries/actions/{actionId}/cancelCancel a specific battery action
    POST /batteries/{batteryId}/refresh-hintInitiate a manual refresh for battery data
    GET /health/batteriesList the supported battery vendors and their current status.

    New MetersAPI Endpoints (Beta):

    New EndpointDescription
    GET /metersList all available meters
    GET /meters/{meterId}Fetch detailed information about a specific meter
    GET /users/{userId}/metersList of meters associated with a user
    POST /meters/{meterId}/refresh-hintInitiate a manual refresh for meter data
    GET /health/metersList the supported meter vendors and their current status.

    These new hardware categories are currently in beta. Developers are encouraged to provide feedback and report any issues. Refer to the API referenceAPI for in-depth details and integration steps.

  • New intervention endpoints

    Released

    Introducing endpoints to fetch detailed localized information for interventions.

    The response contains general information as well as more detailed information about the resolution of the intervention. The resolution description is Markdown formatted and is available in language-localized versions.

    Please refer to our updated Intervention guide and API referenceAPI for more detailed information.

    Copy linkNew endpoints:

    New endpointDescription
    GET /interventionsReturns a list of all known interventions
    GET /interventions/{interventionId}Returns a single intervention
  • Support for multiple webhooks

    Released

    Clients can now register and manage multiple webhooks.

    Deprecated endpoints:

    Deprecated EndpointDescription
    PUT /webhooks/firehoseReplaced by POST /webhooks for creating a webhook and PATCH /webhooks/{webhookId} for updating a webhook
    DELETE /webhooks/firehoseReplaced by DELETE /webhooks/{webhookId}
    POST /webhooks/firehose/testReplaced by POST /webhooks/{webhookId}/test

    New endpoints:

    New EndpointDescription
    POST /webhooksCreate a new webhook
    PATCH /webhooks/{webhookId}Update an existing webhook
    GET /webhooks/{webhookId}Fetch a webhook
    GET /webhooksList all webhooks (paginated)
    DELETE /webhooks/{webhookId}Delete a webhook
    POST /webhooks/{webhookId}/testTrigger a enode:firehose:test payload to be sent to the webhook. This will reset your webhook to a healthy state on success.

    Old firehose webhook is still accessible through the deprecated endpoints as well as the new endpoints. Use GET /webhooks to receive its id to start using the new endpoints.

  • Statistics endpoints interval selection bug fix

    Released

    Fixed a bug where some end dates were mistakenly "rounded up" to the next hour/day/year, resulting in extraneous data being included in the response.

    • Affected endpoints: /users/{userId}/statistics/charging, /statistics/charging, /users/{userId}/statistics/production and /statistics/production.
    • Before, for DAY resolution, an end date of 2023-08-03T00:00:00Z was rounded up to 2023-08-04T00:00:00Z.
    • Before, for MONTH resolution, an end date of 2023-08-01T00:00:00Z was rounded up to 2023-09-01T00:00:00Z.
    • Now, the end date is not rounded up. The same applies for all other resolutions.
    • To keep backwards compatibility, the old rounding behavior will still be used if the start time is equal to the end time.
  • Version 2023-08-01

    Released

    Clients can now list all their vehicles, chargers and other assets using paginated resources.

    1. Breaking Changes

    Endpoints:

    EndpointDescription
    /vehiclesList all client vehicles, paginated.
    /chargersList all client chargers, paginated.
    /hvacsList all client HVAC units, paginated.
    /invertersList all client inverters, paginated.
    /meRemoved. Moved to /users/{userId}.
    /charging-locations/*Removed. Replaced by /locations.

    Headers:

    • Remove Enode-User-Id header. Requests with this header will fail.

    Hierarchy Changes:

    • Introduced /users as the top level for user-related resources due to change in authentication strategy.

    Other Changes:

    • Began renaming chargingLocationId to locationId across endpoints. Remove it entirely from Temperature Schedule.
    • Remove field from all asset types. Instead, you can now use <assets>/{assetId}/refresh-hint to initiate an accelerated data refresh, ie: /vehicles/{vehicleId}/refresh-hint.
    • /statistics/charging
      • Fields smartSession and nonSmartCostSum have been removed.
      • For non-smart charging, estimatedSavings is set to null.
    • /statistics/charging/sessions
      • Fields smartSession and smartStats.nonSmartCostSum have been removed.
      • The smartStats object has been removed.
      • The fields estimatedSavings and nonSmartPrice now appear at top level.
      • For non-smart charging sessions, estimatedSavings is set to null.
    • Legacy user access tokens are no longer supported on client-scoped resources. If your existing integration calls Enode with per-user access tokens, you should switch to using client credentialsAPI as part of upgrading to 2023-08-01.

    2. Removed Endpoints

    EndpointReplacement
    GET /meGET /users/{userId}
    DELETE /me/vendors/{vendor}DELETE /users/{userId}/vendor/{vendor}
    /charging-locations/*/locations/*
    /statistics/*/users/{userId}/statistics/*
    GET /schedulesGET /users/{userId}/schedules
    POST /schedulesPOST /users/{userId}/schedules

    3. New Endpoints

    New EndpointDescription
    GET /usersList all client users (paginated)
    GET /users/{userId}/vendor/{vendor}Vendor details
    GET /users/{userId}/vehiclesList all user vehicles (paginated)
    GET /users/{userId}/chargersList all user chargers (paginated)
    GET /users/{userId}/hvacsList all user HVAC units (paginated)
    GET /users/{userId}/invertersList all user inverters (paginated)
    /users/{userId}/statistics/*All statistic endpoints are moved behind /users/{userId}/
    GET /users/{userId}/schedulesList all user schedules (paginated)
    POST /users/{userId}/schedulesCreate a schedule for the user
    POST <assets>/{assetId}/refresh-hintInitiate an accelerated data refresh.

    4. Pagination

    We have introduced cursor-based pagination for all endpoints that return a list of resources. Reference: Pagination StrategyAPI

    Pass 2023-08-01 as your version header to use this new version.

  • Version 2023-05-01

    Released

    Temperature Schedules now support changing device modes. This allows access to the Permanent Hold and Follow Schedule endpoints through temperature schedules.

    EndpointChange description
    /schedules/{scheduleId} and /scheduleschargeableId and entityId have been replaced with targetId.
    /schedules/{scheduleId} and /scheduleschargeableType and entityType have been replaced with targetId.
    /schedules/{scheduleId} and /schedulesTemperature schedule: defaultTarget is replaced with defaultTargetState. Inside the rules array, both target and targetTemperature have been replaced with targetState.
    PUT /schedules/{scheduleId}Temperature Schedule: The object schema for the target state has been changed. The API now expects an object with at least a holdType, and possibly mode, coolSetpoint, and heatSetpoint. The holdType determines the kind of action sent to the device. Check out the Using Schedules guide for examples of valid objects.
    GET /schedules/{scheduleId}/statusThe externalStart object has been renamed to smartOverride.

    Pass 2023-05-01 as your version header to use this new version.

  • Version 2023-04-15

    Released

    A new version of the Vehicle Smart Charging Plan API has been released, which adds new failure conditions.

    EndpointChange description
    GET /vehicles/{vehicleId}/smart-charging-plans/{smartChargingPlanId}CHARGE_INTERRUPTED and FINISHED_EARLY have been added to the failureCondition enum. Review your code to ensure that it can handle these new failure conditions. This change should not affect any existing functionality. CHARGE_INTERRUPTED indicates that the charging process was interrupted before completion, while FINISHED_EARLY indicates that the charging process was completed more than 90 minutes earlier than planned.

    Pass 2023-04-15 as your version header to use this new version.

  • Improved Fidelity of OpenAPI Specification

    Released

    One OpenAPI Specification per API Version

    Going forward, we'll publish a separate specification file for each breaking change we release. As a result, each of the specifications will be simpler, as they don't have to include another version's schema. In addition, resource names such as Vehicle_2023_02_01 become just Vehicle. The new specifications are available through our API. To see a specific version, replace the latest argument with a version like 2023-05-01.

  • Version 2023-04-01

    Released

    A new version with breaking changes to smart charging. This version simplifies considerations further.

    EndpointChange description
    GET /vehicles/{vehicleId}/smart-charging-statusisSmartChargeCapable, singleUser, needsSignificantCharge, wontStopExistingChargingSession, hasChargeAboveThreshold and likelyToGenerateSavings considerations have been removed from the consideration object
    GET /vehicles/{vehicleId}/smart-charging-statusConsideration recentlyAtChargingLocation has been renamed to atChargingLocation in the Vehicle Smart Charging StatusAPI API
    GET /vehicles/{vehicleId}/smart-charging-statusA new state, FULLY_CHARGED, has been added to the state enum. FULLY_CHARGED, will replace CONSIDERING when the vehicle does not need to be charged. This can be due to the vehicle having reached its charging limit or the battery being close to 100% charged. The vehicle will transition back into CONSIDERING once we detect that the vehicle has been used and needs to be charged.
    PUT /vehicles/{vehicleId}/smart-charging-policyThe logic for checking if the vehicle is capable of smart charging and if the user is a single user has been moved to the Update Vehicle Smart Charging PolicyAPI API. If the vehicle is not capable of smart charging or the user is not a single user, smart charging will not be turned on, and a 400 Bad Request will be returned.

    Pass 2023-04-01 as your version header to use this new version.

  • Made spec more compatible with openapi-generator

    Released

    Removed invalid default property in VehicleFieldParameter

    Fixed a bug in the OpenAPI spec where the default value of VehicleFieldParameter was located inside items instead of next to it, causing openapitools/openapi-generator to fail. The intended default for fields was ["capabilities", "smartChargingPolicy"]. It's not necessary to specify these fields since they are always returned.

  • Power delivery states and richer action failure reasons

    Released

    This update brings new features to our vehicles and chargers APIs. The new fields will be available across all versions.

    • Introducing chargeState.powerDeliveryState. This field represents the current power delivery state between a vehicle and a charger. For more information, see Get VehicleAPI.

    • Introducing failureReason. This field provides more information about why was a given action not executed successfully. For more information, see Get Charge ActionAPI.

  • Changes to smart charging considerations

    Released

    Changes made to simplify smart charging considering phase.

    • Instead of staying in the considering phase in cases where you should charge right away, we will make a plan to start now. This is particularly important when there are very little savings. The charging behavior will remain the same as before; the only difference is that we are giving users a plan.
    • As a result of this change, wontStopExistingChargingSession and likelyToGenerateSavings are now deprecated will always return true.
    • Locations no longer have to be fresh in order to receive a smart charge plan.
  • Version 2023-03-01

    Released

    The first version with breaking changes. This API version removes deprecated functionality and fields that have accumulated before Enode launched versioning.

    EndpointChange description
    POST /chargers/{chargerId}/charging, POST /vehicles/{vehicleId}/charging and /schedulesThe fields chargeableId, chargeableType, entityId, and entityType have been replaced with targetId and targetType
    /schedules/{scheduleId} and /scheduleschargeableType and entityType have been replaced with targetId.
    /vehicles/{vehicleId}/external-start and /vehicles/{vehicleId}/external-startThe External Start APIs for VehiclesAPI and ChargersAPI have been renamed to Smart override, which better reflects their intended use.
    POST /hvacs/{hvacId}/temperatureThe Set Temperature endpoint for HVACs has been replaced by the Set Permanent HoldAPI and Follow ScheduleAPI endpoints. The latter offer increased control over the underlying hardware, like the ability to change the thermostat's mode.
    /hvacs/{hvacId}Responses no longer contain targetTemperature
    GET /statistics/chargingThe vehicleId request body parameter to Get Charging StatisticsAPI has been replaced with id and type in order to support different types of hardware.
    /webhooksThe user:charge-action:updated webhook event has been renamed to user:vendor-action:updated.
    GET /vehicles and GET /vehicles/{vehicleId}The chargeState.isChargingReasons response field on the Vehicle APIAPI has been removed.
    GET /vehicles and GET /vehicles/{vehicleId}The information.id response field on the Vehicle APIAPI has been removed. Use information.vin instead.

    Pass 2023-03-01 as your version header to use this new version.

  • Vendor types are now returned for linked vendors

    Released

    This update brings a small quality of life improvement for re-linking vendors. The update is available across all versions.

    • vendorType is now returned in the response from the MeAPI endpoint. This makes it easier to re-link vendors in a isValid = false state since vendorType is required when calling link endpoint. For more information see MeAPI.
  • New smart charging features

    Released

    This update brings a few new features to our smart charging APIs. The updates will be available across all versions.

    • Altered the hasChargeAboveThreshold smart charge consideration such that vehicles stop charging ScheduleAPI immediately, regardless of battery level. Previously the smart charging algorithm would wait until a vehicle reached 20% before issuing a stop command.
  • Version 2023-02-01

    Released

    The first calendar version for Enode API. No breaking changes have been made. Existing clients are pinned to version 2023-02-01, and will use this version by default if no version header is sent.

    • Version 2023-02-01 is the same as before and has no breaking changes.

    • API endpoints now accept an Enode-Version header. To prepare for future API versions you can optionally start sending Enode-Version=2023-02-01.

    • Note: New clients will be pinned to the latest stable version at the time of creation.