Enode Developers

Changelog: Updates


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

  • Link SDKs 1.0 for Android and iOS


    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 login 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


    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


    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, Xpeng & 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


    Support for Integrating with Lexus vehicles is added

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

  • Mitsubishi US, Fox ESS and SunSynk updates


    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


    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


    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


    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.

    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


    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


    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


    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 login 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


    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


    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.

  • Beta Release of Batteries and Meters


    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


    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


    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


    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.
  • Improved Fidelity of OpenAPI Specification


    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.

  • Made spec more compatible with openapi-generator


    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


    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


    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.
  • Vendor types are now returned for linked vendors


    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


    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


    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.