Enode Developers
Latest version

Changelog: Versions

RSS

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

  • 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.

  • 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.

  • 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.

  • 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.

  • 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.