Enode Developers
2023-03-01

Enode API 2023-03-01

This reference provides a comprehensive overview of the Enode API endpoints for accessing and controlling its hardware and features. The API follows REST principles, and uses OAuth 2.0.

This page features detailed documentation for each of our endpoints. You can also explore our API through our updated OpenAPI specifications or Postman collection.

The API is versioned, and all documentation on this page, including the links to the OpenAPI specifications and Postman collection is specific to the selected version.

Environments

We provide multiple environments, each with unique data access policies, and live/mocked vendors.

Environments are isolated from each other. Client credentials are tied to a specific environment and cannot be reused across environments.

Copy linkProduction

Features the latest stable software, live vendors, and strict data access controls.

NameURL
APIhttps://enode-api.production.enode.io
OAuth Authorizationhttps://oauth.production.enode.io/oauth2/auth
OAuth Tokenhttps://oauth.production.enode.io/oauth2/token
Link UIhttps://link.production.enode.io

Copy linkSandbox

Includes the latest stable software and mocked vendors/vehicles/chargers.

NameURL
APIhttps://enode-api.sandbox.enode.io
OAuth Authorizationhttps://oauth.sandbox.enode.io/oauth2/auth
OAuth Tokenhttps://oauth.sandbox.enode.io/oauth2/token
Link UIhttps://link.sandbox.enode.io

Authentication

The Enode API uses OAuth 2.0 client access tokens for authenticating server requests.

Copy linkAPI credentials

Enode API access begins with a client and its corresponding client ID and client secret. Clients organize data, are separate, and relate to a specific environmentAPI.

API credentials are used to obtain an access tokenAPI for accessing the entire APIAPI

Key Description
Client IDThe identifier for your client, referred to as the client_id.
Client secretThe secret for your client, referred to as the client_secret.

Copy linkGetting an access token

The access token authorizes client access to all data and functionality. Obtain it via the OAuth 2.0 client credentials grant using the API credentialsAPI and the relevant OAuth URLsAPI for your client's environment.

Token request example

curl https://oauth.{YOUR_CLIENT_ENVIRONMENT}.enode.io/oauth2/token \
-X POST \
-u {YOUR_CLIENT_ID}:{YOUR_CLIENT_SECRET} \
-d "grant_type=client_credentials"

After requesting the token URL, you'll receive an access token in the response. Cache this token on your server until it expires and needs refreshingAPI. Keep the access token secret.

Token response example

{
	"access_token": "{YOUR_ACCESS_TOKEN}",
	"expires_in": 3599,
	"scope": "",
	"token_type": "bearer"
}

Copy linkRefreshing access tokens

Access tokens expire hourly, indicated by the expires_in key in the response. When expired, obtain a new tokenAPI.

Copy linkAccessing the API with the access token

Authenticate all API requests using a bearer authentication header. This header accesses client-wide endpoints (service healthAPI, tariffsAPI, user managementAPI, and webhooksAPI).

Type Value
HeaderAuthorization: Bearer {YOUR_ACCESS_TOKEN}

Client resource request example

curl https://enode-api.{YOUR_CLIENT_ENVIRONMENT}.enode.io/health/ready \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Content-Type: application/json" \

Response times

Enode resources like Schedules and Locations have response times of <200ms. However, vehicle interactions involve various delays and timing characteristics.

Understanding the range of possible timings without diving into vendor-specific causes, helps you account for these factors in your UX design.

Copy linkAPI GET requests

Copy linkGet Vehicle

Get Vehicles and List Vehicles are fast operations since all data is prefetched by Enode and shared from a cache.

On API versions prior to 2023-08-01 it is possible to request a synchronous update where data is fetched directly from the vendor. Such requests have longer response times, sometimes 30 seconds or more, depending on the characteristics of the underlying vendor APIs. From 2023-08-01 onwards this has been replaced by the refresh hintAPI mechanism.

The Login step usually takes <2 seconds, but can rarely take up to 30 seconds due to background negotiations, retries, and initial vehicle data fetching.

The final Accept step experiences similar delays as List Vehicles.

Copy linkCharging commands

Charging commands show significant timing variability among vendors. Initiating the action is instant, but the updated charging state typically takes 20 seconds to appear. Occasionally the action may take 5 minutes or more to confirm.

Copy linkWebhooks

Webhooks usually involve polling and dynamically adjust the polling rate based on different situations to provide prompt updates without overloading the vehicle.

The maximum baseline delay between a real-world change (e.g., a vehicle being plugged in) and the resulting webhook notification is 7 minutes.

Vehicle contextTypical delay
default7 minutes
charging2 minutes
smartcharge PLAN:*2 minutes
sleeping20 minutes

If you'd like to request a faster refresh, you can call the various /refresh-hint endpoints found on devices to queue an accelerated data refresh.

Errors and problems

Copy linkOAuth Authorization Request

Upon completing the Enode Link authorization process, the user will be redirected to your configured redirect URI. If an issue occurs, query parameters error and error_description will be set as described in Section 4.1.2.1 of the OAuth 2.0 specification:

Error Error description
invalid_requestThe request has a missing or invalid parameter, duplicate parameters, or is malformed.
unauthorized_clientThe client isn't authorized to request an authorization code with this method.
access_deniedThe resource owner or authorization server denied the request.
unsupported_response_typeThe authorization server doesn't support obtaining an authorization code with this method.
invalid_scopeThe requested scope is invalid, unknown, or malformed.
server_errorThe authorization server encountered an unexpected condition that prevented it from fulfilling the request.
temporarily_unavailableThe authorization server is temporarily unable to handle the request due to overloading or maintenance.

https://website.example/oauth_callback?state=e0a86fe5&error=access_denied&error_description=The+resource+owner+or+authorization+server+denied+the+request.

Copy linkErrors when accessing a User's resources

When using an access_token to access a user's resources, you may encounter the following 4XX range HTTP Status Codes:

HTTP Status CodeExplanation
400 Bad RequestThe request payload failed schema validation or parsing
401 UnauthorizedMissing or invalid authentication details
403 ForbiddenAuthentication succeeded, but the user lacks access to the resource due to a missing control scope.
404 Not FoundRequested resource doesn't exist
405 Method Not AllowedVendor unavailability prevented request completion
408 Request TimeoutVendor timeout prevented request completion
409 ConflictVendor rejection prevented request completion
424 Failed DependencyFailed vendor requests prevented request completion
429 Too Many RequestsVendor rate limiting prevented request completion

In all cases, an RFC7807 Problem Details body is returned to aid in debugging.

HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
  "type": "https://docs.enode.io/problems/bad-request",
  "title": "Payload validation failed",
  "detail": "\"authorizationRequest.scope\" is required",
}

Copy linkProblems

TitleDescription
Bad request

Some part of the request was malformed. See associated detail message for more information.

Enode Controlled Entity

This entity is currently managed by Smart Charging or Schedules and cannot accept manual commands. Either disable the feature controlling the target, or force charging to start through our External Start APIAPI.

Entity Not Found

The requested entity was not found on the user's account.

Forbidden

The current context is not allowed to access the requested resource.

Not Found

The requested entity was not found on the user's account. If requesting vendor entities, ensure you're using the top level id field and not information.id. information.id is the ID the vendor uses to refer to the entity and changes over time.

Server Error

A critical error has ocurred. An employee has been alerted and will work to remedy the situation

Service Unavailable

The service is currently unavailable. Most likely the service was slow to respond, might be overloaded or down for maintenance. Other endpoints might still be available.

You may want to retry the request using a randomized backoff delay.

Check the Enode Status page if this problem persists.

Timeout

A request timed out. If this problem was returned by a route that tried to communicate with vendor APIs, remove the fields query parameter to fetch the Enode hosted cache. This cache is updated every 10 minutes.

Unauthorized

The request contained an invalid or expired token.

Validation Error

The response we prepared failed to pass outgoing validation. An employee has been alerted and will work to remedy the situation.

Versioning

Enode's REST API is versioned. A dated version is released when breaking changes occur, while new features and bug fixes (additive changes) are available in all supported API versions.

You can view all available versions and updates in the changelog.

API clients are pinned to the latest API version upon creation, affecting all API requests and webhook events. API responses include an Enode-Version header, and webhook events have a version field.

You can override the API version on a specific request by sending an Enode-Version in the request header.

Copy linkBreaking changes

Breaking changes will be released as a new version. When a new version is released, the previous version is supported for six months before deactivation. Enode staff will notify you in advance. Each API version comes with a migration guide explaining changes and upgrade suggestions.

We consider the following breaking changes

  • Changing a request’s authorization or authentication requirements
  • Adding a new required input parameter
  • Changing input validation
  • Removing an HTTP route or method
  • Removing or renaming a response parameter
  • Adding a new case to a response field documented as an enum.

All other additive changes are considered backwards compatible.

Copy linkDeprecation

Deprecated means that a particular feature, endpoint, or field is marked for removal in a future version of the API. When something is marked as deprecated, it's a signal for you to update your application to use alternative features or methods we provide. While the deprecated item will continue to work in the current version, it will be removed in a future version of the API. When we deprecate an item, we will mark it as deprecated through all the previous versions. Once a version without the item is released, the deprecated feature, endpoint, or field will still be supported in the previous version for six months. After six months, using the deprecated item will return an error. Enode staff will notify you before any item is removed.

Copy linkLabels

Some of the products or endpoints we have available are labelled. Here's an explanation of each.

Copy linkBeta

This product or endpoint is now feature complete and the implementation will not change. There may be bugs or stability issues but they are actively being worked on. We are still open to receiving feedback before delivering a stable release.

Copy linkExperimental

This product or endpoint is being released in an early stage to get feedback. There are likely bugs or other issues that may not necessarily be prioritized. The whole implementation may be completely changed or removed.

Batteries

The Battery object represents a residential energy storage unit, like a Tesla Powerwall or Enphase IQ. It offers detailed insights into the battery's operation and allows you to instruct the battery on handling its stored energy.

List batteriesBeta

GET /batteries

Returns a paginated list of all Batteries.

Request

Query parameters
after string Optional
before string Optional
pageSize integer Optional

Default value: 50

Response 200

Attributes
  • data array of object

    Paginated list of batteries

    Show child attributes
    • data[].id string<uuid>

      Unique identifier for the battery object

    • data[].userId string

      The ID of the user that linked this battery.

    • data[].vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        TESLAENPHASEHUAWEI
    • data[].locationId string<uuid> or null

      ID of the location the battery is currently positioned at (if any).

    • data[].lastSeen string<date-time>

      The last time Enode successfully communicated with the vendor or when the battery was initially linked.

    • data[].isReachable boolean

      Whether live data from the battery is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the battery's cloud service if that service has determined that its cache is valid.

    • data[].chargeState object

      Latest information about the battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

      Show child attributes
      • data[].chargeState.status string or null

        The power delivery state of the battery.

        Possible enum values:

          CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
      • data[].chargeState.batteryCapacity number or null

        Battery capacity in kWh.

      • data[].chargeState.batteryLevel number or null

        Remaining battery charge level in percent.

      • data[].chargeState.chargeRate number or null

        The current charge rate in kW. A positive value indicates that the battery is charging.

      • data[].chargeState.dischargeLimit number or null

        Minimum charge level for a battery, expressed as a percentage. Batteries will not discharge below this user-set reserve level except in emergency power situations.

      • data[].chargeState.lastUpdated string<date-time> or null

        Time of last received charge state update

    • data[].config object
      Show child attributes
      • data[].config.operationMode string or null

        The current operation mode of the battery.

        • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

        Possible enum values:

          IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE
      • data[].config.lastUpdated string<date-time> or null

        Time of last received configuration update

    • data[].information object

      Descriptive information about the battery

      Show child attributes
      • data[].information.id string

        Battery vendor ID

      • data[].information.brand string

        Battery brand

        Possible enum values:

          TeslaEnphaseHUAWEI
      • data[].information.model string

        Battery model

      • data[].information.siteName string

        Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

      • data[].information.installationDate string<date-time>

        Battery installation date

    • data[].location object

      Battery's GPS coordinates

      Show child attributes
      • data[].location.longitude number or null

        Longitude in degrees

      • data[].location.latitude number or null

        Latitude in degrees

    • data[].capabilities object

      A collection of descriptors that describe the capabilities of this specific battery

      Show child attributes
      • data[].capabilities.exportFocus object

        Supports EXPORT_FOCUS operation mode.

        Show child attributes
        • data[].capabilities.exportFocus.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.exportFocus.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.importFocus object

        Supports IMPORT_FOCUS operation mode.

        Show child attributes
        • data[].capabilities.importFocus.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.importFocus.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.timeOfUse object

        Supports TIME_OF_USE operation mode.

        Show child attributes
        • data[].capabilities.timeOfUse.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.timeOfUse.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.selfReliance object

        Supports SELF_RELIANCE operation mode.

        Show child attributes
        • data[].capabilities.selfReliance.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.selfReliance.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • data[].scopes array of string

      Scopes that the user has granted for this battery.

  • pagination object

    Cursors to the pages before and after current page. See the PaginationAPI section for reference.

    Show child attributes
    • pagination.after string or null
    • pagination.before string or null

Response example

{
  "data": [
    {
      "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
      "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
      "vendor": "TESLA",
      "locationId": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
      "lastSeen": "2020-04-07T17:04:26Z",
      "isReachable": true,
      "chargeState": {
        "status": "CHARGING",
        "batteryCapacity": 13.5,
        "batteryLevel": 80,
        "chargeRate": 4.6,
        "dischargeLimit": 20,
        "lastUpdated": "2020-04-07T17:04:26Z"
      },
      "config": {
        "operationMode": "IMPORT_FOCUS",
        "lastUpdated": "2020-04-07T17:04:26Z"
      },
      "information": {
        "id": "7deb27f8-794f-467b-855e-5c61dd9f2cb3",
        "brand": "string",
        "model": "Powerwall",
        "siteName": "Powerwall Home",
        "installationDate": "2020-04-07T17:04:26Z"
      },
      "location": {
        "longitude": 10.7197486,
        "latitude": 59.9173985
      },
      "capabilities": {
        "exportFocus": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "importFocus": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "timeOfUse": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "selfReliance": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        }
      },
      "scopes": [
        "string"
      ]
    }
  ],
  "pagination": {
    "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
    "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
  }
}
Was this section helpful?

List user batteriesBeta

GET /users/{userId}/batteries

Returns a paginated list of batteries for the given userId.

Request

Path parameters
userId string Required

A unique identifier of your choice representing your user, e.g. a stable UUID you keep in your datastore. If a user entity matching the provided userId does not exist in your client, it will be created before the link session is created.

Query parameters
after string Optional
before string Optional
pageSize integer Optional

Default value: 50

Response 200

Attributes
  • data array of object

    Paginated list of batteries

    Show child attributes
    • data[].id string<uuid>

      Unique identifier for the battery object

    • data[].userId string

      The ID of the user that linked this battery.

    • data[].vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        TESLAENPHASEHUAWEI
    • data[].locationId string<uuid> or null

      ID of the location the battery is currently positioned at (if any).

    • data[].lastSeen string<date-time>

      The last time Enode successfully communicated with the vendor or when the battery was initially linked.

    • data[].isReachable boolean

      Whether live data from the battery is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the battery's cloud service if that service has determined that its cache is valid.

    • data[].chargeState object

      Latest information about the battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

      Show child attributes
      • data[].chargeState.status string or null

        The power delivery state of the battery.

        Possible enum values:

          CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
      • data[].chargeState.batteryCapacity number or null

        Battery capacity in kWh.

      • data[].chargeState.batteryLevel number or null

        Remaining battery charge level in percent.

      • data[].chargeState.chargeRate number or null

        The current charge rate in kW. A positive value indicates that the battery is charging.

      • data[].chargeState.dischargeLimit number or null

        Minimum charge level for a battery, expressed as a percentage. Batteries will not discharge below this user-set reserve level except in emergency power situations.

      • data[].chargeState.lastUpdated string<date-time> or null

        Time of last received charge state update

    • data[].config object
      Show child attributes
      • data[].config.operationMode string or null

        The current operation mode of the battery.

        • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

        Possible enum values:

          IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE
      • data[].config.lastUpdated string<date-time> or null

        Time of last received configuration update

    • data[].information object

      Descriptive information about the battery

      Show child attributes
      • data[].information.id string

        Battery vendor ID

      • data[].information.brand string

        Battery brand

        Possible enum values:

          TeslaEnphaseHUAWEI
      • data[].information.model string

        Battery model

      • data[].information.siteName string

        Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

      • data[].information.installationDate string<date-time>

        Battery installation date

    • data[].location object

      Battery's GPS coordinates

      Show child attributes
      • data[].location.longitude number or null

        Longitude in degrees

      • data[].location.latitude number or null

        Latitude in degrees

    • data[].capabilities object

      A collection of descriptors that describe the capabilities of this specific battery

      Show child attributes
      • data[].capabilities.exportFocus object

        Supports EXPORT_FOCUS operation mode.

        Show child attributes
        • data[].capabilities.exportFocus.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.exportFocus.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.importFocus object

        Supports IMPORT_FOCUS operation mode.

        Show child attributes
        • data[].capabilities.importFocus.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.importFocus.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.timeOfUse object

        Supports TIME_OF_USE operation mode.

        Show child attributes
        • data[].capabilities.timeOfUse.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.timeOfUse.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • data[].capabilities.selfReliance object

        Supports SELF_RELIANCE operation mode.

        Show child attributes
        • data[].capabilities.selfReliance.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • data[].capabilities.selfReliance.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • data[].scopes array of string

      Scopes that the user has granted for this battery.

  • pagination object

    Cursors to the pages before and after current page. See the PaginationAPI section for reference.

    Show child attributes
    • pagination.after string or null
    • pagination.before string or null

Response example

{
  "data": [
    {
      "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
      "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
      "vendor": "TESLA",
      "locationId": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
      "lastSeen": "2020-04-07T17:04:26Z",
      "isReachable": true,
      "chargeState": {
        "status": "CHARGING",
        "batteryCapacity": 13.5,
        "batteryLevel": 80,
        "chargeRate": 4.6,
        "dischargeLimit": 20,
        "lastUpdated": "2020-04-07T17:04:26Z"
      },
      "config": {
        "operationMode": "IMPORT_FOCUS",
        "lastUpdated": "2020-04-07T17:04:26Z"
      },
      "information": {
        "id": "7deb27f8-794f-467b-855e-5c61dd9f2cb3",
        "brand": "string",
        "model": "Powerwall",
        "siteName": "Powerwall Home",
        "installationDate": "2020-04-07T17:04:26Z"
      },
      "location": {
        "longitude": 10.7197486,
        "latitude": 59.9173985
      },
      "capabilities": {
        "exportFocus": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "importFocus": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "timeOfUse": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        },
        "selfReliance": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        }
      },
      "scopes": [
        "string"
      ]
    }
  ],
  "pagination": {
    "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
    "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
  }
}
Was this section helpful?

Get batteryBeta

GET /batteries/{batteryId}

Request

Path parameters
batteryId string<uuid> Required

The ID of the battery to look up.

Response 200

Attributes
  • id string<uuid>

    Unique identifier for the battery object

  • userId string

    The ID of the user that linked this battery.

  • vendor string

    Machine-friendly name of the vendor. Use this in API requests.

    Possible enum values:

      TESLAENPHASEHUAWEI
  • locationId string<uuid> or null

    ID of the location the battery is currently positioned at (if any).

  • lastSeen string<date-time>

    The last time Enode successfully communicated with the vendor or when the battery was initially linked.

  • isReachable boolean

    Whether live data from the battery is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the battery's cloud service if that service has determined that its cache is valid.

  • chargeState object

    Latest information about the battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

    Show child attributes
    • chargeState.status string or null

      The power delivery state of the battery.

      Possible enum values:

        CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
    • chargeState.batteryCapacity number or null

      Battery capacity in kWh.

    • chargeState.batteryLevel number or null

      Remaining battery charge level in percent.

    • chargeState.chargeRate number or null

      The current charge rate in kW. A positive value indicates that the battery is charging.

    • chargeState.dischargeLimit number or null

      Minimum charge level for a battery, expressed as a percentage. Batteries will not discharge below this user-set reserve level except in emergency power situations.

    • chargeState.lastUpdated string<date-time> or null

      Time of last received charge state update

  • config object
    Show child attributes
    • config.operationMode string or null

      The current operation mode of the battery.

      • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

      Possible enum values:

        IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE
    • config.lastUpdated string<date-time> or null

      Time of last received configuration update

  • information object

    Descriptive information about the battery

    Show child attributes
    • information.id string

      Battery vendor ID

    • information.brand string

      Battery brand

      Possible enum values:

        TeslaEnphaseHUAWEI
    • information.model string

      Battery model

    • information.siteName string

      Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

    • information.installationDate string<date-time>

      Battery installation date

  • location object

    Battery's GPS coordinates

    Show child attributes
    • location.longitude number or null

      Longitude in degrees

    • location.latitude number or null

      Latitude in degrees

  • capabilities object

    A collection of descriptors that describe the capabilities of this specific battery

    Show child attributes
    • capabilities.exportFocus object

      Supports EXPORT_FOCUS operation mode.

      Show child attributes
      • capabilities.exportFocus.isCapable boolean

        The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

      • capabilities.exportFocus.interventionIds array of string

        IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • capabilities.importFocus object

      Supports IMPORT_FOCUS operation mode.

      Show child attributes
      • capabilities.importFocus.isCapable boolean

        The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

      • capabilities.importFocus.interventionIds array of string

        IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • capabilities.timeOfUse object

      Supports TIME_OF_USE operation mode.

      Show child attributes
      • capabilities.timeOfUse.isCapable boolean

        The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

      • capabilities.timeOfUse.interventionIds array of string

        IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • capabilities.selfReliance object

      Supports SELF_RELIANCE operation mode.

      Show child attributes
      • capabilities.selfReliance.isCapable boolean

        The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

      • capabilities.selfReliance.interventionIds array of string

        IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

  • scopes array of string

    Scopes that the user has granted for this battery.

Response example

{
  "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
  "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
  "vendor": "TESLA",
  "locationId": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
  "lastSeen": "2020-04-07T17:04:26Z",
  "isReachable": true,
  "chargeState": {
    "status": "CHARGING",
    "batteryCapacity": 13.5,
    "batteryLevel": 80,
    "chargeRate": 4.6,
    "dischargeLimit": 20,
    "lastUpdated": "2020-04-07T17:04:26Z"
  },
  "config": {
    "operationMode": "IMPORT_FOCUS",
    "lastUpdated": "2020-04-07T17:04:26Z"
  },
  "information": {
    "id": "7deb27f8-794f-467b-855e-5c61dd9f2cb3",
    "brand": "string",
    "model": "Powerwall",
    "siteName": "Powerwall Home",
    "installationDate": "2020-04-07T17:04:26Z"
  },
  "location": {
    "longitude": 10.7197486,
    "latitude": 59.9173985
  },
  "capabilities": {
    "exportFocus": {
      "isCapable": false,
      "interventionIds": [
        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
      ]
    },
    "importFocus": {
      "isCapable": false,
      "interventionIds": [
        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
      ]
    },
    "timeOfUse": {
      "isCapable": false,
      "interventionIds": [
        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
      ]
    },
    "selfReliance": {
      "isCapable": false,
      "interventionIds": [
        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
      ]
    }
  },
  "scopes": [
    "string"
  ]
}
Was this section helpful?

Set operation mode for batteryBeta

POST /batteries/{batteryId}/operation-mode

Request an operationMode change for a battery. This request creates an Action that will retry until the battery's operationMode matches the expected value. The Action must complete before any further commands can be sent to the battery. Only one Action can be active for a specific battery at a time. If a new Action is created, the previous Action will be automatically cancelled and transitioned to the CANCELLED state. Regardless of operation mode, the battery's charge limit will not fall below dischargeLimit except in emergency power situations. Transitions can be tracked via the user:vendor-action:updated webhook event or Get Operation Mode ActionAPI.

Request

Path parameters
batteryId string<uuid> Required

The ID of the battery being targeted.

Attributes
  • operationMode string Required

    Desired operation mode of the battery.

    • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
    • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
    • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
    • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

    Possible enum values:

      IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE

Response 200

Attributes
  • id string<uuid>

    The ID of the action.

  • userId string

    The ID of the user that owns the target of this action.

  • createdAt string<date-time>

    Time when this action was created

  • updatedAt string<date-time>

    Time when this action was last updated

  • completedAt string<date-time> or null

    Time when the action transitioned to a non-pending state.

  • state string

    The real-time status of an action executed on a target.

    • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
    • CONFIRMED: Successful transition of the target to the desired state.
    • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
    • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

    Possible enum values:

      PENDINGCONFIRMEDFAILEDCANCELLED
  • targetId string

    ID of the battery which this action is controlling.

  • targetType string

    Possible enum values:

      battery
  • targetState object

    Target battery operation mode

    Show child attributes
    • targetState.operationMode string

      Desired operation mode of the battery.

      • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

      Possible enum values:

        IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE

Response example

{
  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
  "createdAt": "2020-04-07T17:04:26Z",
  "updatedAt": "2020-04-07T17:04:26Z",
  "completedAt": "2020-04-07T17:04:26Z",
  "state": "PENDING",
  "targetId": "ac03a513-5494-4e1c-9dd7-2a29dc024312",
  "targetType": "battery",
  "targetState": {
    "operationMode": "IMPORT_FOCUS"
  }
}

Response 400

A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the battery cannot perform the action.

Attributes
  • type string

    A URI reference that identifies the problem type.

  • title string

    A short, human-readable summary of the problem type.

  • detail string

    A human-readable explanation specific to this occurrence of the problem.

Response example

{
  "type": "https://docs.enode.io/problems/im-a-teapot",
  "title": "I'm a teapot",
  "detail": "The requested entity body is short and stout."
}
Was this section helpful?

Get operation mode actionBeta

GET /batteries/actions/{actionId}

Returns the current state of the requested Action.

Request

Path parameters
actionId string<uuid> Required

ID of the Action.

Response 200

Attributes
  • id string<uuid>

    The ID of the action.

  • userId string

    The ID of the user that owns the target of this action.

  • createdAt string<date-time>

    Time when this action was created

  • updatedAt string<date-time>

    Time when this action was last updated

  • completedAt string<date-time> or null

    Time when the action transitioned to a non-pending state.

  • state string

    The real-time status of an action executed on a target.

    • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
    • CONFIRMED: Successful transition of the target to the desired state.
    • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
    • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

    Possible enum values:

      PENDINGCONFIRMEDFAILEDCANCELLED
  • targetId string

    ID of the battery which this action is controlling.

  • targetType string

    Possible enum values:

      battery
  • targetState object

    Target battery operation mode

    Show child attributes
    • targetState.operationMode string

      Desired operation mode of the battery.

      • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

      Possible enum values:

        IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE

Response example

{
  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
  "createdAt": "2020-04-07T17:04:26Z",
  "updatedAt": "2020-04-07T17:04:26Z",
  "completedAt": "2020-04-07T17:04:26Z",
  "state": "PENDING",
  "targetId": "ac03a513-5494-4e1c-9dd7-2a29dc024312",
  "targetType": "battery",
  "targetState": {
    "operationMode": "IMPORT_FOCUS"
  }
}

Response 404

Action not found.

Was this section helpful?

Cancel battery actionBeta

POST /batteries/actions/{actionId}/cancel

Cancels a pending battery Action, halting any further attempts by Enode to execute it.

Note: This only updates the Action's status to CANCELLED within Enode and does not reflect a change in the vendor's cloud. Thus any pending Action in the vendor's cloud might still be executed.

Request

Path parameters
actionId string<uuid> Required

ID of the Action.

Response 200

Attributes
  • id string<uuid>

    The ID of the action.

  • userId string

    The ID of the user that owns the target of this action.

  • createdAt string<date-time>

    Time when this action was created

  • updatedAt string<date-time>

    Time when this action was last updated

  • completedAt string<date-time> or null

    Time when the action transitioned to a non-pending state.

  • state string

    The real-time status of an action executed on a target.

    • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
    • CONFIRMED: Successful transition of the target to the desired state.
    • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
    • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

    Possible enum values:

      PENDINGCONFIRMEDFAILEDCANCELLED
  • targetId string

    ID of the battery which this action is controlling.

  • targetType string

    Possible enum values:

      battery
  • targetState object

    Target battery operation mode

    Show child attributes
    • targetState.operationMode string

      Desired operation mode of the battery.

      • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

      Possible enum values:

        IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE

Response example

{
  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
  "createdAt": "2020-04-07T17:04:26Z",
  "updatedAt": "2020-04-07T17:04:26Z",
  "completedAt": "2020-04-07T17:04:26Z",
  "state": "PENDING",
  "targetId": "ac03a513-5494-4e1c-9dd7-2a29dc024312",
  "targetType": "battery",
  "targetState": {
    "operationMode": "IMPORT_FOCUS"
  }
}

Response 404

Action not found.

Response 409

Action already in a resolved state and can therefore not be cancelled.

Attributes
  • id string<uuid>

    The ID of the action.

  • userId string

    The ID of the user that owns the target of this action.

  • createdAt string<date-time>

    Time when this action was created

  • updatedAt string<date-time>

    Time when this action was last updated

  • completedAt string<date-time> or null

    Time when the action transitioned to a non-pending state.

  • targetId string

    ID of the battery which this action is controlling.

  • targetType string

    Possible enum values:

      battery
  • targetState object

    Target battery operation mode

    Show child attributes
    • targetState.operationMode string

      Desired operation mode of the battery.

      • IMPORT_FOCUS: Prioritizes charging the battery. Draws power from the grid and any excess solar for charging.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the grid.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined utility rate plan. Energy may be consumed from solar, battery, or grid sources, depending on the current prices and your user's settings in the OEM app. Energy may be exported to the grid from solar or battery sources, depending on current prices and your user's settings in the OEM app.
      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritize using own energy from solar or battery for household consumption before importing from grid. Energy may be exported to the grid from solar, depending on excess solar and your user's settings in the OEM app.

      Possible enum values:

        IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE
  • state string

    The real-time status of an action executed on a target.

    • CONFIRMED: Successful transition of the target to the desired state.
    • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
    • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

    Possible enum values:

      CONFIRMEDFAILEDCANCELLED

Response example

{
  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
  "createdAt": "2020-04-07T17:04:26Z",
  "updatedAt": "2020-04-07T17:04:26Z",
  "completedAt": "2020-04-07T17:04:26Z",
  "targetId": "ac03a513-5494-4e1c-9dd7-2a29dc024312",
  "targetType": "battery",
  "targetState": {
    "operationMode": "IMPORT_FOCUS"
  },
  "state": "CONFIRMED"
}
Was this section helpful?

Refresh battery dataBeta

POST /batteries/{batteryId}/refresh-hint

Use this endpoint to initiate an expedited data refresh for the specified battery.

Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

Request

Path parameters
batteryId string<uuid> Required

The ID of the battery being targeted.

Response 204

Refresh hint registered successfully.

Response 404

The specified battery was not found.

Was this section helpful?

Chargers

EV Chargers provide charging data and can be controlled via Control ChargingAPI and Schedules

List chargers

GET /chargers

List all available Chargers for the User.

Response 200

Attributes (list of string)

    Response example

    [
      "string"
    ]
    Was this section helpful?

    Get charger

    GET /chargers/{chargerId}

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Query parameters
    field object Deprecated

    Functionality moved in Api Version 2023-08-01 to endpoint POST /chargers/{chargerId}/refresh-hint.

    If you specify any fields here, we make a request to the Charger's OEM APIs and return the updated data.

    This will slow down your integration. In cases of vendor downtime requests with fields may take up to a minute to complete, while requests without fields will always be fast. Enode polls all devices connected to our platform, so any cached data returned will not be older than 10 minutes (unless the vendor APIs are unavailable, in which case you can consult the lastSeen & isReachable fields on the charger).

    By default, no fields are included, and the latest cached full Charger object will be returned.

    Default value: []

    Response 200

    Attributes
    • id string

      Charger ID

    • userId string

      The ID of the user that linked this charger.

    • vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXTESLAOHMEGARO
    • lastSeen string<date-time>

      The last time Enode communicated with the charger.

    • isReachable boolean

      Whether live data from the charger is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the charger's cloud service if that service has determined that its cache is valid.

    • chargingLocationId string<uuid> or null

      ID of the charging location the charger is currently positioned at (if any).

    • chargeState object

      Latest information about the charger. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

      Show child attributes
      • chargeState.isPluggedIn boolean or null

        Indicates whether the charger has a vehicle plugged into it (regardless of whether that vehicle is actually charging)

      • chargeState.isCharging boolean or null

        Indicates whether the charger is currently delivering power to the vehicle and actively charging its battery.

      • chargeState.chargeRate number or null

        The current charge rate in kW.

        This property is only available when the charger is actively charging a vehicle, and is null any other time.

      • chargeState.lastUpdated string<date-time> or null

        Time of latest charge state update

      • chargeState.maxCurrent number or null

        Desired max current in amperes, if set

      • chargeState.powerDeliveryState string

        The current state of power delivery between the vehicle and charger.

        • UNKNOWN: The state of power delivery is currently unknown.
        • UNPLUGGED: The vehicle is not connected to the charger.
        • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
        • PLUGGED_IN:CHARGING: The charger is actively delivering power to the vehicle, causing the battery level to increase.
        • PLUGGED_IN:STOPPED: The vehicle is plugged in, but the charger has been stopped. It is possible to transition into a charging state by sending a start command.
        • PLUGGED_IN:NO_POWER: The charger attempted to initialize charging, however no external power was accepted by the vehicle. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
        • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

        Possible enum values:

          UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
    • information object

      Descriptive information about the Charger

      Show child attributes
      • information.brand string

        Charger brand

        Possible enum values:

          ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eFroniusChargePointEnel XTeslaOhmeGaro
      • information.model string

        Charger model

      • information.year number or null

        Charger production year

      • information.id string or null

        The vendor's charger ID. This value is deprecated. Do not use this value to refer to chargers.

    • capabilities object

      A collection of descriptors that describe the capabilities of this specific charger

      Show child attributes
      • capabilities.information object

        Full availability of information data.

        Show child attributes
        • capabilities.information.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.information.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.chargeState object

        Full availability of chargeState data.

        Show child attributes
        • capabilities.chargeState.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.chargeState.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.startCharging object

        Supports START charging command.

        Show child attributes
        • capabilities.startCharging.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.startCharging.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.stopCharging object

        Supports STOP charging command.

        Show child attributes
        • capabilities.stopCharging.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.stopCharging.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.setMaxCurrent object

        Ability to set the max charge rate.

        Show child attributes
        • capabilities.setMaxCurrent.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.setMaxCurrent.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • scopes array of string

      Scopes that the user has granted for this charger.

    Response example

    {
      "id": "2211e263-0362-4235-83f4-887bdf3ee414",
      "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
      "vendor": "ZAPTEC",
      "lastSeen": "2023-03-21T21:08:27.596Z",
      "isReachable": true,
      "chargingLocationId": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
      "chargeState": {
        "isPluggedIn": true,
        "isCharging": true,
        "chargeRate": 6.939,
        "lastUpdated": "2023-03-21T16:39:20.000Z",
        "maxCurrent": 16,
        "powerDeliveryState": "PLUGGED_IN:CHARGING"
      },
      "information": {
        "id": "2211e263-0362-4235-83f4-887bdf3ee414",
        "brand": "Zaptec",
        "model": "ZAPTEC PRO",
        "year": null
      },
      "capabilities": {
        "information": {
          "isCapable": true,
          "interventionIds": []
        },
        "chargeState": {
          "isCapable": true,
          "interventionIds": []
        },
        "startCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "stopCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "setMaxCurrent": {
          "isCapable": false,
          "interventionIds": [
            "dbdd77ec82b6-d6d4-d6d4-d6d4-dbdd77ec82b6"
          ]
        }
      },
      "scopes": [
        "charger:control:charging",
        "charger:read:data"
      ]
    }
    Was this section helpful?

    Update chargerBeta

    PUT /chargers/{chargerId}

    Update the chargingLocationId field on a Charger.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Attributes
    • chargingLocationId string<uuid> or null Required

    Response 200

    Attributes
    • id string

      Charger ID

    • userId string

      The ID of the user that linked this charger.

    • vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXTESLAOHMEGARO
    • lastSeen string<date-time>

      The last time Enode communicated with the charger.

    • isReachable boolean

      Whether live data from the charger is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the charger's cloud service if that service has determined that its cache is valid.

    • chargingLocationId string<uuid> or null

      ID of the charging location the charger is currently positioned at (if any).

    • chargeState object

      Latest information about the charger. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

      Show child attributes
      • chargeState.isPluggedIn boolean or null

        Indicates whether the charger has a vehicle plugged into it (regardless of whether that vehicle is actually charging)

      • chargeState.isCharging boolean or null

        Indicates whether the charger is currently delivering power to the vehicle and actively charging its battery.

      • chargeState.chargeRate number or null

        The current charge rate in kW.

        This property is only available when the charger is actively charging a vehicle, and is null any other time.

      • chargeState.lastUpdated string<date-time> or null

        Time of latest charge state update

      • chargeState.maxCurrent number or null

        Desired max current in amperes, if set

      • chargeState.powerDeliveryState string

        The current state of power delivery between the vehicle and charger.

        • UNKNOWN: The state of power delivery is currently unknown.
        • UNPLUGGED: The vehicle is not connected to the charger.
        • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
        • PLUGGED_IN:CHARGING: The charger is actively delivering power to the vehicle, causing the battery level to increase.
        • PLUGGED_IN:STOPPED: The vehicle is plugged in, but the charger has been stopped. It is possible to transition into a charging state by sending a start command.
        • PLUGGED_IN:NO_POWER: The charger attempted to initialize charging, however no external power was accepted by the vehicle. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
        • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

        Possible enum values:

          UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
    • information object

      Descriptive information about the Charger

      Show child attributes
      • information.brand string

        Charger brand

        Possible enum values:

          ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eFroniusChargePointEnel XTeslaOhmeGaro
      • information.model string

        Charger model

      • information.year number or null

        Charger production year

      • information.id string or null

        The vendor's charger ID. This value is deprecated. Do not use this value to refer to chargers.

    • capabilities object

      A collection of descriptors that describe the capabilities of this specific charger

      Show child attributes
      • capabilities.information object

        Full availability of information data.

        Show child attributes
        • capabilities.information.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.information.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.chargeState object

        Full availability of chargeState data.

        Show child attributes
        • capabilities.chargeState.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.chargeState.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.startCharging object

        Supports START charging command.

        Show child attributes
        • capabilities.startCharging.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.startCharging.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.stopCharging object

        Supports STOP charging command.

        Show child attributes
        • capabilities.stopCharging.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.stopCharging.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • capabilities.setMaxCurrent object

        Ability to set the max charge rate.

        Show child attributes
        • capabilities.setMaxCurrent.isCapable boolean

          The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

        • capabilities.setMaxCurrent.interventionIds array of string

          IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

    • scopes array of string

      Scopes that the user has granted for this charger.

    Response example

    {
      "id": "2211e263-0362-4235-83f4-887bdf3ee414",
      "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
      "vendor": "ZAPTEC",
      "lastSeen": "2023-03-21T21:08:27.596Z",
      "isReachable": true,
      "chargingLocationId": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
      "chargeState": {
        "isPluggedIn": true,
        "isCharging": true,
        "chargeRate": 6.939,
        "lastUpdated": "2023-03-21T16:39:20.000Z",
        "maxCurrent": 16,
        "powerDeliveryState": "PLUGGED_IN:CHARGING"
      },
      "information": {
        "id": "2211e263-0362-4235-83f4-887bdf3ee414",
        "brand": "Zaptec",
        "model": "ZAPTEC PRO",
        "year": null
      },
      "capabilities": {
        "information": {
          "isCapable": true,
          "interventionIds": []
        },
        "chargeState": {
          "isCapable": true,
          "interventionIds": []
        },
        "startCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "stopCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "setMaxCurrent": {
          "isCapable": false,
          "interventionIds": [
            "dbdd77ec82b6-d6d4-d6d4-d6d4-dbdd77ec82b6"
          ]
        }
      },
      "scopes": [
        "charger:control:charging",
        "charger:read:data"
      ]
    }
    Was this section helpful?

    Control charging

    POST /chargers/{chargerId}/charging

    Request for a charger to start or stop charging. This request creates an Action that will retry until the charger's powerDeliveryState matches the expected value. The Action must complete before any further commands are sent to the charger. Only one Action can be active for a specific charger at a time. If a new Action is created, the previous Action will be automatically cancelled and transitioned to the CANCELLED state. Transitions can be tracked via the user:vendor-action:updated webhook event or Get Charger ActionAPI.

    This endpoint returns an error with status code 422 if the charger is controlled by a schedule. To restore user control, either disable the schedule or use Create Smart OverrideAPI to temporarily enable charging.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Attributes
    • action string Required

      Charging action to perform

      Possible enum values:

        STARTSTOP

    Response 200

    Resulting charge action

    Attributes
    • id string<uuid>

      The ID of the action.

    • userId string

      The ID of the user that owns the target of this action.

    • createdAt string<date-time>

      Time when this action was created

    • updatedAt string<date-time>

      Time when this action was last updated

    • completedAt string<date-time> or null

      Time when the action transitioned to a non-pending state.

    • state string

      The real-time status of an action executed on a target.

      • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
      • CONFIRMED: Successful transition of the target to the desired state.
      • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
      • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

      Possible enum values:

        PENDINGCONFIRMEDFAILEDCANCELLED
    • targetId string

      ID of the target which this action is controlling.

    • targetType string

      Possible enum values:

        vehiclecharger
    • kind string

      The charging action to perform

      Possible enum values:

        STARTSTOP
    • failureReason object or null

      Information about why was this action not executed successfully.

      Show child attributes
      • failureReason.type string

        A machine-readable high level error category.

        • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
        • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
        • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
        • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
        • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
        • NOT_FOUND: The chargeable was deleted while the action was PENDING.

        Possible enum values:

          NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
      • failureReason.detail string

        A human-readable explanation of why the charging action was unsuccessful.

    Response example

    {
      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
      "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
      "createdAt": "2020-04-07T17:04:26Z",
      "updatedAt": "2020-04-07T17:04:26Z",
      "completedAt": "2020-04-07T17:04:26Z",
      "state": "PENDING",
      "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
      "targetType": "vehicle",
      "kind": "START",
      "failureReason": {
        "type": "NO_RESPONSE",
        "detail": "The chargeable device remained unreachable."
      }
    }

    Response 400

    A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the charger cannot perform the action, is fully charged, or is already in the desired state.

    Attributes
    • type string

      A URI reference that identifies the problem type.

    • title string

      A short, human-readable summary of the problem type.

    • detail string

      A human-readable explanation specific to this occurrence of the problem.

    Response example

    {
      "type": "https://docs.enode.io/problems/im-a-teapot",
      "title": "I'm a teapot",
      "detail": "The requested entity body is short and stout."
    }

    Response 422

    Charger controlled by a Schedule

    Attributes
    • type string

      A URI reference that identifies the problem type.

    • title string

      A short, human-readable summary of the problem type.

    • detail string

      A human-readable explanation specific to this occurrence of the problem.

    Response example

    {
      "type": "https://docs.enode.io/problems/im-a-teapot",
      "title": "I'm a teapot",
      "detail": "The requested entity body is short and stout."
    }
    Was this section helpful?

    Set max current

    POST /chargers/{chargerId}/max-current

    Register for a change of the maxCurrent field on a charger. This request creates an Action that will retry until the charger's maxCurrent matches the expected value. The Action must complete before any further commands are sent to the charger. Only one Action can be active for a specific charger at a time. If a new Action is created, the previous Action will be automatically cancelled and transitioned to the CANCELLED state. Transitions can be tracked via the user:vendor-action:updated webhook event or Get Charger ActionAPI.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Attributes
    • maxCurrent number Required

      Desired max current in ampere

    Response 200

    Attributes
    • id string<uuid>

      The ID of the action.

    • userId string

      The ID of the user that owns the target of this action.

    • createdAt string<date-time>

      Time when this action was created

    • updatedAt string<date-time>

      Time when this action was last updated

    • completedAt string<date-time> or null

      Time when the action transitioned to a non-pending state.

    • state string

      The real-time status of an action executed on a target.

      • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
      • CONFIRMED: Successful transition of the target to the desired state.
      • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
      • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

      Possible enum values:

        PENDINGCONFIRMEDFAILEDCANCELLED
    • targetId string

      ID of the entity which this action is controlling.

    • targetType string

      Possible enum values:

        vehiclecharger
    • targetState object

      Target maximum current for entity

      Show child attributes
      • targetState.maxCurrent number

        Desired max current in ampere

    • failureReason object or null

      Information about why was this action not executed successfully.

      Show child attributes
      • failureReason.type string

        A machine-readable high level error category.

        • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
        • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
        • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
        • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
        • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
        • NOT_FOUND: The chargeable was deleted while the action was PENDING.

        Possible enum values:

          NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
      • failureReason.detail string

        A human-readable explanation of why the charging action was unsuccessful.

    Response example

    {
      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
      "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
      "createdAt": "2020-04-07T17:04:26Z",
      "updatedAt": "2020-04-07T17:04:26Z",
      "completedAt": "2020-04-07T17:04:26Z",
      "state": "PENDING",
      "targetId": "string",
      "targetType": "vehicle",
      "targetState": {
        "maxCurrent": 10
      },
      "failureReason": {
        "type": "NO_RESPONSE",
        "detail": "The chargeable device remained unreachable."
      }
    }

    Response 400

    A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the charger cannot perform the action.

    Attributes
    • type string

      A URI reference that identifies the problem type.

    • title string

      A short, human-readable summary of the problem type.

    • detail string

      A human-readable explanation specific to this occurrence of the problem.

    Response example

    {
      "type": "https://docs.enode.io/problems/im-a-teapot",
      "title": "I'm a teapot",
      "detail": "The requested entity body is short and stout."
    }
    Was this section helpful?

    Get charger action

    GET /chargers/actions/{actionId}

    Returns the current state of the requested Action.

    Request

    Path parameters
    actionId string<uuid> Required

    ID of the Action.

    Response 200

    Attributes
    • id string<uuid>

      The ID of the action.

    • userId string

      The ID of the user that owns the target of this action.

    • createdAt string<date-time>

      Time when this action was created

    • updatedAt string<date-time>

      Time when this action was last updated

    • completedAt string<date-time> or null

      Time when the action transitioned to a non-pending state.

    • state string

      The real-time status of an action executed on a target.

      • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
      • CONFIRMED: Successful transition of the target to the desired state.
      • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
      • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

      Possible enum values:

        PENDINGCONFIRMEDFAILEDCANCELLED
    • targetId string

      ID of the target which this action is controlling.

    • targetType string

      Possible enum values:

        vehiclecharger
    • kind string

      The charging action to perform

      Possible enum values:

        STARTSTOP
    • failureReason object or null

      Information about why was this action not executed successfully.

      Show child attributes
      • failureReason.type string

        A machine-readable high level error category.

        • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
        • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
        • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
        • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
        • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
        • NOT_FOUND: The chargeable was deleted while the action was PENDING.

        Possible enum values:

          NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
      • failureReason.detail string

        A human-readable explanation of why the charging action was unsuccessful.

    Response example

    {
      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
      "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
      "createdAt": "2020-04-07T17:04:26Z",
      "updatedAt": "2020-04-07T17:04:26Z",
      "completedAt": "2020-04-07T17:04:26Z",
      "state": "PENDING",
      "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
      "targetType": "vehicle",
      "kind": "START",
      "failureReason": {
        "type": "NO_RESPONSE",
        "detail": "The chargeable device remained unreachable."
      }
    }

    Response 404

    Action not found.

    Was this section helpful?

    Cancel charger action

    POST /chargers/actions/{actionId}/cancel

    Cancels a pending Action, halting any further attempts by Enode to execute it.

    Note: This only updates the Action's status to CANCELLED within Enode and does not reflect a change in the vendor's cloud. Thus any pending Action in the vendor's cloud might still be executed.

    Request

    Path parameters
    actionId string<uuid> Required

    ID of the Action.

    Response 200

    Attributes
    • id string<uuid>

      The ID of the action.

    • userId string

      The ID of the user that owns the target of this action.

    • createdAt string<date-time>

      Time when this action was created

    • updatedAt string<date-time>

      Time when this action was last updated

    • completedAt string<date-time> or null

      Time when the action transitioned to a non-pending state.

    • state string

      The real-time status of an action executed on a target.

      • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
      • CONFIRMED: Successful transition of the target to the desired state.
      • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
      • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

      Possible enum values:

        PENDINGCONFIRMEDFAILEDCANCELLED
    • targetId string

      ID of the target which this action is controlling.

    • targetType string

      Possible enum values:

        vehiclecharger
    • kind string

      The charging action to perform

      Possible enum values:

        STARTSTOP
    • failureReason object or null

      Information about why was this action not executed successfully.

      Show child attributes
      • failureReason.type string

        A machine-readable high level error category.

        • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
        • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
        • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
        • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
        • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
        • NOT_FOUND: The chargeable was deleted while the action was PENDING.

        Possible enum values:

          NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
      • failureReason.detail string

        A human-readable explanation of why the charging action was unsuccessful.

    Response example

    {
      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
      "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
      "createdAt": "2020-04-07T17:04:26Z",
      "updatedAt": "2020-04-07T17:04:26Z",
      "completedAt": "2020-04-07T17:04:26Z",
      "state": "PENDING",
      "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
      "targetType": "vehicle",
      "kind": "START",
      "failureReason": {
        "type": "NO_RESPONSE",
        "detail": "The chargeable device remained unreachable."
      }
    }

    Response 404

    Action not found.

    Response 409

    Action already in a resolved state.

    Attributes
    • id string<uuid>

      The ID of the action.

    • userId string

      The ID of the user that owns the target of this action.

    • createdAt string<date-time>

      Time when this action was created

    • updatedAt string<date-time>

      Time when this action was last updated

    • completedAt string<date-time> or null

      Time when the action transitioned to a non-pending state.

    • state string

      The real-time status of an action executed on a target.

      • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
      • CONFIRMED: Successful transition of the target to the desired state.
      • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
      • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

      Possible enum values:

        PENDINGCONFIRMEDFAILEDCANCELLED
    • targetId string

      ID of the target which this action is controlling.

    • targetType string

      Possible enum values:

        vehiclecharger
    • kind string

      The charging action to perform

      Possible enum values:

        STARTSTOP
    • failureReason object or null

      Information about why was this action not executed successfully.

      Show child attributes
      • failureReason.type string

        A machine-readable high level error category.

        • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
        • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
        • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
        • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
        • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
        • NOT_FOUND: The chargeable was deleted while the action was PENDING.

        Possible enum values:

          NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
      • failureReason.detail string

        A human-readable explanation of why the charging action was unsuccessful.

    Response example

    {
      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
      "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
      "createdAt": "2020-04-07T17:04:26Z",
      "updatedAt": "2020-04-07T17:04:26Z",
      "completedAt": "2020-04-07T17:04:26Z",
      "state": "PENDING",
      "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
      "targetType": "vehicle",
      "kind": "START",
      "failureReason": {
        "type": "NO_RESPONSE",
        "detail": "The chargeable device remained unreachable."
      }
    }
    Was this section helpful?

    Refresh charger data

    POST /chargers/{chargerId}/refresh-hint

    Use this endpoint to initiate an expedited data refresh for the specified charger.

    Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
    This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Response 204

    Refresh hint registered successfully.

    Response 404

    The specified charger was not found.

    Was this section helpful?

    Create smart override

    POST /chargers/{chargerId}/smart-override

    Overrides an active smart feature by forcing the charger to start charging. This feature is meant to be used in situations where the user wants to charge immediately without disabling other smart features. The override remains active until the charger stops charging, or until the End Smart OverrideAPI endpoint is called. When the override ends, the overridden smart feature will regain control of the charger. This endpoint should not be used for standard charge control, use the Control ChargingAPI endpoint instead.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Response 200

    Attributes
    • createdAt string<date-time>

      Time at which the smart override was created.

    • endedAt string<date-time> or null

      Time at which the smart override was ended. If null, the smart override is still active.

    • targetId string

      ID of the target which this smart override is affecting.

    • vendorActionId string<uuid> or null

      The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

    • userId string

      ID of the User

    • vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXOHMEGAROENPHASEHUAWEI
    • targetType string

      Possible enum values:

        charger

    Response example

    {
      "createdAt": "2020-04-07T17:04:26Z",
      "endedAt": "2020-04-07T17:04:26Z",
      "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
      "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f",
      "userId": "0bec82e0-0d54-4f2f-83b1-5b248604de0b",
      "vendor": "TESLA",
      "targetType": "charger"
    }
    Was this section helpful?

    End smart override

    DELETE /chargers/{chargerId}/smart-override

    Ends any active Smart Override for the charger specified by chargerId. If previously configured, Schedules or Smart Charging will resume control over the target charger. Note that this does not mean the charger will stop charging, only that it will return to the state expected by the active Schedule or Smart Charging Plan.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Response 200

    Attributes
    • createdAt string<date-time>

      Time at which the smart override was created.

    • endedAt string<date-time> or null

      Time at which the smart override was ended. If null, the smart override is still active.

    • targetId string

      ID of the target which this smart override is affecting.

    • vendorActionId string<uuid> or null

      The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

    • userId string

      ID of the User

    • vendor string

      Machine-friendly name of the vendor. Use this in API requests.

      Possible enum values:

        AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXOHMEGAROENPHASEHUAWEI
    • targetType string

      Possible enum values:

        charger

    Response example

    {
      "createdAt": "2020-04-07T17:04:26Z",
      "endedAt": "2020-04-07T17:04:26Z",
      "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
      "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f",
      "userId": "0bec82e0-0d54-4f2f-83b1-5b248604de0b",
      "vendor": "TESLA",
      "targetType": "charger"
    }

    Response 404

    No Smart Override Exists

    Attributes
    • type string

      A URI reference that identifies the problem type.

    • title string

      A short, human-readable summary of the problem type.

    • detail string

      A human-readable explanation specific to this occurrence of the problem.

    Response example

    {
      "type": "https://docs.enode.io/problems/im-a-teapot",
      "title": "I'm a teapot",
      "detail": "The requested entity body is short and stout."
    }
    Was this section helpful?

    Get smart charging policyBeta

    GET /chargers/{chargerId}/smart-charging-policy

    Get the configured smart charging policy for this charger.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Response 200

    Attributes
    • isEnabled boolean

      When enabled, this charger's charging status may be controlled by Smart Charging

      Default value: false

    • deadline string

      The HH:MM deadline for the cycle. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

    • chargingDuration string

      The HH:MM charging duration for each cycle.

    Response example

    {
      "isEnabled": false,
      "deadline": "07:00",
      "chargingDuration": "07:00"
    }
    Was this section helpful?

    Update smart charging policyBeta

    PUT /chargers/{chargerId}/smart-charging-policy

    Update the configured smart charging policy for this charger.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Attributes
    • isEnabled boolean Optional

      When enabled, this charger's charging status may be controlled by Smart Charging

      Default value: false

    • deadline string Optional

      The HH:MM deadline for the cycle. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

    • chargingDuration string Optional

      The HH:MM charging duration for each cycle.

    Response 200

    Attributes
    • isEnabled boolean

      When enabled, this charger's charging status may be controlled by Smart Charging

      Default value: false

    • deadline string

      The HH:MM deadline for the cycle. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

    • chargingDuration string

      The HH:MM charging duration for each cycle.

    Response example

    {
      "isEnabled": false,
      "deadline": "07:00",
      "chargingDuration": "07:00"
    }
    Was this section helpful?

    Get smart charging statusBeta

    GET /chargers/{chargerId}/smart-charging-status

    Get the current smart charging status for this charger

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Response 200

    Attributes
    • chargerId string

      Charger ID

    • userId string

      User ID

    • state string

      An enum value that describes the current smart charging state of the charger. Every charger is in exactly one state, at all times

      Possible enum values:

        DISABLEDCHARGER_NOT_REACHABLEVEHICLE_NOT_PLUGGED_INCHARGING_PAUSEDCHARGINGAWAITING_PRICES
    • chargingIntervals array of object

      Charging intervals for this cycle

      Show child attributes
      • chargingIntervals[].status string

        Possible enum values:

          IN_PROGRESSCOMPLETEDPLANNED
      • chargingIntervals[].startTime string

        The start time of this charging interval

      • chargingIntervals[].endTime string

        The end time of this charging interval

    Response example

    {
      "chargerId": "string",
      "userId": "string",
      "state": "DISABLED",
      "chargingIntervals": [
        {
          "status": "IN_PROGRESS",
          "startTime": "2023-03-21T21:08:27.596Z",
          "endTime": "2023-03-21T21:08:27.596Z"
        }
      ]
    }
    Was this section helpful?

    Charging locations

    A user creates charging locations to denote locations where they pay for the power used to charge their vehicle, heat their home, etc. Smart Charging is active at these locations only.

    List charging locationsDeprecated

    GET /charging-locations

    Returns a list of Charging Locations registered to the User. Removed in version 2023-08-01. Endpoint moved to /locations.

    Response 200

    Attributes (list of object)
    • name string

      User-supplied name for the Charging Location

    • longitude number

      Longitude in degrees

    • latitude number

      Latitude in degrees

    • timezoneName string

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response example

    [
      {
        "name": "Enode",
        "latitude": 59.9173985,
        "longitude": 10.7197486,
        "timezoneName": "Europe/Oslo"
      }
    ]
    Was this section helpful?

    Create charging locationDeprecated

    POST /charging-locations

    Create a Charging Location for a User. Removed in version 2023-08-01. Endpoint moved to /locations.

    Request

    Attributes
    • name string Required

      User-supplied name for the Charging Location

    • longitude number Required

      Longitude in degrees

    • latitude number Required

      Latitude in degrees

    • timezoneName string Required

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response 200

    Created

    Attributes
    • name string

      User-supplied name for the Charging Location

    • longitude number

      Longitude in degrees

    • latitude number

      Latitude in degrees

    • timezoneName string

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response example

    {
      "name": "Enode",
      "latitude": 59.9173985,
      "longitude": 10.7197486,
      "timezoneName": "Europe/Oslo"
    }
    Was this section helpful?

    Get charging locationDeprecated

    GET /charging-locations/{chargingLocationId}

    Fetch a Charging Location. Removed in version 2023-08-01. Endpoint moved to /locations/{locationId}.

    Request

    Path parameters
    chargingLocationId string<uuid> Required

    ID of the ChargingLocation.

    Response 200

    Attributes
    • name string

      User-supplied name for the Charging Location

    • longitude number

      Longitude in degrees

    • latitude number

      Latitude in degrees

    • timezoneName string

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response example

    {
      "name": "Enode",
      "latitude": 59.9173985,
      "longitude": 10.7197486,
      "timezoneName": "Europe/Oslo"
    }
    Was this section helpful?

    Delete charging locationDeprecated

    DELETE /charging-locations/{chargingLocationId}

    Delete a Charging Location. Removed in version 2023-08-01. Endpoint moved to /locations/{locationId}.

    Request

    Path parameters
    chargingLocationId string<uuid> Required

    ID of the ChargingLocation.

    Response 200

    Attributes
    • name string

      User-supplied name for the Charging Location

    • longitude number

      Longitude in degrees

    • latitude number

      Latitude in degrees

    • timezoneName string

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response example

    {
      "name": "Enode",
      "latitude": 59.9173985,
      "longitude": 10.7197486,
      "timezoneName": "Europe/Oslo"
    }
    Was this section helpful?

    Update charging locationDeprecated

    PUT /charging-locations/{chargingLocationId}

    Updates a charging location with new configuration. Removed in version 2023-08-01. Endpoint moved to /locations/{locationId}.

    Request

    Path parameters
    chargingLocationId string<uuid> Required

    ID of the ChargingLocation.

    Attributes
    • name string Optional

      User-supplied name for the Charging Location

    • longitude number Optional

      Longitude in degrees

    • latitude number Optional

      Latitude in degrees

    • timezoneName string Optional

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response 200

    Attributes
    • name string

      User-supplied name for the Charging Location

    • longitude number

      Longitude in degrees

    • latitude number

      Latitude in degrees

    • timezoneName string

      An IANA TZ database timezone name. This value will be used to convert rules and deadlines for tariffs, smart charging, and schedules into local time. Defaults to UTC.

      Default value: UTC

    Response example

    {
      "name": "Enode",
      "latitude": 59.9173985,
      "longitude": 10.7197486,
      "timezoneName": "Europe/Oslo"
    }
    Was this section helpful?

    HVAC

    HVAC units (heaters, heat pumps, air conditioning, thermostats, etc.) are controlled by altering the mode & target setpoints. This can be done directly using the Set Permanent HoldAPI endpoint, Return to ScheduleAPI, or via Schedules.

    List HVAC units

    GET /hvacs

    List of User HVAC unit IDs

    Response 200

    Attributes (list of string)

      Response example

      [
        "string"
      ]
      Was this section helpful?

      Get action

      GET /hvacs/actions/{actionId}

      Returns the current state of the requested action.

      Request

      Path parameters
      actionId string<uuid> Required

      ID of the Action.

      Response 200

      Attributes
      • id string<uuid>

        The ID of the action.

      • userId string

        The ID of the user that owns the target of this action.

      • createdAt string<date-time>

        Time when this action was created

      • updatedAt string<date-time>

        Time when this action was last updated

      • completedAt string<date-time> or null

        Time when the action transitioned to a non-pending state.

      • state string

        The real-time status of an action executed on a target.

        • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
        • CONFIRMED: Successful transition of the target to the desired state.
        • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
        • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

        Possible enum values:

          PENDINGCONFIRMEDFAILEDCANCELLED
      • targetId string

        ID of the entity asset (HVAC) which this action is controlling.

      • targetType string

        Possible enum values:

          hvac
      • target

      Response example

      {
        "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
        "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
        "createdAt": "2020-04-07T17:04:26Z",
        "updatedAt": "2020-04-07T17:04:26Z",
        "completedAt": "2020-04-07T17:04:26Z",
        "state": "PENDING",
        "targetId": "string",
        "targetType": "hvac",
        "target": {
          "coolSetpoint": 0,
          "mode": "COOL",
          "holdType": "PERMANENT"
        }
      }

      Response 404

      Action not found.

      Was this section helpful?

      Cancel HVAC action

      POST /hvacs/actions/{actionId}/cancel

      Cancels a pending HVAC action, halting any further attempts by Enode to execute it.

      Note: This only updates the action's status to CANCELLED within Enode and does not reflect a change in the vendor's cloud. Thus any pending action in the vendor's cloud might still be executed.

      Request

      Path parameters
      actionId string<uuid> Required

      ID of the Action.

      Response 200

      Attributes
      • id string<uuid>

        The ID of the action.

      • userId string

        The ID of the user that owns the target of this action.

      • createdAt string<date-time>

        Time when this action was created

      • updatedAt string<date-time>

        Time when this action was last updated

      • completedAt string<date-time> or null

        Time when the action transitioned to a non-pending state.

      • state string

        The real-time status of an action executed on a target.

        • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
        • CONFIRMED: Successful transition of the target to the desired state.
        • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
        • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

        Possible enum values:

          PENDINGCONFIRMEDFAILEDCANCELLED
      • targetId string

        ID of the entity asset (HVAC) which this action is controlling.

      • targetType string

        Possible enum values:

          hvac
      • target

      Response example

      {
        "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
        "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
        "createdAt": "2020-04-07T17:04:26Z",
        "updatedAt": "2020-04-07T17:04:26Z",
        "completedAt": "2020-04-07T17:04:26Z",
        "state": "PENDING",
        "targetId": "string",
        "targetType": "hvac",
        "target": {
          "coolSetpoint": 0,
          "mode": "COOL",
          "holdType": "PERMANENT"
        }
      }

      Response 404

      Action not found.

      Response 409

      Action already in a resolved state.

      Attributes
      • id string<uuid>

        The ID of the action.

      • userId string

        The ID of the user that owns the target of this action.

      • createdAt string<date-time>

        Time when this action was created

      • updatedAt string<date-time>

        Time when this action was last updated

      • completedAt string<date-time> or null

        Time when the action transitioned to a non-pending state.

      • state string

        The real-time status of an action executed on a target.

        • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
        • CONFIRMED: Successful transition of the target to the desired state.
        • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
        • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

        Possible enum values:

          PENDINGCONFIRMEDFAILEDCANCELLED
      • targetId string

        ID of the entity asset (HVAC) which this action is controlling.

      • targetType string

        Possible enum values:

          hvac
      • target

      Response example

      {
        "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
        "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
        "createdAt": "2020-04-07T17:04:26Z",
        "updatedAt": "2020-04-07T17:04:26Z",
        "completedAt": "2020-04-07T17:04:26Z",
        "state": "PENDING",
        "targetId": "string",
        "targetType": "hvac",
        "target": {
          "coolSetpoint": 0,
          "mode": "COOL",
          "holdType": "PERMANENT"
        }
      }
      Was this section helpful?

      Get HVAC unit

      GET /hvacs/{hvacId}

      Request

      Path parameters
      hvacId string Required

      ID of the HVAC unit.

      Response 200

      Attributes
      • id string

        HVAC unit ID

      • userId string

        The ID of the user that linked this hvac.

      • vendor string

        Machine-friendly name of the vendor. Use this in API requests.

        Possible enum values:

          TADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMO
      • lastSeen string<date-time>

        The last time Enode successfully communicated with the vendor or when the HVAC unit was initially linked.

      • isReachable boolean

        Whether live data from the HVAC unit is currently reachable from Enode's perspective. It can happen that this 'reachability' refers to reading from a cache operated by the vendor's cloud service, if that service has determined that its cache is valid.

      • consumptionRate number or null

        The current rate of energy consumption in kW. An inactive HVAC will have a consumption rate of 0. HVACs not supporting consumption rate will report null. This value is currently only supported by a small number of devices.

      • information object

        Descriptive information about the HVAC unit

        Show child attributes
        • information.brand string

          Display name of OEM/vendor

          Possible enum values:

            TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
        • information.model string or null

          Device model name

        • information.displayName string

          Name of the device, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

        • information.groupName string or null

          Name of the group the device belongs to, as set by the user on the device/vendor. Groups are typically presented as "rooms" or "zones".

        • information.category string

          HVAC category

          Possible enum values:

            HEATINGCOOLINGHEAT_PUMPAGGREGATOR
      • capabilities object

        An object describing valid states for this HVAC unit.

        Show child attributes
        • capabilities.capableModes array or null

          A list of valid modes for this HVAC unit.

        • capabilities.capableHoldTypes array or null Deprecated

          A list of valid hold types for this HVAC unit.

          Deprecated: Check the setFollowSchedule and setPermanentHold capabilities instead.

        • capabilities.coolSetpointRange object or null

          The range of allowable values for coolSetpoint.

          Show child attributes
          • capabilities.coolSetpointRange.min number or null

            The minimum allowable temperature, inclusive.

          • capabilities.coolSetpointRange.max number or null

            The maximum allowable temperature, inclusive.

        • capabilities.heatSetpointRange object or null

          The range of allowable values for heatSetpoint.

          Show child attributes
          • capabilities.heatSetpointRange.min number or null

            The minimum allowable temperature, inclusive.

          • capabilities.heatSetpointRange.max number or null

            The maximum allowable temperature, inclusive.

        • capabilities.setpointDifferenceRange object or null

          A constraint specifying the minimum and maximum allowable difference between heatSetpoint and coolSetpoint. Only applicable in AUTO mode.

          Show child attributes
          • capabilities.setpointDifferenceRange.min number or null

            The minimum allowable difference, inclusive.

          • capabilities.setpointDifferenceRange.max number or null

            The maximum allowable difference, inclusive.

        • capabilities.setFollowSchedule object

          Supports following a schedule set on the device.

          Show child attributes
          • capabilities.setFollowSchedule.isCapable boolean

            The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

          • capabilities.setFollowSchedule.interventionIds array of string

            IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

        • capabilities.setPermanentHold object

          Supports setting a permanent hold.

          Show child attributes
          • capabilities.setPermanentHold.isCapable boolean

            The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

          • capabilities.setPermanentHold.interventionIds array of string

            IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

      • temperatureState object

        Latest information about temperature. These values replace the deprecated top-level fields and include a freshness indicator. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

        Show child attributes
        • temperatureState.currentTemperature number or null

          Current air temperature reported by device in degrees Celsius.

        • temperatureState.isActive boolean

          Whether the HVAC unit is actively heating or cooling.

        • temperatureState.lastUpdated string<date-time> or null

          Time of last temperature state update. Reflects when the OEM reported a change or Enode recorded a change in any field, whichever is newer

      • thermostatState object

        Latest information about the thermostat state. These values replace the deprecated top-level fields and include a freshness indicator. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

        Show child attributes
        • thermostatState.mode string or null

          The HVAC's mode.

          Possible enum values:

            OFFAUTOCOOLHEAT
        • thermostatState.heatSetpoint number or null

          If mode allows, heat when currentTemperature falls below this point.

        • thermostatState.coolSetpoint number or null

          If mode allows, cool when currentTemperature rises above this point.

        • thermostatState.holdType string or null

          The duration the setpoints and mode are expected to be held. If SCHEDULED, the device is being controlled by an OEM schedule configured on the device.

          Possible enum values:

            PERMANENTSCHEDULED
        • thermostatState.lastUpdated string<date-time> or null

          Time of last thermostat state update. Reflects when the OEM reported a change or Enode recorded a change in any field, whichever is newer.

      • mode string or null Deprecated

        Replaced by thermostatState.mode. The HVAC's mode.

        Possible enum values:

          OFFAUTOCOOLHEAT
      • heatSetpoint number or null Deprecated

        Replaced by thermostatState.heatSetpoint. If mode allows, heat when currentTemperature falls below this point.

      • coolSetpoint number or null Deprecated

        Replaced by thermostatState.coolSetpoint. If mode allows, cool when currentTemperature rises above this point.

      • holdType string or null Deprecated

        Replaced by thermostatState.holdType. The duration the setpoints and mode are expected to be held. If SCHEDULED, the device is being controlled by an OEM schedule configured on the device.

        Possible enum values:

          PERMANENTSCHEDULED
      • isActive boolean Deprecated

        Replaced by temperatureState.isActive. Whether the HVAC unit is actively heating or cooling.

      • currentTemperature number or null Deprecated

        Replaced by temperatureState.currentTemperature. Current air temperature reported by device in degrees Celsius.

      • scopes array of string

        Scopes that the user has granted for this HVAC unit.

      • chargingLocationId string<uuid> or null

        ID of the charging location the HVAC unit is housed at (if any)

      Response example

      {
        "id": "8f39fa8d-8f10-4984-a319-741dc23848c0",
        "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
        "vendor": "ADAX",
        "lastSeen": "2020-04-07T17:04:26.000Z",
        "isReachable": true,
        "isActive": true,
        "currentTemperature": 20.8,
        "consumptionRate": 1.8,
        "mode": "HEAT",
        "heatSetpoint": 22,
        "coolSetpoint": 24,
        "holdType": "PERMANENT",
        "information": {
          "brand": "ADAX",
          "model": "Neo Wi-Fi Skirting",
          "displayName": "Bedroom Panel Heater",
          "groupName": "Bedroom",
          "category": "HEATING"
        },
        "capabilities": {
          "capableModes": [
            "HEAT",
            "COOL",
            "OFF"
          ],
          "capableHoldTypes": [
            "PERMANENT"
          ],
          "coolSetpointRange": {
            "min": 15,
            "max": 25
          },
          "heatSetpointRange": {
            "min": 15,
            "max": 25
          },
          "setpointDifferenceRange": {
            "min": 15,
            "max": 25
          },
          "setFollowSchedule": {
            "isCapable": true,
            "interventionIds": []
          },
          "setPermanentHold": {
            "isCapable": true,
            "interventionIds": []
          }
        },
        "thermostatState": {
          "mode": "HEAT",
          "heatSetpoint": 22,
          "coolSetpoint": 24,
          "holdType": "PERMANENT",
          "lastUpdated": "2020-04-07T17:04:26.000Z"
        },
        "temperatureState": {
          "currentTemperature": 20.8,
          "isActive": true,
          "lastUpdated": "2020-04-07T17:03:26.000Z"
        },
        "scopes": [
          "hvac:control:mode",
          "hvac:read:data"
        ],
        "chargingLocationId": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
      }
      Was this section helpful?

      Set HVAC unit to follow device schedule

      POST /hvacs/{hvacId}/follow-schedule

      Tell an HVAC unit to follow the schedule set on the device. Only available if the target's capabilities.setFollowSchedule.isCapable is set to true. This endpoint can be used to cancel permanent holds. We retry sending the command until the HVAC unit's fields transition to the expected values. Note that this request will complete before any commands are sent to the HVAC unit. You may react to transitions by listening for the user:vendor-action:updated webhook event or polling the HVAC action endpointAPI.

      Request

      Path parameters
      hvacId string Required

      ID of the HVAC unit.

      Response 200

      Resulting HVAC action

      Attributes
      • id string<uuid>

        The ID of the action.

      • userId string

        The ID of the user that owns the target of this action.

      • createdAt string<date-time>

        Time when this action was created

      • updatedAt string<date-time>

        Time when this action was last updated

      • completedAt string<date-time> or null

        Time when the action transitioned to a non-pending state.

      • state string

        The real-time status of an action executed on a target.

        • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
        • CONFIRMED: Successful transition of the target to the desired state.
        • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
        • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

        Possible enum values:

          PENDINGCONFIRMEDFAILEDCANCELLED
      • targetId string

        ID of the entity asset (HVAC) which this action is controlling.

      • targetType string

        Possible enum values:

          hvac
      • target object
        Show child attributes
        • target.holdType string

          Possible enum values:

            SCHEDULED

      Response example

      {
        "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
        "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
        "createdAt": "2020-04-07T17:04:26Z",
        "updatedAt": "2020-04-07T17:04:26Z",
        "completedAt": "2020-04-07T17:04:26Z",
        "state": "PENDING",
        "targetId": "string",
        "targetType": "hvac",
        "target": {
          "holdType": "SCHEDULED"
        }
      }

      Response 400

      A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the HVAC unit cannot perform the action.

      Attributes
      • type string

        A URI reference that identifies the problem type.

      • title string

        A short, human-readable summary of the problem type.

      • detail string

        A human-readable explanation specific to this occurrence of the problem.

      Response example

      {
        "type": "https://docs.enode.io/problems/im-a-teapot",
        "title": "I'm a teapot",
        "detail": "The requested entity body is short and stout."
      }

      Response 422

      HVAC unit controlled by an Enode Schedule

      Attributes
      • type string

        A URI reference that identifies the problem type.

      • title string

        A short, human-readable summary of the problem type.

      • detail string

        A human-readable explanation specific to this occurrence of the problem.

      Response example

      {
        "type": "https://docs.enode.io/problems/im-a-teapot",
        "title": "I'm a teapot",
        "detail": "The requested entity body is short and stout."
      }
      Was this section helpful?

      Refresh HVAC unit data

      POST /hvacs/{hvacId}/refresh-hint

      Use this endpoint to initiate an expedited data refresh for the specified HVAC unit.

      Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
      This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

      Request

      Path parameters
      hvacId string Required

      ID of the HVAC unit.

      Response 204

      Refresh hint registered successfully.

      Response 404

      The specified hvac was not found.

      Was this section helpful?

      Set HVAC unit mode as permanent hold

      POST /hvacs/{hvacId}/permanent-hold

      Tell an HVAC unit to enter a permanent hold. Only available if the target's capabilities.setPermanentHold.isCapable is set to true. We retry sending the command until the HVAC unit's target field transition to the expected value. Note that this request will complete before any commands are sent to the HVAC unit. You may react to transitions by listening for the user:vendor-action:updated webhook event or polling the HVAC action endpointAPI.

      Request

      Path parameters
      hvacId string Required

      ID of the HVAC unit.

      Attributes

        Response 200

        Resulting action

        Attributes
        • id string<uuid>

          The ID of the action.

        • userId string

          The ID of the user that owns the target of this action.

        • createdAt string<date-time>

          Time when this action was created

        • updatedAt string<date-time>

          Time when this action was last updated

        • completedAt string<date-time> or null

          Time when the action transitioned to a non-pending state.

        • state string

          The real-time status of an action executed on a target.

          • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
          • CONFIRMED: Successful transition of the target to the desired state.
          • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
          • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

          Possible enum values:

            PENDINGCONFIRMEDFAILEDCANCELLED
        • targetId string

          ID of the entity asset (HVAC) which this action is controlling.

        • targetType string

          Possible enum values:

            hvac
        • target

        Response example

        {
          "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
          "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
          "createdAt": "2020-04-07T17:04:26Z",
          "updatedAt": "2020-04-07T17:04:26Z",
          "completedAt": "2020-04-07T17:04:26Z",
          "state": "PENDING",
          "targetId": "string",
          "targetType": "hvac",
          "target": {
            "coolSetpoint": 0,
            "mode": "COOL",
            "holdType": "PERMANENT"
          }
        }

        Response 400

        A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the HVAC unit cannot perform the action or the setpoints are invalid.

        Attributes
        • type string

          A URI reference that identifies the problem type.

        • title string

          A short, human-readable summary of the problem type.

        • detail string

          A human-readable explanation specific to this occurrence of the problem.

        Response example

        {
          "type": "https://docs.enode.io/problems/im-a-teapot",
          "title": "I'm a teapot",
          "detail": "The requested entity body is short and stout."
        }

        Response 422

        HVAC unit controlled by an Enode Schedule

        Attributes
        • type string

          A URI reference that identifies the problem type.

        • title string

          A short, human-readable summary of the problem type.

        • detail string

          A human-readable explanation specific to this occurrence of the problem.

        Response example

        {
          "type": "https://docs.enode.io/problems/im-a-teapot",
          "title": "I'm a teapot",
          "detail": "The requested entity body is short and stout."
        }
        Was this section helpful?

        Interventions

        Endpoints that return information about interventions. More information and examples are available in the Interventions guide.

        List interventions

        GET /interventions

        Returns a list of all supported interventions.

        The language parameter can be used to specify the language of the resolution title and description.

        Request

        Query parameters
        language string Optional

        Preferred BCP47 language code - Request translation for the specified language. Falls back to en-US if not provided or provided language code is unsupported.

        Possible enum values:

          en-USen-GBde-DEfr-FRes-ESpt-PTnl-NLnl-BEnb-NOsv-SEda-DKfi-FIro-RO
        vendorType string Optional

        Only return interventions for the specified vendor type.

        Possible enum values:

          vehiclechargerhvacinverterbatterymeter
        vendor string Optional

        Only return interventions for the specified vendor.

        Possible enum values:

          APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO

        Response 200

        Attributes (list of object)
        • id string<uuid>
        • vendor string

          Machine-friendly representation of the OEM's name.

          Possible enum values:

            APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO
        • vendorType string

          Type of device this intervention relates to.

          Possible enum values:

            vehiclechargerhvacinverterbatterymeter
        • brand string

          A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

          Possible enum values:

            APsystemsCSISolarDeyeEnphaseFOXESSFroniusGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUNAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODAVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENGTadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmoZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XOhmeGaroHUAWEI
        • introducedAt string<date-time>

          ISO 8601 timestamp of when the intervention was introduced.

        • domain string

          The domain the intervention is related to. i.e. Is the intervention related to the vendor service account or a setting on the device.

          Possible enum values:

            AccountDevice
        • resolution object
          Show child attributes
          • resolution.title string

            A localized title for the intervention.

          • resolution.description string

            A localized description of how to resolve the intervention. Formatted as Markdown.

          • resolution.access string

            Where the intervention needs to be resolved. i.e. Remotely using the vendor's app or directly on the device.

            Possible enum values:

              RemotePhysical
          • resolution.agent string

            Who can resolve the intervention. i.e. A user can resolve the intervention themselves, or a licensed service retailer is needed.

            Possible enum values:

              UserThirdParty

        Response example

        [
          {
            "id": "9d90a9ad-9b24-4ce0-94e9-e888b1b877f4",
            "vendor": "AUDI",
            "vendorType": "string",
            "brand": "Audi",
            "introducedAt": "2023-03-16T00:00:00",
            "domain": "Account",
            "resolution": {
              "title": "Accept the Audi terms and conditions",
              "description": "To gain access to your vehicle's telemetry data, it's necessary to accept Audi's terms and conditions. Follow these steps to proceed:<br><br>1. Open the **myAudi app** on your phone<br>2. Follow the prompts to accept Audi's terms and conditions",
              "access": "Remote",
              "agent": "User"
            }
          }
        ]
        Was this section helpful?

        Get intervention

        GET /interventions/{interventionId}

        Returns a single intervention.

        The language parameter can be used to specify the language of the resolution title and description.

        Request

        Path parameters
        interventionId string<uuid> Required

        ID of the intervention.

        Query parameters
        language string Optional

        Preferred BCP47 language code - Request translation for the specified language. Falls back to en-US if not provided or provided language code is unsupported.

        Possible enum values:

          en-USen-GBde-DEfr-FRes-ESpt-PTnl-NLnl-BEnb-NOsv-SEda-DKfi-FIro-RO
        vendorType string Optional

        Only return interventions for the specified vendor type.

        Possible enum values:

          vehiclechargerhvacinverterbatterymeter
        vendor string Optional

        Only return interventions for the specified vendor.

        Possible enum values:

          APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO

        Response 200

        Attributes
        • id string<uuid>
        • vendor string

          Machine-friendly representation of the OEM's name.

          Possible enum values:

            APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO
        • vendorType string

          Type of device this intervention relates to.

          Possible enum values:

            vehiclechargerhvacinverterbatterymeter
        • brand string

          A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

          Possible enum values:

            APsystemsCSISolarDeyeEnphaseFOXESSFroniusGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUNAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODAVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENGTadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmoZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XOhmeGaroHUAWEI
        • introducedAt string<date-time>

          ISO 8601 timestamp of when the intervention was introduced.

        • domain string

          The domain the intervention is related to. i.e. Is the intervention related to the vendor service account or a setting on the device.

          Possible enum values:

            AccountDevice
        • resolution object
          Show child attributes
          • resolution.title string

            A localized title for the intervention.

          • resolution.description string

            A localized description of how to resolve the intervention. Formatted as Markdown.

          • resolution.access string

            Where the intervention needs to be resolved. i.e. Remotely using the vendor's app or directly on the device.

            Possible enum values:

              RemotePhysical
          • resolution.agent string

            Who can resolve the intervention. i.e. A user can resolve the intervention themselves, or a licensed service retailer is needed.

            Possible enum values:

              UserThirdParty

        Response example

        {
          "id": "9d90a9ad-9b24-4ce0-94e9-e888b1b877f4",
          "vendor": "AUDI",
          "vendorType": "string",
          "brand": "Audi",
          "introducedAt": "2023-03-16T00:00:00",
          "domain": "Account",
          "resolution": {
            "title": "Accept the Audi terms and conditions",
            "description": "To gain access to your vehicle's telemetry data, it's necessary to accept Audi's terms and conditions. Follow these steps to proceed:<br><br>1. Open the **myAudi app** on your phone<br>2. Follow the prompts to accept Audi's terms and conditions",
            "access": "Remote",
            "agent": "User"
          }
        }

        Response 404

        Intervention not found.

        Was this section helpful?

        Me

        The Me endpoint returns metadata about the authenticated User.

        Get my userDeprecated

        GET /me

        Returns metadata about the authenticated User, including a list of vendors for which the User has provided credentials. Removed in version 2023-08-01. Endpoint moved to /users/{userId}.

        Response 200

        Attributes
        • id string

          The user's userID.

        • linkedVendors array of object
          Show child attributes
          • linkedVendors[].vendor string

            Machine-friendly name of the vendor. Use this in API requests.

            Possible enum values:

              APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO
          • linkedVendors[].vendorType string

            Possible enum values:

              vehiclechargerhvacinverterbatterymeter
          • linkedVendors[].isValid boolean

            Whether the provided credentials are currently valid. A false value here indicates that a credential has become invalidated, and Link UserAPI should be used to get new credentials from this user.

        Response example

        {
          "id": "123456789-ABc",
          "linkedVendors": [
            {
              "vendor": "TESLA",
              "vendorType": "vehicle",
              "isValid": true
            }
          ]
        }
        Was this section helpful?

        Disconnect vendorDeprecated

        DELETE /me/vendors/{vendor}

        Disconnect a single Vendor from the User's account.

        All stored data about their Vendor account will be deleted, and any assets that were provided by that Vendor will disappear from the system. Removed in version 2023-08-01. Endpoint moved to /users/{userId}/vendors/{vendor}.

        Request

        Path parameters
        vendor string Required

        Vendor to be unlinked.

        Possible enum values:

          APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO

        Response 204

        No Content

        Was this section helpful?

        Meters

        The Meter object represents a unit responsible for measuring energy usage. It provides detailed information about the meter itself and the energy consumption data it records.

        Get meterBeta

        GET /meters/{meterId}

        Request

        Path parameters
        meterId string<uuid> Required

        The ID of the meter you are looking up

        Response 200

        Attributes
        • id string<uuid>

          Unique identifier for the meter object

        • userId string

          The ID of the user that linked this meter.

        • vendor string

          Machine-friendly name of the vendor. Use this in API requests.

          Possible enum values:

            ENPHASEHUAWEITESLASOLAREDGE
        • lastSeen string<date-time>

          The last time Enode successfully communicated with the vendor or when the meter was initially linked.

        • isReachable boolean

          Whether live data from the meter is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the meter's cloud service if that service has determined that its cache is valid.

        • information object

          Descriptive information about the meter

          Show child attributes
          • information.brand string

            A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

            Possible enum values:

              EnphaseHuaweiTeslaSolarEdge
          • information.model string

            Meter model

          • information.siteName string

            Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

          • information.installationDate string<date-time>

            Meter installation date

        • energyState object

          Latest information about meter load. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

          Show child attributes
          • energyState.power number or null

            Indicates the current load on the meter.

            • Positive value: Power is imported from the grid to the site, indicating consumption.
            • Negative value: Power is exported back to the grid, typically when the site generates excess electricity (e.g. from solar panels, or battery discharge).
          • energyState.lastUpdated string<date-time> or null

            Time of last received energy state update.

        • location object

          Meter's GPS coordinates

          Show child attributes
          • location.longitude number or null

            Longitude in degrees

          • location.latitude number or null

            Latitude in degrees

        • capabilities object

          The specific meter's capabilities for recording energy consumption and production data.

          Show child attributes
          • capabilities.measuresConsumption object

            Indicates if the meter can measure consumed energy.

            Show child attributes
            • capabilities.measuresConsumption.isCapable boolean

              The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

            • capabilities.measuresConsumption.interventionIds array of string

              IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

          • capabilities.measuresProduction object

            Indicates if the meter can measure energy produced or generated.

            Show child attributes
            • capabilities.measuresProduction.isCapable boolean

              The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

            • capabilities.measuresProduction.interventionIds array of string

              IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

        • scopes array of string

          Scopes that the user has granted for this meter.

        Response example

        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "userId": "string",
          "vendor": "TESLA",
          "lastSeen": "2020-04-07T17:04:26Z",
          "isReachable": true,
          "information": {
            "brand": "Tesla",
            "model": "Tesla Powerwall built-in meter",
            "siteName": "Powerwall Home",
            "installationDate": "2020-04-07T17:04:26Z"
          },
          "energyState": {
            "power": 2.2,
            "lastUpdated": "2022-03-01T12:34:56Z"
          },
          "location": {
            "longitude": 10.7197486,
            "latitude": 59.9173985
          },
          "capabilities": {
            "measuresConsumption": {
              "isCapable": false,
              "interventionIds": [
                "4eaeb363-296d-4ccc-a973-7805e6f400bd"
              ]
            },
            "measuresProduction": {
              "isCapable": false,
              "interventionIds": [
                "4eaeb363-296d-4ccc-a973-7805e6f400bd"
              ]
            }
          },
          "scopes": [
            "meter:read:data",
            "meter:read:location"
          ]
        }
        Was this section helpful?

        Refresh meter dataBeta

        POST /meters/{meterId}/refresh-hint

        Use this endpoint to initiate an expedited data refresh for the specified meter.

        Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
        This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

        Request

        Path parameters
        meterId string<uuid> Required

        The ID of the meter you are looking up

        Response 204

        Refresh hint registered successfully.

        Response 404

        The specified meter was not found.

        Was this section helpful?

        List user metersBeta

        GET /users/{userId}/meters

        Returns a paginated list of meters for the given userId.

        Request

        Path parameters
        userId string Required

        A unique identifier of your choice representing your user, e.g. a stable UUID you keep in your datastore. If a user entity matching the provided userId does not exist in your client, it will be created before the link session is created.

        Query parameters
        after string Optional
        before string Optional
        pageSize integer Optional

        Default value: 50

        Response 200

        Attributes
        • data array of object

          Paginated list of meters

          Show child attributes
          • data[].id string<uuid>

            Unique identifier for the meter object

          • data[].userId string

            The ID of the user that linked this meter.

          • data[].vendor string

            Machine-friendly name of the vendor. Use this in API requests.

            Possible enum values:

              ENPHASEHUAWEITESLASOLAREDGE
          • data[].lastSeen string<date-time>

            The last time Enode successfully communicated with the vendor or when the meter was initially linked.

          • data[].isReachable boolean

            Whether live data from the meter is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the meter's cloud service if that service has determined that its cache is valid.

          • data[].information object

            Descriptive information about the meter

            Show child attributes
            • data[].information.brand string

              A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

              Possible enum values:

                EnphaseHuaweiTeslaSolarEdge
            • data[].information.model string

              Meter model

            • data[].information.siteName string

              Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

            • data[].information.installationDate string<date-time>

              Meter installation date

          • data[].energyState object

            Latest information about meter load. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

            Show child attributes
            • data[].energyState.power number or null

              Indicates the current load on the meter.

              • Positive value: Power is imported from the grid to the site, indicating consumption.
              • Negative value: Power is exported back to the grid, typically when the site generates excess electricity (e.g. from solar panels, or battery discharge).
            • data[].energyState.lastUpdated string<date-time> or null

              Time of last received energy state update.

          • data[].location object

            Meter's GPS coordinates

            Show child attributes
            • data[].location.longitude number or null

              Longitude in degrees

            • data[].location.latitude number or null

              Latitude in degrees

          • data[].capabilities object

            The specific meter's capabilities for recording energy consumption and production data.

            Show child attributes
            • data[].capabilities.measuresConsumption object

              Indicates if the meter can measure consumed energy.

              Show child attributes
              • data[].capabilities.measuresConsumption.isCapable boolean

                The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

              • data[].capabilities.measuresConsumption.interventionIds array of string

                IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

            • data[].capabilities.measuresProduction object

              Indicates if the meter can measure energy produced or generated.

              Show child attributes
              • data[].capabilities.measuresProduction.isCapable boolean

                The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

              • data[].capabilities.measuresProduction.interventionIds array of string

                IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

          • data[].scopes array of string

            Scopes that the user has granted for this meter.

        • pagination object

          Cursors to the pages before and after current page. See the PaginationAPI section for reference.

          Show child attributes
          • pagination.after string or null
          • pagination.before string or null

        Response example

        {
          "data": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "userId": "string",
              "vendor": "TESLA",
              "lastSeen": "2020-04-07T17:04:26Z",
              "isReachable": true,
              "information": {
                "brand": "Tesla",
                "model": "Tesla Powerwall built-in meter",
                "siteName": "Powerwall Home",
                "installationDate": "2020-04-07T17:04:26Z"
              },
              "energyState": {
                "power": 2.2,
                "lastUpdated": "2022-03-01T12:34:56Z"
              },
              "location": {
                "longitude": 10.7197486,
                "latitude": 59.9173985
              },
              "capabilities": {
                "measuresConsumption": {
                  "isCapable": false,
                  "interventionIds": [
                    "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  ]
                },
                "measuresProduction": {
                  "isCapable": false,
                  "interventionIds": [
                    "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  ]
                }
              },
              "scopes": [
                "meter:read:data",
                "meter:read:location"
              ]
            }
          ],
          "pagination": {
            "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
            "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
          }
        }
        Was this section helpful?

        List metersBeta

        GET /meters

        Returns a paginated list of all Meters.

        Request

        Query parameters
        after string Optional
        before string Optional
        pageSize integer Optional

        Default value: 50

        Response 200

        Attributes
        • data array of object

          Paginated list of meters

          Show child attributes
          • data[].id string<uuid>

            Unique identifier for the meter object

          • data[].userId string

            The ID of the user that linked this meter.

          • data[].vendor string

            Machine-friendly name of the vendor. Use this in API requests.

            Possible enum values:

              ENPHASEHUAWEITESLASOLAREDGE
          • data[].lastSeen string<date-time>

            The last time Enode successfully communicated with the vendor or when the meter was initially linked.

          • data[].isReachable boolean

            Whether live data from the meter is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the meter's cloud service if that service has determined that its cache is valid.

          • data[].information object

            Descriptive information about the meter

            Show child attributes
            • data[].information.brand string

              A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

              Possible enum values:

                EnphaseHuaweiTeslaSolarEdge
            • data[].information.model string

              Meter model

            • data[].information.siteName string

              Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

            • data[].information.installationDate string<date-time>

              Meter installation date

          • data[].energyState object

            Latest information about meter load. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

            Show child attributes
            • data[].energyState.power number or null

              Indicates the current load on the meter.

              • Positive value: Power is imported from the grid to the site, indicating consumption.
              • Negative value: Power is exported back to the grid, typically when the site generates excess electricity (e.g. from solar panels, or battery discharge).
            • data[].energyState.lastUpdated string<date-time> or null

              Time of last received energy state update.

          • data[].location object

            Meter's GPS coordinates

            Show child attributes
            • data[].location.longitude number or null

              Longitude in degrees

            • data[].location.latitude number or null

              Latitude in degrees

          • data[].capabilities object

            The specific meter's capabilities for recording energy consumption and production data.

            Show child attributes
            • data[].capabilities.measuresConsumption object

              Indicates if the meter can measure consumed energy.

              Show child attributes
              • data[].capabilities.measuresConsumption.isCapable boolean

                The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

              • data[].capabilities.measuresConsumption.interventionIds array of string

                IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

            • data[].capabilities.measuresProduction object

              Indicates if the meter can measure energy produced or generated.

              Show child attributes
              • data[].capabilities.measuresProduction.isCapable boolean

                The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

              • data[].capabilities.measuresProduction.interventionIds array of string

                IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

          • data[].scopes array of string

            Scopes that the user has granted for this meter.

        • pagination object

          Cursors to the pages before and after current page. See the PaginationAPI section for reference.

          Show child attributes
          • pagination.after string or null
          • pagination.before string or null

        Response example

        {
          "data": [
            {
              "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
              "userId": "string",
              "vendor": "TESLA",
              "lastSeen": "2020-04-07T17:04:26Z",
              "isReachable": true,
              "information": {
                "brand": "Tesla",
                "model": "Tesla Powerwall built-in meter",
                "siteName": "Powerwall Home",
                "installationDate": "2020-04-07T17:04:26Z"
              },
              "energyState": {
                "power": 2.2,
                "lastUpdated": "2022-03-01T12:34:56Z"
              },
              "location": {
                "longitude": 10.7197486,
                "latitude": 59.9173985
              },
              "capabilities": {
                "measuresConsumption": {
                  "isCapable": false,
                  "interventionIds": [
                    "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  ]
                },
                "measuresProduction": {
                  "isCapable": false,
                  "interventionIds": [
                    "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  ]
                }
              },
              "scopes": [
                "meter:read:data",
                "meter:read:location"
              ]
            }
          ],
          "pagination": {
            "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
            "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
          }
        }
        Was this section helpful?

        Schedules

        Endpoints to manage schedules for Vehicles, Chargers and HVACs.

        More information and examples are available in the Scheduling guide.

        List schedulesDeprecated

        GET /schedules

        Moved to GET /users/{userId}/schedules.

        Returns a list of Schedules registered to the User.

        Response 200

        Attributes (list of undefined)

          Response example

          [
            {
              "id": "string",
              "isEnabled": true,
              "defaultShouldCharge": true,
              "rules": [
                {
                  "hourMinute": {
                    "from": "09:00",
                    "to": "09:00"
                  },
                  "fromTimestamp": "2020-04-07T17:04:26Z",
                  "toTimestamp": "2020-04-07T17:04:26Z",
                  "weekdays": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "shouldCharge": true
                }
              ],
              "chargeableId": "string",
              "chargeableType": "vehicle",
              "entityId": "string",
              "entityType": "string",
              "targetId": "string",
              "targetType": "vehicle",
              "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
            }
          ]
          Was this section helpful?

          Create scheduleDeprecated

          POST /schedules

          Moved to POST /users/{userId}/schedules.

          Request

          Attributes

            Response 200

            Attributes
            • id string
            • isEnabled boolean

              Whether this Schedule should be attempting to control the target's charge state.

              Default value: true

            • defaultShouldCharge boolean

              When no rule is active, the default charge state for the target.

            • rules array of object

              Each rule sets a value for shouldCharge, either true or false. All other properties of the rule are optional filters that limit the times to which this rule applies.

              Show child attributes
              • rules[].hourMinute object

                An interval composed of two clock times during which this rule applies each day. to always resolves to a timestamp after from, and thus may span across midnight and fall on the next day.

                Show child attributes
                • rules[].hourMinute.from string

                  Clock time from which this rule should apply each day.

                • rules[].hourMinute.to string

                  Clock time until which this rule should apply each day.

              • rules[].fromTimestamp string<date-time>

                UTC timestamp from which this rule should apply.

              • rules[].toTimestamp string<date-time>

                UTC timestamp until which this rule should apply.

              • rules[].weekdays array of integer

                An array of weekdays to which this rule should apply. A weekday starts with 0 for Monday and ends with 6 for Sunday.

              • rules[].shouldCharge boolean

                Whether a chargeable asset should want to charge while this rule is active.

            • chargeableId string Deprecated

              Replaced by targetId.

            • chargeableType string Deprecated

              Replaced by targetType.

              Possible enum values:

                vehiclecharger
            • entityId string Deprecated

              Replaced by targetId.

            • entityType string Deprecated

              Replaced by targetType.

            • targetId string

              ID of the asset (Vehicle/Charger) to which this schedule applies

            • targetType string

              Possible enum values:

                vehiclecharger
            • chargingLocationId string<uuid> or null Deprecated

              Deprecated. Replaced by LocationId from version 2023-08-01. ID of the Charging Location to which this schedule applies. The behavior of a null value differs based on the targetType. For chargers, a null value is essentially ignored and the schedule is applied even if the charger isn't at a charging location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

            Response example

            {
              "id": "string",
              "isEnabled": true,
              "defaultShouldCharge": true,
              "rules": [
                {
                  "hourMinute": {
                    "from": "09:00",
                    "to": "09:00"
                  },
                  "fromTimestamp": "2020-04-07T17:04:26Z",
                  "toTimestamp": "2020-04-07T17:04:26Z",
                  "weekdays": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "shouldCharge": true
                }
              ],
              "chargeableId": "string",
              "chargeableType": "vehicle",
              "entityId": "string",
              "entityType": "string",
              "targetId": "string",
              "targetType": "vehicle",
              "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
            }
            Was this section helpful?

            Get schedule

            GET /schedules/{scheduleId}

            Request

            Path parameters
            scheduleId string<uuid> Required

            ID of the Schedule.

            Response 200

            Attributes
            • id string
            • isEnabled boolean

              Whether this Schedule should be attempting to control the target's charge state.

              Default value: true

            • defaultShouldCharge boolean

              When no rule is active, the default charge state for the target.

            • rules array of object

              Each rule sets a value for shouldCharge, either true or false. All other properties of the rule are optional filters that limit the times to which this rule applies.

              Show child attributes
              • rules[].hourMinute object

                An interval composed of two clock times during which this rule applies each day. to always resolves to a timestamp after from, and thus may span across midnight and fall on the next day.

                Show child attributes
                • rules[].hourMinute.from string

                  Clock time from which this rule should apply each day.

                • rules[].hourMinute.to string

                  Clock time until which this rule should apply each day.

              • rules[].fromTimestamp string<date-time>

                UTC timestamp from which this rule should apply.

              • rules[].toTimestamp string<date-time>

                UTC timestamp until which this rule should apply.

              • rules[].weekdays array of integer

                An array of weekdays to which this rule should apply. A weekday starts with 0 for Monday and ends with 6 for Sunday.

              • rules[].shouldCharge boolean

                Whether a chargeable asset should want to charge while this rule is active.

            • chargeableId string Deprecated

              Replaced by targetId.

            • chargeableType string Deprecated

              Replaced by targetType.

              Possible enum values:

                vehiclecharger
            • entityId string Deprecated

              Replaced by targetId.

            • entityType string Deprecated

              Replaced by targetType.

            • targetId string

              ID of the asset (Vehicle/Charger) to which this schedule applies

            • targetType string

              Possible enum values:

                vehiclecharger
            • chargingLocationId string<uuid> or null Deprecated

              Deprecated. Replaced by LocationId from version 2023-08-01. ID of the Charging Location to which this schedule applies. The behavior of a null value differs based on the targetType. For chargers, a null value is essentially ignored and the schedule is applied even if the charger isn't at a charging location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

            Response example

            {
              "id": "string",
              "isEnabled": true,
              "defaultShouldCharge": true,
              "rules": [
                {
                  "hourMinute": {
                    "from": "09:00",
                    "to": "09:00"
                  },
                  "fromTimestamp": "2020-04-07T17:04:26Z",
                  "toTimestamp": "2020-04-07T17:04:26Z",
                  "weekdays": [
                    0,
                    1,
                    2,
                    3,
                    4,
                    5
                  ],
                  "shouldCharge": true
                }
              ],
              "chargeableId": "string",
              "chargeableType": "vehicle",
              "entityId": "string",
              "entityType": "string",
              "targetId": "string",
              "targetType": "vehicle",
              "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
            }
            Was this section helpful?

            Update schedule

            PUT /schedules/{scheduleId}

            Does a partial update of a schedule.

            Request

            Path parameters
            scheduleId string<uuid> Required

            ID of the Schedule.

            Attributes

              Response 200

              Attributes
              • id string
              • isEnabled boolean

                Whether this Schedule should be attempting to control the target's charge state.

                Default value: true

              • defaultShouldCharge boolean

                When no rule is active, the default charge state for the target.

              • rules array of object

                Each rule sets a value for shouldCharge, either true or false. All other properties of the rule are optional filters that limit the times to which this rule applies.

                Show child attributes
                • rules[].hourMinute object

                  An interval composed of two clock times during which this rule applies each day. to always resolves to a timestamp after from, and thus may span across midnight and fall on the next day.

                  Show child attributes
                  • rules[].hourMinute.from string

                    Clock time from which this rule should apply each day.

                  • rules[].hourMinute.to string

                    Clock time until which this rule should apply each day.

                • rules[].fromTimestamp string<date-time>

                  UTC timestamp from which this rule should apply.

                • rules[].toTimestamp string<date-time>

                  UTC timestamp until which this rule should apply.

                • rules[].weekdays array of integer

                  An array of weekdays to which this rule should apply. A weekday starts with 0 for Monday and ends with 6 for Sunday.

                • rules[].shouldCharge boolean

                  Whether a chargeable asset should want to charge while this rule is active.

              • chargeableId string Deprecated

                Replaced by targetId.

              • chargeableType string Deprecated

                Replaced by targetType.

                Possible enum values:

                  vehiclecharger
              • entityId string Deprecated

                Replaced by targetId.

              • entityType string Deprecated

                Replaced by targetType.

              • targetId string

                ID of the asset (Vehicle/Charger) to which this schedule applies

              • targetType string

                Possible enum values:

                  vehiclecharger
              • chargingLocationId string<uuid> or null Deprecated

                Deprecated. Replaced by LocationId from version 2023-08-01. ID of the Charging Location to which this schedule applies. The behavior of a null value differs based on the targetType. For chargers, a null value is essentially ignored and the schedule is applied even if the charger isn't at a charging location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

              Response example

              {
                "id": "string",
                "isEnabled": true,
                "defaultShouldCharge": true,
                "rules": [
                  {
                    "hourMinute": {
                      "from": "09:00",
                      "to": "09:00"
                    },
                    "fromTimestamp": "2020-04-07T17:04:26Z",
                    "toTimestamp": "2020-04-07T17:04:26Z",
                    "weekdays": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5
                    ],
                    "shouldCharge": true
                  }
                ],
                "chargeableId": "string",
                "chargeableType": "vehicle",
                "entityId": "string",
                "entityType": "string",
                "targetId": "string",
                "targetType": "vehicle",
                "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
              }
              Was this section helpful?

              Delete schedule

              DELETE /schedules/{scheduleId}

              Delete a Schedule

              Request

              Path parameters
              scheduleId string<uuid> Required

              ID of the Schedule.

              Response 204

              No Content

              Was this section helpful?

              Get schedule status

              GET /schedules/{scheduleId}/status

              Request

              Path parameters
              scheduleId string<uuid> Required

              ID of the Schedule.

              Response 200

              Attributes
              • scheduleId string<uuid>

                ID of the schedule.

              • scheduleType string

                Possible enum values:

                  CHARGE
              • changedAt string<date-time>

                Time at which any value of the status last changed

              • state string

                An enum value that describes the current state of the Schedule

                Possible enum values:

                  ALIGNEDMISALIGNEDPENDINGINACTIVE:OVERRIDDENINACTIVE:DISABLEDINACTIVE:AWAYINACTIVE:INCAPABLE
              • isCharging boolean

                Whether the target is currently actually charging

              • isChargingExpected boolean

                Whether the target is currently expected to be charging

              • isChargingExpectedParts object

                Collection of booleans that - when combined via AND operator - forms the isChargingExpected value

                Show child attributes
                • isChargingExpectedParts.needsCharge boolean
                • isChargingExpectedParts.isPluggedIn boolean
                • isChargingExpectedParts.shouldCharge boolean
              • upcomingTransitions array of object

                List of upcoming transitions of the shouldCharge or targetTemperature value. A maximum of 2 items are returned.

                Show child attributes
                • upcomingTransitions[].at string<date-time>

                  ISO8601 UTC timestamp

                • upcomingTransitions[].shouldCharge boolean
              • externalStart object or null Deprecated

                Replaced by smartOverride.

                Show child attributes
                • externalStart.createdAt string<date-time>

                  Time at which the smart override was created.

                • externalStart.endedAt string<date-time> or null

                  Time at which the smart override was ended. If null, the smart override is still active.

                • externalStart.targetType string

                  Possible enum values:

                    vehiclecharger
                • externalStart.targetId string

                  ID of the target which this smart override is affecting.

                • externalStart.vendorActionId string<uuid> or null

                  The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

              Response example

              {
                "scheduleId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                "scheduleType": "CHARGE",
                "changedAt": "2020-04-07T17:04:26Z",
                "state": "ALIGNED",
                "isCharging": true,
                "isChargingExpected": true,
                "isChargingExpectedParts": {
                  "needsCharge": true,
                  "isPluggedIn": true,
                  "shouldCharge": true
                },
                "upcomingTransitions": [
                  {
                    "at": "2020-04-07T17:04:26Z",
                    "shouldCharge": true
                  }
                ],
                "externalStart": {
                  "createdAt": "2020-04-07T17:04:26Z",
                  "endedAt": "2020-04-07T17:04:26Z",
                  "targetType": "vehicle",
                  "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                  "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f"
                }
              }
              Was this section helpful?

              Service health

              Endpoints that return information about the health of Enode and our integrations.

              Check available charger vendors

              GET /health/chargers

              Lists the available charger vendors, including the activated vendors that your client has access to. Learn more about vendors requiring activation.

              Response 200

              Attributes (list of object)
              • vendor string

                Machine-friendly name of the vendor. Use this in API requests.

                Possible enum values:

                  ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXTESLAOHMEGARO
              • displayName string

                A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

                Possible enum values:

                  ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eFroniusChargePointEnel XTeslaOhmeGaro
              • status string

                Ready-state of the Vendor. Currently always READY.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE
              • portalName string

                The name of the first party service or app that the user normally logs into.

              • linkingStatus string

                Ready-state for linking with the Vendor.

                • READY: The Vendor is ready to be linked with.
                • ELEVATED_ERROR_RATE: Multiple attempts may be needed to link successfully. We are showing a warning in Link UI.
                • OUTAGE: The Vendor is currently not available for linking. We will show an error in Link UI and not let the user attempt to link with the Vendor.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE

              Response example

              [
                {
                  "vendor": "EASEE",
                  "displayName": "Easee",
                  "portalName": "Easee",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "WALLBOX",
                  "displayName": "Wallbox",
                  "portalName": "Wallbox",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "ZAPTEC",
                  "displayName": "Zaptec",
                  "portalName": "Zaptec",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "EO",
                  "displayName": "EO",
                  "portalName": "EO",
                  "status": "READY",
                  "linkingStatus": "READY"
                }
              ]
              Was this section helpful?

              Check available vehicle vendors

              GET /health/vehicles

              Lists the available vehicle vendors, including the activated vendors that your client has access to. Learn more about vendors requiring activation.

              Response 200

              Attributes (list of object)
              • vendor string

                Machine-friendly name of the vendor. Use this in API requests.

                Possible enum values:

                  AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
              • displayName string

                A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

                Possible enum values:

                  AudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODATeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENG
              • status string

                Ready-state of the Vendor. Currently always READY.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE
              • portalName string

                The name of the first party service or app that the user normally logs into.

              • linkingStatus string

                Ready-state for linking with the Vendor.

                • READY: The Vendor is ready to be linked with.
                • ELEVATED_ERROR_RATE: Multiple attempts may be needed to link successfully. We are showing a warning in Link UI.
                • OUTAGE: The Vendor is currently not available for linking. We will show an error in Link UI and not let the user attempt to link with the Vendor.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE

              Response example

              [
                {
                  "vendor": "TESLA",
                  "displayName": "Tesla",
                  "portalName": "Tesla",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "BMW",
                  "displayName": "BMW",
                  "portalName": "My BMW",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "AUDI",
                  "displayName": "Audi",
                  "portalName": "myAudi",
                  "status": "READY",
                  "linkingStatus": "READY"
                }
              ]
              Was this section helpful?

              Check available inverter vendors

              GET /health/inverter

              Lists the available inverter vendors, including the activated vendors that your client has access to. Learn more about vendors requiring activation.

              Response 200

              Attributes (list of object)
              • vendor string

                Machine-friendly name of the vendor. Use this in API requests.

                Possible enum values:

                  APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
              • displayName string

                A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

                Possible enum values:

                  APsystemsCSISolarDeyeEnphaseFOXESSFroniusGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
              • status string

                Ready-state of the Vendor. Currently always READY.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE
              • portalName string

                The name of the first party service or app that the user normally logs into.

              • linkingStatus string

                Ready-state for linking with the Vendor.

                • READY: The Vendor is ready to be linked with.
                • ELEVATED_ERROR_RATE: Multiple attempts may be needed to link successfully. We are showing a warning in Link UI.
                • OUTAGE: The Vendor is currently not available for linking. We will show an error in Link UI and not let the user attempt to link with the Vendor.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE

              Response example

              [
                {
                  "vendor": "SOLAREDGE",
                  "displayName": "SolarEdge",
                  "portalName": "Solar Edge",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "SMA",
                  "displayName": "SMA",
                  "portalName": "SMA Energy",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "SOLIS",
                  "displayName": "Solis",
                  "portalName": "Solis",
                  "status": "READY",
                  "linkingStatus": "READY"
                },
                {
                  "vendor": "FRONIUS",
                  "displayName": "Fronius",
                  "status": "READY",
                  "linkingStatus": "READY",
                  "portalName": "Fronius"
                }
              ]
              Was this section helpful?

              Check available HVAC vendors

              GET /health/hvacs

              Lists the available HVAC vendors, including the activated vendors that your client has access to. Learn more about vendors requiring activation.

              Response 200

              Attributes (list of object)
              • vendor string

                Machine-friendly name of the vendor. Use this in API requests.

                Possible enum values:

                  TADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMO
              • displayName string

                A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

                Possible enum values:

                  TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
              • status string

                Ready-state of the Vendor. Currently always READY.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE
              • portalName string

                The name of the first party service or app that the user normally logs into.

              • linkingStatus string

                Ready-state for linking with the Vendor.

                • READY: The Vendor is ready to be linked with.
                • ELEVATED_ERROR_RATE: Multiple attempts may be needed to link successfully. We are showing a warning in Link UI.
                • OUTAGE: The Vendor is currently not available for linking. We will show an error in Link UI and not let the user attempt to link with the Vendor.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE

              Response example

              [
                {
                  "vendor": "MILL",
                  "displayName": "Mill",
                  "portalName": "Mill",
                  "status": "READY",
                  "linkingStatus": "READY"
                }
              ]
              Was this section helpful?

              Check available meter vendorsExperimental

              GET /health/meters

              Lists the available Meter vendors, including the activated vendors that your client has access to. Learn more about vendors requiring activation.

              Response 200

              Attributes (list of object)
              • vendor string

                Machine-friendly name of the vendor. Use this in API requests.

                Possible enum values:

                  ENPHASEHUAWEITESLASOLAREDGE
              • displayName string

                A formatted and properly cased OEM brand name, suitable for reading by humans. May contain special characters.

                Possible enum values:

                  EnphaseHuaweiTeslaSolarEdge
              • status string

                Ready-state of the Vendor. Currently always READY.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE
              • portalName string

                The name of the first party service or app that the user normally logs into.

              • linkingStatus string

                Ready-state for linking with the Vendor.

                • READY: The Vendor is ready to be linked with.
                • ELEVATED_ERROR_RATE: Multiple attempts may be needed to link successfully. We are showing a warning in Link UI.
                • OUTAGE: The Vendor is currently not available for linking. We will show an error in Link UI and not let the user attempt to link with the Vendor.

                Possible enum values:

                  READYELEVATED_ERROR_RATEOUTAGE

              Response example

              [
                {
                  "vendor": "TESLA",
                  "displayName": "Tesla",
                  "portalName": "Tesla",
                  "status": "READY",
                  "linkingStatus": "READY"
                }
              ]
              Was this section helpful?

              Check service readiness

              GET /health/ready

              Gets the combined health status of the service and all functionalities and dependencies.

              Response 204

              All functionalities are operating nominally.

              Response 503

              At least one functionality of the system is not operating nominally.

              Was this section helpful?

              Solar inverters

              Solar inverters can be queried for current production state

              List solar inverters

              GET /inverters

              Returns the IDs of all available Solar Inverters

              Response 200

              Attributes (list of string)

                Response example

                [
                  "497f6eca-6276-4993-bfeb-53cbbbba6f08"
                ]
                Was this section helpful?

                Get solar inverter

                GET /inverters/{inverterId}

                Request

                Path parameters
                inverterId string<uuid> Required

                ID of the solar inverter

                Query parameters
                field Deprecated

                Functionality moved in version 2023-08-01 to endpoint POST /chargers/{chargerId}/refresh-hint.

                If you specify any fields here, we make a request to the Solar inverter's OEM APIs and return the updated data.

                This will slow down your integration. In cases of vendor downtime requests with fields may take up to a minute to complete, while requests without fields will always be fast. Enode polls all devices connected to our platform, so any cached data returned will not be older than 10 minutes (unless the vendor APIs are unavailable, in which case you can consult the lastSeen & isReachable fields on the solar inverter).

                By default, no fields are included, and the latest cached full solar inverter object will be returned.

                Default value: []

                Response 200

                Attributes
                • id string<uuid>

                  Solar Inverter ID

                • userId string

                  The ID of the user that linked this inverter.

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                • chargingLocationId string<uuid> or null

                  ID of the charging location the solar inverter is currently positioned at (if any).

                • lastSeen string<date-time>

                  The last time Enode received live data or when the solar inverter was initially linked.

                • isReachable boolean

                  Whether live data from the solar inverter is currently reachable from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the solar inverter's cloud service if that service has determined that its cache is valid.

                • productionState object

                  Latest information about solar production. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

                  Show child attributes
                  • productionState.productionRate number or null

                    The current production rate in kW.

                  • productionState.isProducing boolean or null

                    Whether the solar inverter is actively producing energy or not.

                  • productionState.totalLifetimeProduction number or null

                    The total lifetime production in kWh.

                  • productionState.lastUpdated string<date-time> or null

                    Time of last received production state update

                • information object

                  Descriptive information about the solar inverter

                  Show child attributes
                  • information.id string

                    Solar inverter vendor ID

                  • information.brand string

                    Solar inverter brand

                    Possible enum values:

                      APsystemsCSISolarDeyeEnphaseFOXESSFroniusGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                  • information.model string

                    Solar inverter model

                  • information.siteName string

                    Name of the site, as set by the user on the device/vendor. If no user-specified name is available, we construct a fallback name using the vendor/device/model names.

                  • information.installationDate string<date-time>

                    Solar inverter installation date

                • location object

                  Solar inverter's GPS coordinates

                  Show child attributes
                  • location.longitude number or null

                    Longitude in degrees

                  • location.latitude number or null

                    Latitude in degrees

                • timezone string or null

                  IANA TZ database timezone name representing the location of this inverter.

                • scopes array of string

                  Scopes that the user has granted for this inverter.

                • capabilities object

                  A collection of descriptors that describe the capabilities of this specific inverter.

                  Note: Sample-based statisticsAPI collected by Enode rely on the productionState capability and are not affected by this capability.

                  Show child attributes
                  • capabilities.productionState object

                    Full availability of productionState data.

                    Show child attributes
                    • capabilities.productionState.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.productionState.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.productionStatistics object

                    Availability of production statistics directly from the vendor.

                    Show child attributes
                    • capabilities.productionStatistics.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.productionStatistics.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                Response example

                {
                  "id": "195d8649-ad12-4755-a9cc-44e2d40ce4d9",
                  "userId": "f9d9b134-05f3-452a-80aa-be0deb22f492",
                  "vendor": "ENPHASE",
                  "chargingLocationId": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                  "lastSeen": "2020-04-07T17:04:26Z",
                  "isReachable": true,
                  "productionState": {
                    "productionRate": 0,
                    "isProducing": true,
                    "totalLifetimeProduction": 100152.56,
                    "lastUpdated": "2020-04-07T17:04:26Z"
                  },
                  "information": {
                    "id": "7a18eb4e-ee65-4d5b-bb7c-d8e530006b18",
                    "brand": "string",
                    "model": "Sunny Boy",
                    "siteName": "Sunny Plant",
                    "installationDate": "2020-04-07T17:04:26Z"
                  },
                  "location": {
                    "longitude": 10.7197486,
                    "latitude": 59.9173985
                  },
                  "timezone": "Europe/Oslo",
                  "scopes": [
                    "inverter:read:location",
                    "inverter:read:data"
                  ],
                  "capabilities": {
                    "productionState": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "productionStatistics": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    }
                  }
                }
                Was this section helpful?

                Refresh inverter data

                POST /inverters/{inverterId}/refresh-hint

                Use this endpoint to initiate an expedited data refresh for the specified inverter.

                Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
                This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

                Request

                Path parameters
                inverterId string<uuid> Required

                ID of the solar inverter

                Response 204

                Refresh hint registered successfully.

                Response 404

                The specified inverter was not found.

                Was this section helpful?

                Statistics

                Endpoints returning timeseries data collected from linked devices.

                Get user charging statisticsDeprecated

                GET /statistics/charging

                Moved to /users/{userId}/statistics/charging.

                Returns a normalized time series of statistics about power consumption and price for the User.

                If Smart Charging has shifted the consumption, the 'non-smart' price fields will show what the consumption would have cost if it had happened at the default time. If smart charging has resulted in savings, the value is reported in the estimatedSavings field. <CURRENCY> is an ISO4217 Alpha-3 currency code that is determined by client-wide configuration or the currency code provided during price data ingestion (such as Tariffs).

                Request

                Query parameters
                startDate string Required

                Earliest date to include in the response. Example: 2021-03-21T00:15:00.000Z

                endDate string Optional

                Latest date to include in the response. Example: 2021-03-21T00:30:00.000Z

                chargingLocationId string<uuid> Optional

                Filter statistics to only include this charging location

                resolution string Optional

                The unit of time the data will be bucketed into. Each entry in the response array corresponds to aggregated data of the time range specified.

                Default value: DAY

                Possible enum values:

                  QUARTER_HOURHALF_HOURHOURDAYWEEKMONTHYEAR
                utcOffset string<float> Optional

                Offset (in hours) from UTC to adjust the timezone for viewing statistics. By default, all timestamps are in UTC, and period boundaries (day, week, month, year) are calculated in UTC. Providing utcOffset aligns these to the viewer's timezone. Accepts positive, negative, and fractional values. Note: utcOffset has no effect with resolutions QUARTER_HOUR, HALF_HOUR, or HOUR.

                Deprecated: The use of utcOffset is discouraged as it doesn't handle time zones adequately. All data will be bucketed in UTC if utcOffset is not provided.

                type string Optional

                Get statistics for this hardware type. If omitted, statistics for the vehicle hardware type will be returned.

                Default value: vehicle

                Possible enum values:

                  chargervehiclehvac
                id string Optional

                The ID of the device for which to fetch statistics. The type of the device must match the type parameter.

                Response 200

                Attributes (list of object)
                • kw object

                  Aggregate statistics in kW for the time bucket

                  Show child attributes
                  • kw.min number

                    The minimum amount for this period.

                  • kw.max number

                    The maximum amount for this period.

                  • kw.mean number

                    The average for this period.

                • kwhSum number

                  Total power consumption in kWh for the time bucket

                • price object

                  Aggregate per kWh price statistics for the time bucket. Currency is NOK for Norway, Sweden, Denmark, Finland, Estonia, Latvia, Lithuania; and EUR for Austria, Belgium, Germany, France, Netherlands, Poland, Spain. Unless different price data has been provided via the Tariffs endpoints

                  Show child attributes
                  • price.min number

                    The minimum amount for this period.

                  • price.max number

                    The maximum amount for this period.

                  • price.mean number

                    The average for this period.

                • costSum number

                  Total cost for the consumed kWh for the time bucket

                • nonSmartPrice object

                  Aggregate statistics for power price (<CURRENCY> per kWh), calculated as if charging had occurred uninterrupted without being delayed by Smart Charging

                  Show child attributes
                  • nonSmartPrice.min number

                    The minimum amount for this period.

                  • nonSmartPrice.max number

                    The maximum amount for this period.

                  • nonSmartPrice.mean number

                    The average for this period.

                • nonSmartCostSum number or null Deprecated

                  Total cost for consumed energy in <CURRENCY>, calculated as if it had not been shifted by Smart Charging

                • estimatedSavings number or null

                  Total estimated savings in <CURRENCY>, achieved by Smart Charging. If null, no part of the time range was impacted by Smart Charging.

                • date string<date-time>

                  The start date of this sample

                • smartSession boolean Deprecated

                Response example

                [
                  {
                    "kw": {
                      "min": 0,
                      "max": 78,
                      "mean": 61
                    },
                    "kwhSum": 120,
                    "price": {
                      "min": 13.8,
                      "max": 14.4,
                      "mean": 14.1
                    },
                    "nonSmartPrice": {
                      "min": 12.9,
                      "max": 16.7,
                      "mean": 14.8
                    },
                    "smartSession": true,
                    "costSum": 3.14,
                    "nonSmartCostSum": 4.21,
                    "estimatedSavings": 1.07,
                    "date": "2021-01-19T09:37:36.845Z"
                  }
                ]

                Response 404

                Asset not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get user charging sessions statisticsDeprecated

                GET /statistics/charging/sessions

                Moved to /users/{userId}/statistics/charging/sessions.

                Returns a list of statistics about power consumption and price for the User binned by sessions.

                Request

                Query parameters
                startDate string Required

                Earliest date to include in the response. Example: 2021-03-21T00:15:00.000Z

                endDate string Optional

                Latest date to include in the response. Example: 2021-03-21T00:30:00.000Z

                chargingLocationId string<uuid> Optional

                Filter statistics to only include this charging location

                targetType string Optional

                Get statistics for this hardware type. If omitted, statistics for the vehicle hardware type will be returned.

                Possible enum values:

                  chargervehiclehvac
                targetId string Optional

                Filter statistics to only include a specific entity.

                Response 200

                Attributes (list of object)
                • kw object

                  Aggregate statistics in kW for the time bucket

                  Show child attributes
                  • kw.min number

                    The minimum amount for this period.

                  • kw.max number

                    The maximum amount for this period.

                  • kw.mean number

                    The average for this period.

                • kwhSum number

                  Total power consumption in kWh for the time bucket

                • price object

                  Aggregate per kWh price statistics for the time bucket. Currency is NOK for Norway, Sweden, Denmark, Finland, Estonia, Latvia, Lithuania; and EUR for Austria, Belgium, Germany, France, Netherlands, Poland, Spain. Unless different price data has been provided via the Tariffs endpoints

                  Show child attributes
                  • price.min number

                    The minimum amount for this period.

                  • price.max number

                    The maximum amount for this period.

                  • price.mean number

                    The average for this period.

                • costSum number

                  Total cost for the consumed kWh for this session

                • id string

                  ID of the asset for this session.

                • targetId string

                  ID of the hardware type for this session.

                • chargingLocationId string<uuid> or null

                  Charging Location ID for this session.

                • from string<date-time>

                  Start time of the session.

                • to string<date-time>

                  End time of the session.

                • smartSession boolean Deprecated
                • smartStats object
                  Show child attributes
                  • smartStats.nonSmartPrice object

                    If Smart Charging has actively stopped the charging session from happening at another time; these fields show the aggregate per kWh price statistics that would have occurred without Smart Charging. This can be used to show the potential price if Smart Charging had not been active. This is expressed in NOK unless different price data has been provided via the Tariffs endpoints

                    Show child attributes
                    • smartStats.nonSmartPrice.min number or null

                      The minimum amount for this period.

                    • smartStats.nonSmartPrice.max number or null

                      The maximum amount for this period.

                    • smartStats.nonSmartPrice.mean number or null

                      The average for this period.

                  • smartStats.estimatedSavings number or null

                    Total estimated savings achieved by Smart Charging for this session. If null, no part of this session was impacted by Smart Charging. This is expressed in NOK unless different price data has been provided via the Tariffs endpoints

                  • smartStats.nonSmartCostSum number or null

                    Total cost for consumed energy in <CURRENCY>, calculated as if it had not been shifted by Smart Charging

                Response example

                [
                  {
                    "kw": {
                      "min": 0,
                      "max": 0,
                      "mean": 0
                    },
                    "kwhSum": 120,
                    "price": {
                      "min": 0,
                      "max": 0,
                      "mean": 0
                    },
                    "costSum": 3.14,
                    "id": "string",
                    "targetId": "string",
                    "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                    "from": "2020-04-07T17:04:26Z",
                    "to": "2020-04-07T17:04:26Z",
                    "smartSession": true,
                    "smartStats": {
                      "nonSmartPrice": {
                        "min": 0,
                        "max": 0,
                        "mean": 0
                      },
                      "estimatedSavings": 1.07,
                      "nonSmartCostSum": 4.21
                    }
                  }
                ]

                Response 404

                Asset not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get user production statisticsDeprecated

                GET /statistics/production

                Moved to /users/{userId}/statistics/production.

                Returns a normalized time series of statistics about power production and price for the User.

                Request

                Query parameters
                startDate string Required

                Earliest date to include in the response. Example: 2021-03-21T00:15:00.000Z

                endDate string Optional

                Latest date to include in the response. Example: 2021-03-21T00:30:00.000Z

                chargingLocationId string<uuid> Optional

                Filter statistics to only include this charging location

                resolution string Optional

                The unit of time the data will be cut into before aggregate statistics are applied. Each entry in the response array corresponds to aggregated data of the time range specified.

                Default value: DAY

                Possible enum values:

                  QUARTER_HOURHALF_HOURHOURDAYWEEKMONTHYEAR
                utcOffset string<float> Optional

                Offset (in hours) from UTC to adjust the timezone for viewing statistics. By default, all timestamps are in UTC, and period boundaries (day, week, month, year) are calculated in UTC. Providing utcOffset aligns these to the viewer's timezone. Accepts positive, negative, and fractional values. Note: utcOffset has no effect with resolutions QUARTER_HOUR, HALF_HOUR, or HOUR.

                Deprecated: The use of utcOffset is discouraged as it doesn't handle time zones adequately. All data will be bucketed in UTC if utcOffset is not provided.

                type string Optional

                Get statistics for this hardware type.

                Default value: inverter

                Possible enum values:

                  inverter
                id string Optional

                Filter statistics to only include a specific entity. Hardware category of the entity must match the type parameter.

                Response 200

                Attributes (list of object)
                • kw object

                  Aggregate statistics for production rate in kW

                  Show child attributes
                  • kw.min number

                    The minimum amount for this period.

                  • kw.max number

                    The maximum amount for this period.

                  • kw.mean number

                    The average for this period.

                • kwhSum number

                  Total power production in kWh

                • price object

                  Aggregate per kWh price statistics for the time bucket. This is expressed in NOK unless different price data has been provided via the Tariffs endpoints

                  Show child attributes
                  • price.min number

                    The minimum amount for this period.

                  • price.max number

                    The maximum amount for this period.

                  • price.mean number

                    The average for this period.

                • earningsSum number

                  Uses the local day ahead market price to determine the total value of the energy produced during the time bucket. Requires the user to have a LocationAPI at the same geo coordinates as the inverter itself. This is expressed in NOK unless different price data has been provided via the Tariffs endpoints

                • date string<date-time>

                  The start timestamp of this sample. If utcOffset has been defined, this value will be offset accordingly.

                Response example

                [
                  {
                    "kw": {
                      "min": 0,
                      "max": 78,
                      "mean": 61
                    },
                    "kwhSum": 120,
                    "price": {
                      "min": 13.8,
                      "max": 14.4,
                      "mean": 14.1
                    },
                    "earningsSum": 3.14,
                    "date": "2021-01-19T09:37:36.845Z"
                  }
                ]

                Response 404

                Asset not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get vendor statistics for invertersBetaDeprecated

                GET /inverters/{inverterId}/vendor-statistics

                Moved to /users/{userId}/vendor-statistics.

                Returns statistics about power production for the given inverter in the form of a time series, collected from vendor APIs.

                This endpoint is currently in beta, undergoing active development. Please be aware that errors, inaccuracies, and breaking changes may occur without prior notice.

                Since the statistics data provided by the vendors starts and ends at well defined offsets, the returned time series may start/end at an earlier/later time than requested. E.g. if hourly statistics are requested with startDate = 2023-06-17T09:30:00Z, the returned time series will start at 2023-06-17T09:00:00Z. Currently, we only support querying for 1 month of data.

                Please note that currently, requests may take a long time to complete.

                Request

                Path parameters
                inverterId string<uuid> Required

                ID of the Inverter.

                Query parameters
                resolution string Required

                The duration of each time bucket the returned time series is divided into. Each entry in the response array corresponds to aggregated data of the specified time range.

                Possible enum values:

                  HOURDAY
                startDate string<date-time> Required

                The earliest date (UTC) to include in the response. Cannot be greater than endDate. Example: 2021-03-21T02:00:00Z

                endDate string<date-time> Optional

                The latest date (UTC) to include in the response. Defaults to the current date/time. Example: 2021-03-21T05:00:00Z

                Response 200

                Attributes
                • production object

                  Contains information about power production statistics.

                  Show child attributes
                  • production.unit string

                    The unit of measurement for power production data. Always kWh.

                    Possible enum values:

                      kWh
                  • production.data array of object

                    An array of data points representing the power production statistics.

                    Show child attributes
                    • production.data[].date string<date-time>

                      Date (UTC) at the start of the data point.

                    • production.data[].value number

                      The energy produced (kWh) in the specified interval.

                Response example

                {
                  "production": {
                    "unit": "kWh",
                    "data": [
                      {
                        "date": "2024-01-19T09:00:00.000Z",
                        "value": 11.1
                      },
                      {
                        "date": "2024-01-19T10:00:00.000Z",
                        "value": 15.4
                      }
                    ]
                  }
                }

                Response 404

                Asset not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Tariffs

                Use the Tariffs API to submit pricing information to Enode. These prices will be preferred over market prices in Enode's smart products, like Smart HVACAPI, and will be used to calculate costs in StatisticsAPI.

                Get tariff

                GET /tariffs/{tariffId}

                Get a tariff using its ID.

                Request

                Path parameters
                tariffId string Required

                Response 200

                Attributes (list of object)
                • name string

                  Per-tariff unique interval name

                • cost string

                  Rate cost (decimal string)

                Response example

                [
                  {
                    "name": "PEAK",
                    "cost": "13.37"
                  },
                  {
                    "name": "OFF-PEAK",
                    "cost": "12.34"
                  }
                ]
                Was this section helpful?

                Create a tariff

                PUT /tariffs/{tariffId}

                Create a tariff using a list of names and prices. Before the tariff can be used in Enode products, it must be linked to a locationAPI.

                Request

                Path parameters
                tariffId string Required
                Attributes (list of object)
                • name string Required

                  Per-tariff unique interval name

                • cost string Required

                  Rate cost (decimal string)

                Response 204

                Successfully updated.

                Was this section helpful?

                Link tariff to location

                PUT /charging-locations/{chargingLocationId}/tariff

                Link a tariff to a LocationAPI using a daily schedule. Each new schedule overwrites any previous requests. Devices positioned at this location will use the schedule to calculate electricity costs.The schedule must ensure that there are no overlapping intervals, although gaps are permissible. In case of gaps, the system will default to market prices.

                Request

                Path parameters
                chargingLocationId string<uuid> Required

                ID of the ChargingLocation.

                Attributes
                • tariffId string Required

                  The Tariff ID

                • tariffIntervals array of object Required

                  List of time intervals at which to apply the specified tariff rates.

                  Show child attributes
                  • tariffIntervals[].name string Required

                    Rate name

                  • tariffIntervals[].weekdays array of integer Optional

                    An array of weekdays to apply the named tariff. A weekday starts with 0 for Monday, and ends with 6 for Sunday. If not specified, named tariff is applied for entire week

                  • tariffIntervals[].from string Required

                    Interval from time (inclusive), format HH:mm. Interpreted in the timezone specified in the timezoneName field of the Location.

                  • tariffIntervals[].to string Required

                    Interval to time (exclusive), format HH:mm. Interpreted in the timezone specified in the timezoneName field of the Location.

                Response 204

                Response 400

                Overlapping tariff schedule. Ensure that the schedule has no overlaps.

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }

                Response 404

                Location or tariff not found.

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get tariff schedule

                GET /charging-locations/{chargingLocationId}/tariff

                Get the tariff schedule linked to a location.

                Request

                Path parameters
                chargingLocationId string<uuid> Required

                ID of the ChargingLocation.

                Response 200

                Attributes (list of object)
                • weekday integer

                  Weekday to apply the named tariff. A weekday starts with 0 for Monday, and ends with 6 for Sunday. If not specified, named tariff is applied for entire week

                  Possible enum values:

                    0123456
                • fromHourMinute string

                  Interval from time (inclusive, UTC)

                • toHourMinute string

                  Interval to time (exclusive, UTC)

                • tariffId string

                  Energy Provider Tariff ID

                • tariffName string

                  Rate name

                Response example

                [
                  {
                    "weekday": 0,
                    "fromHourMinute": "00:00",
                    "toHourMinute": "18:00",
                    "tariffId": "FLEX-TARIFF-A",
                    "tariffName": "OFF-PEAK"
                  },
                  {
                    "weekday": 0,
                    "fromHourMinute": "18:00",
                    "toHourMinute": "24:00",
                    "tariffId": "FLEX-TARIFF-A",
                    "tariffName": "PEAK"
                  }
                ]

                Response 404

                Location not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                User management

                Endpoints used to link and unlink users or vendors.

                POST /users/{userId}/link

                Creates an Enode Link session attached to the provided User ID. If this User does not exist, it will be created. The returned linkUrl gives a Link UI session that is valid for 24 hours.

                Request

                Path parameters
                userId string Required

                A unique identifier of your choice representing your user, e.g. a stable UUID you keep in your datastore. If a user entity matching the provided userId does not exist in your client, it will be created before the link session is created.

                Attributes
                • vendor string Optional

                  Skip the vendor selection screen and present the credential input for a specific vendor immediately.

                  Possible enum values:

                    APSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGARO
                • vendorType string Optional

                  Sets the type of vendors available for connection in a Link UI session. If absent, this defaults to vehicle.

                  Default value: vehicle

                  Possible enum values:

                    vehiclechargerhvacinverterbatterymeter
                • forceLanguage string Deprecated

                  BCP47 language code - Force the Link UI to prefer the specified language. If omitted, the UI will default to the User's browser default language.

                  Possible enum values:

                    endenbsvjaesfrnlroptfida
                • scopes array of string Optional

                  The scope(s) you wish to request access to when linking an asset.

                • redirectUri string Optional

                  A URI to redirect the user to after successfully linking an asset. A user may also arrive at the redirect URI if they exited Link UI by clicking the X or denying permissions. In these cases, an error query param will be added to your redirect URI with the values of user closed session or consent request denied, respectively.

                • userName string Deprecated

                Response 200

                Attributes
                • linkState string
                • linkUrl string

                Response example

                {
                  "linkState": "ZjE2MzMxMGFiYmU4MzcxOTU1ZmRjMTU5NGU2ZmE4YTU3NjViMzIwY2YzNG",
                  "linkUrl": "https://link.production.enode.io?link_state=YzIwZThhYjYtMjMzMi00ZTAyLTg0OTYtYzdjOTlhZTY3Zjc3QDI2YzI1MDExLTdhYTctNGE2NS1iNjBmLTZmMzc5NmRhODUyMDowNDViYjFiYmE0M2Y5NDU5YTc5OTgxZmEyYTg1NmI4YzhkOGU4YjgyNmNmMzQzZmFmMGNhZTlmNDBjMmZmOTgy&requested_scope=vehicle%3Alocation%20vehicle%3Aodometer&redirect_uri=myapp%3A%2F%2Fintegrations%2Fenode"
                }

                Response 403

                Connections limit reached for this client

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/forbidden",
                  "title": "Connections limit reached.",
                  "detail": "Unable to create more connections for ClientID: a7bedf14-c3eb-4c2b-a08f-b34a1f70808d"
                }
                Was this section helpful?

                Unlink user

                DELETE /users/{userId}

                Deletes a User and all of their data permanently and invalidates any associated sessions, authorization codes, and access/refresh tokens.

                Request

                Path parameters
                userId string Required

                A unique identifier of your choice representing your user, e.g. a stable UUID you keep in your datastore. If a user entity matching the provided userId does not exist in your client, it will be created before the link session is created.

                Response 204

                No Content

                Was this section helpful?

                Deauthorize user

                DELETE /users/{userId}/authorization

                Deletes the User's stored vendor authorizations and credentials, invalidates any associated sessions, authorization codes, and access/refresh tokens.

                All other User data is retained, and if the User is sent through the Link User flow in the future, their account will be just as they left it.

                No webhook events will be generated for a deauthorized user.

                Request

                Path parameters
                userId string Required

                A unique identifier of your choice representing your user, e.g. a stable UUID you keep in your datastore. If a user entity matching the provided userId does not exist in your client, it will be created before the link session is created.

                Response 204

                No Content

                Was this section helpful?

                Vehicles

                EVs provide charge, location, and odometer data. Vehicles can be controlled either directly using the Control ChargingAPI endpoint, or through Smart Charging and Schedules.

                List vehicles

                GET /vehicles

                List all available Vehicles for the User.

                If you already know the ID of a vehicle you want to fetch, it is recommended to fetch it using the more performant Get VehicleAPI method.

                Request

                Query parameters
                field Deprecated

                Functionality moved in version 2023-08-01 to endpoint POST /chargers/{chargerId}/refresh-hint.

                If you specify any fields here, we make a request to the Vehicle's OEM APIs and return the updated data.

                This will slow down your integration. In cases of vendor downtime requests with fields may take up to a minute to complete, while requests without fields will always be fast. Enode polls all devices connected to our platform, so any cached data returned will not be older than 10 minutes (unless the vendor APIs are unavailable, in which case you can consult the lastSeen & isReachable fields on the vehicle).

                Note that the field values capabilities & smartChargingPolicy are deprecated and will always be returned.

                If no fields are included, and the latest cached full Vehicle object will be returned.

                Default value: []

                Response 200

                Attributes (list of object)
                • id string

                  Vehicle ID

                • userId string

                  The ID of the user that linked this vehicle.

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • lastSeen string<date-time>

                  The last time Enode received live data or when the vehicle was initially linked.

                • isReachable boolean or null

                  Whether live data from the vehicle is currently available from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the vehicle's cloud service if that service has determined that its cache is valid.

                • information object

                  Descriptive information about the Vehicle.

                  Show child attributes
                  • information.vin string or null

                    Vehicle VIN

                  • information.brand string or null

                    Vehicle brand

                    Possible enum values:

                      AudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODATeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENG
                  • information.model string or null

                    Vehicle model

                  • information.year number or null

                    Vehicle production year

                  • information.displayName string or null

                    User-defined vehicle nickname.

                • chargeState object

                  Latest information about the electric or hybrid battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

                  Show child attributes
                  • chargeState.batteryLevel number or null

                    Remaining battery in percent

                  • chargeState.range number or null

                    Estimated remaining kilometers

                  • chargeState.isPluggedIn boolean or null

                    Indicates whether the vehicle is connected to a charging box (regardless of whether it is actually charging)

                  • chargeState.isCharging boolean or null

                    Indicates whether the vehicle is currently receiving power from the vehicle and actively charging its battery.

                  • chargeState.isFullyCharged boolean or null

                    Indicates whether the vehicle is fully charged. 'Fully charged' may be a batteryLevel of less than 100 if a chargeLimit has been configured in the vehicle.

                  • chargeState.batteryCapacity number or null

                    Vehicle's usable battery capacity in kWh.

                  • chargeState.chargeLimit number or null

                    Charge limit, as a percent of batteryCapacity.

                  • chargeState.chargeRate number or null

                    The current charge rate in kW.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.chargeTimeRemaining number or null

                    Estimated time until the current charging intent is completed, in minutes.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.lastUpdated string<date-time> or null

                    Time of last received charge state update

                  • chargeState.maxCurrent number or null

                    The maximum current that the vehicle can draw from the charger, in amps.

                  • chargeState.powerDeliveryState string

                    The current state of power delivery between the vehicle and charger.

                    • UNKNOWN: The state of power delivery is currently unknown.
                    • UNPLUGGED: The vehicle is not connected to the charger.
                    • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
                    • PLUGGED_IN:CHARGING: The vehicle is actively receiving power from the charger, causing the battery level to increase.
                    • PLUGGED_IN:COMPLETE: The charging process has finished and the vehicle's battery has reached the target charge limit.
                    • PLUGGED_IN:STOPPED: The charging process has been intentionally stopped by either the vehicle or the charger. The vehicle is still plugged in and waiting for the charging process to resume.
                    • PLUGGED_IN:NO_POWER: The vehicle attempted to initialize charging, however no external power was available. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
                    • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

                    Possible enum values:

                      UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
                • smartChargingPolicy object

                  Smart Charging configuration properties. Configured via Update Vehicle Smart Charging PolicyAPI.

                  Show child attributes
                  • smartChargingPolicy.isEnabled boolean

                    When enabled, this vehicle's charging status may be controlled by Smart Charging

                    Default value: false

                  • smartChargingPolicy.deadline string

                    The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                  • smartChargingPolicy.minimumChargeLimit number

                    Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                    Default value: 0

                • location object

                  Vehicle's GPS coordinates with timestamp

                  Show child attributes
                  • location.longitude number or null

                    Longitude in degrees

                  • location.latitude number or null

                    Latitude in degrees

                  • location.lastUpdated string<date-time> or null

                    Time of last received location

                • odometer object

                  Vehicle's odometer reading in kilometers with timestamp

                  Show child attributes
                  • odometer.distance number or null

                    Odometer in kilometers

                  • odometer.lastUpdated string<date-time> or null

                    Time of the last odometer update, in kilometers

                • capabilities object

                  A collection of descriptors that describe the capabilities of this specific vehicle

                  Show child attributes
                  • capabilities.information object

                    Full availability of information data.

                    Show child attributes
                    • capabilities.information.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.information.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.chargeState object

                    Full availability of chargeState data.

                    Show child attributes
                    • capabilities.chargeState.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.chargeState.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.location object

                    Full availability of location data.

                    Show child attributes
                    • capabilities.location.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.location.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.odometer object

                    Full availability of odometer data.

                    Show child attributes
                    • capabilities.odometer.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.odometer.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.setMaxCurrent object

                    Supports setting the maximum charge current.

                    Show child attributes
                    • capabilities.setMaxCurrent.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.setMaxCurrent.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.startCharging object

                    Supports START charging command.

                    Show child attributes
                    • capabilities.startCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.startCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.stopCharging object

                    Supports STOP charging command.

                    Show child attributes
                    • capabilities.stopCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.stopCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.smartCharging object

                    Support for smartCharging. This value is dynamic and may change over time.

                    Show child attributes
                    • capabilities.smartCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.smartCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                • scopes array of string

                  Scopes that the user has granted for this vehicle.

                • chargingLocationId string<uuid> or null

                  ID of the charging location the vehicle is currently positioned at (if any).

                Response example

                [
                  {
                    "id": "05ee9df5-d072-4ee8-b773-399dec8f5693",
                    "userId": "bb28471e-cde6-4eff-ace4-9a7f4f50882a",
                    "vendor": "TESLA",
                    "lastSeen": "2024-01-07T17:04:26.000Z",
                    "isReachable": true,
                    "information": {
                      "vin": "2HGFB2F5XEH542858",
                      "brand": "string",
                      "model": "Model S P85",
                      "year": 2020,
                      "displayName": "Batmobile"
                    },
                    "chargeState": {
                      "batteryLevel": 66,
                      "range": 228,
                      "isPluggedIn": true,
                      "isCharging": true,
                      "isFullyCharged": false,
                      "batteryCapacity": 48.1,
                      "chargeLimit": 90,
                      "chargeRate": 2,
                      "chargeTimeRemaining": 285,
                      "lastUpdated": "2020-04-07T17:04:26Z",
                      "maxCurrent": 16,
                      "powerDeliveryState": "PLUGGED_IN:CHARGING"
                    },
                    "smartChargingPolicy": {
                      "isEnabled": false,
                      "deadline": "07:00",
                      "minimumChargeLimit": 0
                    },
                    "location": {
                      "longitude": 10.7197486,
                      "latitude": 59.9173985,
                      "lastUpdated": "2024-01-07T17:04:26.000Z"
                    },
                    "odometer": {
                      "distance": 65393,
                      "lastUpdated": "2024-01-07T17:04:26.000Z"
                    },
                    "capabilities": {
                      "information": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "chargeState": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "location": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "odometer": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "setMaxCurrent": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "startCharging": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "stopCharging": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      },
                      "smartCharging": {
                        "isCapable": false,
                        "interventionIds": [
                          "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                        ]
                      }
                    },
                    "scopes": [
                      "vehicle:control:charging",
                      "vehicle:read:data",
                      "vehicle:read:location"
                    ],
                    "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  }
                ]

                Response 206

                Partial Content: The requested vehicle fields could not be fetched, and a cached copy of the data is returned as the response.

                Attributes
                • id string

                  Vehicle ID

                • userId string

                  The ID of the user that linked this vehicle.

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • lastSeen string<date-time>

                  The last time Enode received live data or when the vehicle was initially linked.

                • isReachable boolean or null

                  Whether live data from the vehicle is currently available from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the vehicle's cloud service if that service has determined that its cache is valid.

                • information object

                  Descriptive information about the Vehicle.

                  Show child attributes
                  • information.vin string or null

                    Vehicle VIN

                  • information.brand string or null

                    Vehicle brand

                    Possible enum values:

                      AudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODATeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENG
                  • information.model string or null

                    Vehicle model

                  • information.year number or null

                    Vehicle production year

                  • information.displayName string or null

                    User-defined vehicle nickname.

                • chargeState object

                  Latest information about the electric or hybrid battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

                  Show child attributes
                  • chargeState.batteryLevel number or null

                    Remaining battery in percent

                  • chargeState.range number or null

                    Estimated remaining kilometers

                  • chargeState.isPluggedIn boolean or null

                    Indicates whether the vehicle is connected to a charging box (regardless of whether it is actually charging)

                  • chargeState.isCharging boolean or null

                    Indicates whether the vehicle is currently receiving power from the vehicle and actively charging its battery.

                  • chargeState.isFullyCharged boolean or null

                    Indicates whether the vehicle is fully charged. 'Fully charged' may be a batteryLevel of less than 100 if a chargeLimit has been configured in the vehicle.

                  • chargeState.batteryCapacity number or null

                    Vehicle's usable battery capacity in kWh.

                  • chargeState.chargeLimit number or null

                    Charge limit, as a percent of batteryCapacity.

                  • chargeState.chargeRate number or null

                    The current charge rate in kW.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.chargeTimeRemaining number or null

                    Estimated time until the current charging intent is completed, in minutes.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.lastUpdated string<date-time> or null

                    Time of last received charge state update

                  • chargeState.maxCurrent number or null

                    The maximum current that the vehicle can draw from the charger, in amps.

                  • chargeState.powerDeliveryState string

                    The current state of power delivery between the vehicle and charger.

                    • UNKNOWN: The state of power delivery is currently unknown.
                    • UNPLUGGED: The vehicle is not connected to the charger.
                    • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
                    • PLUGGED_IN:CHARGING: The vehicle is actively receiving power from the charger, causing the battery level to increase.
                    • PLUGGED_IN:COMPLETE: The charging process has finished and the vehicle's battery has reached the target charge limit.
                    • PLUGGED_IN:STOPPED: The charging process has been intentionally stopped by either the vehicle or the charger. The vehicle is still plugged in and waiting for the charging process to resume.
                    • PLUGGED_IN:NO_POWER: The vehicle attempted to initialize charging, however no external power was available. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
                    • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

                    Possible enum values:

                      UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
                • smartChargingPolicy object

                  Smart Charging configuration properties. Configured via Update Vehicle Smart Charging PolicyAPI.

                  Show child attributes
                  • smartChargingPolicy.isEnabled boolean

                    When enabled, this vehicle's charging status may be controlled by Smart Charging

                    Default value: false

                  • smartChargingPolicy.deadline string

                    The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                  • smartChargingPolicy.minimumChargeLimit number

                    Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                    Default value: 0

                • location object

                  Vehicle's GPS coordinates with timestamp

                  Show child attributes
                  • location.longitude number or null

                    Longitude in degrees

                  • location.latitude number or null

                    Latitude in degrees

                  • location.lastUpdated string<date-time> or null

                    Time of last received location

                • odometer object

                  Vehicle's odometer reading in kilometers with timestamp

                  Show child attributes
                  • odometer.distance number or null

                    Odometer in kilometers

                  • odometer.lastUpdated string<date-time> or null

                    Time of the last odometer update, in kilometers

                • capabilities object

                  A collection of descriptors that describe the capabilities of this specific vehicle

                  Show child attributes
                  • capabilities.information object

                    Full availability of information data.

                    Show child attributes
                    • capabilities.information.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.information.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.chargeState object

                    Full availability of chargeState data.

                    Show child attributes
                    • capabilities.chargeState.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.chargeState.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.location object

                    Full availability of location data.

                    Show child attributes
                    • capabilities.location.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.location.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.odometer object

                    Full availability of odometer data.

                    Show child attributes
                    • capabilities.odometer.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.odometer.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.setMaxCurrent object

                    Supports setting the maximum charge current.

                    Show child attributes
                    • capabilities.setMaxCurrent.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.setMaxCurrent.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.startCharging object

                    Supports START charging command.

                    Show child attributes
                    • capabilities.startCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.startCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.stopCharging object

                    Supports STOP charging command.

                    Show child attributes
                    • capabilities.stopCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.stopCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.smartCharging object

                    Support for smartCharging. This value is dynamic and may change over time.

                    Show child attributes
                    • capabilities.smartCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.smartCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                • scopes array of string

                  Scopes that the user has granted for this vehicle.

                • chargingLocationId string<uuid> or null

                  ID of the charging location the vehicle is currently positioned at (if any).

                Response example

                {
                  "id": "05ee9df5-d072-4ee8-b773-399dec8f5693",
                  "userId": "bb28471e-cde6-4eff-ace4-9a7f4f50882a",
                  "vendor": "TESLA",
                  "lastSeen": "2024-01-07T17:04:26.000Z",
                  "isReachable": true,
                  "information": {
                    "vin": "2HGFB2F5XEH542858",
                    "brand": "string",
                    "model": "Model S P85",
                    "year": 2020,
                    "displayName": "Batmobile"
                  },
                  "chargeState": {
                    "batteryLevel": 66,
                    "range": 228,
                    "isPluggedIn": true,
                    "isCharging": true,
                    "isFullyCharged": false,
                    "batteryCapacity": 48.1,
                    "chargeLimit": 90,
                    "chargeRate": 2,
                    "chargeTimeRemaining": 285,
                    "lastUpdated": "2020-04-07T17:04:26Z",
                    "maxCurrent": 16,
                    "powerDeliveryState": "PLUGGED_IN:CHARGING"
                  },
                  "smartChargingPolicy": {
                    "isEnabled": false,
                    "deadline": "07:00",
                    "minimumChargeLimit": 0
                  },
                  "location": {
                    "longitude": 10.7197486,
                    "latitude": 59.9173985,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "odometer": {
                    "distance": 65393,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "capabilities": {
                    "information": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "chargeState": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "location": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "odometer": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "setMaxCurrent": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "startCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "stopCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "smartCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    }
                  },
                  "scopes": [
                    "vehicle:control:charging",
                    "vehicle:read:data",
                    "vehicle:read:location"
                  ],
                  "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                }
                Was this section helpful?

                Get vehicle

                GET /vehicles/{vehicleId}

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Query parameters
                field Deprecated

                Functionality moved in version 2023-08-01 to endpoint POST /chargers/{chargerId}/refresh-hint.

                If you specify any fields here, we make a request to the Vehicle's OEM APIs and return the updated data.

                This will slow down your integration. In cases of vendor downtime requests with fields may take up to a minute to complete, while requests without fields will always be fast. Enode polls all devices connected to our platform, so any cached data returned will not be older than 10 minutes (unless the vendor APIs are unavailable, in which case you can consult the lastSeen & isReachable fields on the vehicle).

                Note that the field values capabilities & smartChargingPolicy are deprecated and will always be returned.

                If no fields are included, and the latest cached full Vehicle object will be returned.

                Default value: []

                Response 200

                Attributes
                • id string

                  Vehicle ID

                • userId string

                  The ID of the user that linked this vehicle.

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • lastSeen string<date-time>

                  The last time Enode received live data or when the vehicle was initially linked.

                • isReachable boolean or null

                  Whether live data from the vehicle is currently available from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the vehicle's cloud service if that service has determined that its cache is valid.

                • information object

                  Descriptive information about the Vehicle.

                  Show child attributes
                  • information.vin string or null

                    Vehicle VIN

                  • information.brand string or null

                    Vehicle brand

                    Possible enum values:

                      AudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODATeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENG
                  • information.model string or null

                    Vehicle model

                  • information.year number or null

                    Vehicle production year

                  • information.displayName string or null

                    User-defined vehicle nickname.

                • chargeState object

                  Latest information about the electric or hybrid battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

                  Show child attributes
                  • chargeState.batteryLevel number or null

                    Remaining battery in percent

                  • chargeState.range number or null

                    Estimated remaining kilometers

                  • chargeState.isPluggedIn boolean or null

                    Indicates whether the vehicle is connected to a charging box (regardless of whether it is actually charging)

                  • chargeState.isCharging boolean or null

                    Indicates whether the vehicle is currently receiving power from the vehicle and actively charging its battery.

                  • chargeState.isFullyCharged boolean or null

                    Indicates whether the vehicle is fully charged. 'Fully charged' may be a batteryLevel of less than 100 if a chargeLimit has been configured in the vehicle.

                  • chargeState.batteryCapacity number or null

                    Vehicle's usable battery capacity in kWh.

                  • chargeState.chargeLimit number or null

                    Charge limit, as a percent of batteryCapacity.

                  • chargeState.chargeRate number or null

                    The current charge rate in kW.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.chargeTimeRemaining number or null

                    Estimated time until the current charging intent is completed, in minutes.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.lastUpdated string<date-time> or null

                    Time of last received charge state update

                  • chargeState.maxCurrent number or null

                    The maximum current that the vehicle can draw from the charger, in amps.

                  • chargeState.powerDeliveryState string

                    The current state of power delivery between the vehicle and charger.

                    • UNKNOWN: The state of power delivery is currently unknown.
                    • UNPLUGGED: The vehicle is not connected to the charger.
                    • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
                    • PLUGGED_IN:CHARGING: The vehicle is actively receiving power from the charger, causing the battery level to increase.
                    • PLUGGED_IN:COMPLETE: The charging process has finished and the vehicle's battery has reached the target charge limit.
                    • PLUGGED_IN:STOPPED: The charging process has been intentionally stopped by either the vehicle or the charger. The vehicle is still plugged in and waiting for the charging process to resume.
                    • PLUGGED_IN:NO_POWER: The vehicle attempted to initialize charging, however no external power was available. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
                    • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

                    Possible enum values:

                      UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
                • smartChargingPolicy object

                  Smart Charging configuration properties. Configured via Update Vehicle Smart Charging PolicyAPI.

                  Show child attributes
                  • smartChargingPolicy.isEnabled boolean

                    When enabled, this vehicle's charging status may be controlled by Smart Charging

                    Default value: false

                  • smartChargingPolicy.deadline string

                    The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                  • smartChargingPolicy.minimumChargeLimit number

                    Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                    Default value: 0

                • location object

                  Vehicle's GPS coordinates with timestamp

                  Show child attributes
                  • location.longitude number or null

                    Longitude in degrees

                  • location.latitude number or null

                    Latitude in degrees

                  • location.lastUpdated string<date-time> or null

                    Time of last received location

                • odometer object

                  Vehicle's odometer reading in kilometers with timestamp

                  Show child attributes
                  • odometer.distance number or null

                    Odometer in kilometers

                  • odometer.lastUpdated string<date-time> or null

                    Time of the last odometer update, in kilometers

                • capabilities object

                  A collection of descriptors that describe the capabilities of this specific vehicle

                  Show child attributes
                  • capabilities.information object

                    Full availability of information data.

                    Show child attributes
                    • capabilities.information.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.information.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.chargeState object

                    Full availability of chargeState data.

                    Show child attributes
                    • capabilities.chargeState.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.chargeState.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.location object

                    Full availability of location data.

                    Show child attributes
                    • capabilities.location.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.location.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.odometer object

                    Full availability of odometer data.

                    Show child attributes
                    • capabilities.odometer.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.odometer.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.setMaxCurrent object

                    Supports setting the maximum charge current.

                    Show child attributes
                    • capabilities.setMaxCurrent.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.setMaxCurrent.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.startCharging object

                    Supports START charging command.

                    Show child attributes
                    • capabilities.startCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.startCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.stopCharging object

                    Supports STOP charging command.

                    Show child attributes
                    • capabilities.stopCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.stopCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.smartCharging object

                    Support for smartCharging. This value is dynamic and may change over time.

                    Show child attributes
                    • capabilities.smartCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.smartCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                • scopes array of string

                  Scopes that the user has granted for this vehicle.

                • chargingLocationId string<uuid> or null

                  ID of the charging location the vehicle is currently positioned at (if any).

                Response example

                {
                  "id": "05ee9df5-d072-4ee8-b773-399dec8f5693",
                  "userId": "bb28471e-cde6-4eff-ace4-9a7f4f50882a",
                  "vendor": "TESLA",
                  "lastSeen": "2024-01-07T17:04:26.000Z",
                  "isReachable": true,
                  "information": {
                    "vin": "2HGFB2F5XEH542858",
                    "brand": "string",
                    "model": "Model S P85",
                    "year": 2020,
                    "displayName": "Batmobile"
                  },
                  "chargeState": {
                    "batteryLevel": 66,
                    "range": 228,
                    "isPluggedIn": true,
                    "isCharging": true,
                    "isFullyCharged": false,
                    "batteryCapacity": 48.1,
                    "chargeLimit": 90,
                    "chargeRate": 2,
                    "chargeTimeRemaining": 285,
                    "lastUpdated": "2020-04-07T17:04:26Z",
                    "maxCurrent": 16,
                    "powerDeliveryState": "PLUGGED_IN:CHARGING"
                  },
                  "smartChargingPolicy": {
                    "isEnabled": false,
                    "deadline": "07:00",
                    "minimumChargeLimit": 0
                  },
                  "location": {
                    "longitude": 10.7197486,
                    "latitude": 59.9173985,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "odometer": {
                    "distance": 65393,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "capabilities": {
                    "information": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "chargeState": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "location": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "odometer": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "setMaxCurrent": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "startCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "stopCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "smartCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    }
                  },
                  "scopes": [
                    "vehicle:control:charging",
                    "vehicle:read:data",
                    "vehicle:read:location"
                  ],
                  "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                }

                Response 206

                Partial Content: The requested vehicle fields could not be fetched, and a cached copy of the data is returned as the response.

                Attributes
                • id string

                  Vehicle ID

                • userId string

                  The ID of the user that linked this vehicle.

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • lastSeen string<date-time>

                  The last time Enode received live data or when the vehicle was initially linked.

                • isReachable boolean or null

                  Whether live data from the vehicle is currently available from Enode's perspective. This 'reachability' may refer to reading from a cache operated by the vehicle's cloud service if that service has determined that its cache is valid.

                • information object

                  Descriptive information about the Vehicle.

                  Show child attributes
                  • information.vin string or null

                    Vehicle VIN

                  • information.brand string or null

                    Vehicle brand

                    Possible enum values:

                      AudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠKODATeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNioChevroletGMCCadillacXPENG
                  • information.model string or null

                    Vehicle model

                  • information.year number or null

                    Vehicle production year

                  • information.displayName string or null

                    User-defined vehicle nickname.

                • chargeState object

                  Latest information about the electric or hybrid battery. null values indicate we are unable to determine a value for the field based on the information coming from the vendor.

                  Show child attributes
                  • chargeState.batteryLevel number or null

                    Remaining battery in percent

                  • chargeState.range number or null

                    Estimated remaining kilometers

                  • chargeState.isPluggedIn boolean or null

                    Indicates whether the vehicle is connected to a charging box (regardless of whether it is actually charging)

                  • chargeState.isCharging boolean or null

                    Indicates whether the vehicle is currently receiving power from the vehicle and actively charging its battery.

                  • chargeState.isFullyCharged boolean or null

                    Indicates whether the vehicle is fully charged. 'Fully charged' may be a batteryLevel of less than 100 if a chargeLimit has been configured in the vehicle.

                  • chargeState.batteryCapacity number or null

                    Vehicle's usable battery capacity in kWh.

                  • chargeState.chargeLimit number or null

                    Charge limit, as a percent of batteryCapacity.

                  • chargeState.chargeRate number or null

                    The current charge rate in kW.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.chargeTimeRemaining number or null

                    Estimated time until the current charging intent is completed, in minutes.

                    This property is only available when the vehicle is charging, and is null any other time.

                  • chargeState.lastUpdated string<date-time> or null

                    Time of last received charge state update

                  • chargeState.maxCurrent number or null

                    The maximum current that the vehicle can draw from the charger, in amps.

                  • chargeState.powerDeliveryState string

                    The current state of power delivery between the vehicle and charger.

                    • UNKNOWN: The state of power delivery is currently unknown.
                    • UNPLUGGED: The vehicle is not connected to the charger.
                    • PLUGGED_IN:INITIALIZING: The charging station is preparing to deliver power to the vehicle. It is expected for this state to shortly transition into PLUGGED_IN:CHARGING.
                    • PLUGGED_IN:CHARGING: The vehicle is actively receiving power from the charger, causing the battery level to increase.
                    • PLUGGED_IN:COMPLETE: The charging process has finished and the vehicle's battery has reached the target charge limit.
                    • PLUGGED_IN:STOPPED: The charging process has been intentionally stopped by either the vehicle or the charger. The vehicle is still plugged in and waiting for the charging process to resume.
                    • PLUGGED_IN:NO_POWER: The vehicle attempted to initialize charging, however no external power was available. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.
                    • PLUGGED_IN:FAULT: A malfunction in the charging process is preventing power from being delivered. Possible causes include a charging cable not being properly locked, extreme temperatures, or malfunctions in either the charging station or the vehicle's internal system. It is not possible to transition into a charging state with a remote command until there is some user intervention to resolve the issue.

                    Possible enum values:

                      UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULT
                • smartChargingPolicy object

                  Smart Charging configuration properties. Configured via Update Vehicle Smart Charging PolicyAPI.

                  Show child attributes
                  • smartChargingPolicy.isEnabled boolean

                    When enabled, this vehicle's charging status may be controlled by Smart Charging

                    Default value: false

                  • smartChargingPolicy.deadline string

                    The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                  • smartChargingPolicy.minimumChargeLimit number

                    Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                    Default value: 0

                • location object

                  Vehicle's GPS coordinates with timestamp

                  Show child attributes
                  • location.longitude number or null

                    Longitude in degrees

                  • location.latitude number or null

                    Latitude in degrees

                  • location.lastUpdated string<date-time> or null

                    Time of last received location

                • odometer object

                  Vehicle's odometer reading in kilometers with timestamp

                  Show child attributes
                  • odometer.distance number or null

                    Odometer in kilometers

                  • odometer.lastUpdated string<date-time> or null

                    Time of the last odometer update, in kilometers

                • capabilities object

                  A collection of descriptors that describe the capabilities of this specific vehicle

                  Show child attributes
                  • capabilities.information object

                    Full availability of information data.

                    Show child attributes
                    • capabilities.information.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.information.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.chargeState object

                    Full availability of chargeState data.

                    Show child attributes
                    • capabilities.chargeState.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.chargeState.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.location object

                    Full availability of location data.

                    Show child attributes
                    • capabilities.location.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.location.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.odometer object

                    Full availability of odometer data.

                    Show child attributes
                    • capabilities.odometer.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.odometer.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.setMaxCurrent object

                    Supports setting the maximum charge current.

                    Show child attributes
                    • capabilities.setMaxCurrent.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.setMaxCurrent.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.startCharging object

                    Supports START charging command.

                    Show child attributes
                    • capabilities.startCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.startCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.stopCharging object

                    Supports STOP charging command.

                    Show child attributes
                    • capabilities.stopCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.stopCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                  • capabilities.smartCharging object

                    Support for smartCharging. This value is dynamic and may change over time.

                    Show child attributes
                    • capabilities.smartCharging.isCapable boolean

                      The entity is fully capable of providing this data or functionality. If false, support is partial or missing.

                    • capabilities.smartCharging.interventionIds array of string

                      IDs of interventions the user can make to alter the availability of this capability. Please refer to the interventions guide for more information.

                • scopes array of string

                  Scopes that the user has granted for this vehicle.

                • chargingLocationId string<uuid> or null

                  ID of the charging location the vehicle is currently positioned at (if any).

                Response example

                {
                  "id": "05ee9df5-d072-4ee8-b773-399dec8f5693",
                  "userId": "bb28471e-cde6-4eff-ace4-9a7f4f50882a",
                  "vendor": "TESLA",
                  "lastSeen": "2024-01-07T17:04:26.000Z",
                  "isReachable": true,
                  "information": {
                    "vin": "2HGFB2F5XEH542858",
                    "brand": "string",
                    "model": "Model S P85",
                    "year": 2020,
                    "displayName": "Batmobile"
                  },
                  "chargeState": {
                    "batteryLevel": 66,
                    "range": 228,
                    "isPluggedIn": true,
                    "isCharging": true,
                    "isFullyCharged": false,
                    "batteryCapacity": 48.1,
                    "chargeLimit": 90,
                    "chargeRate": 2,
                    "chargeTimeRemaining": 285,
                    "lastUpdated": "2020-04-07T17:04:26Z",
                    "maxCurrent": 16,
                    "powerDeliveryState": "PLUGGED_IN:CHARGING"
                  },
                  "smartChargingPolicy": {
                    "isEnabled": false,
                    "deadline": "07:00",
                    "minimumChargeLimit": 0
                  },
                  "location": {
                    "longitude": 10.7197486,
                    "latitude": 59.9173985,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "odometer": {
                    "distance": 65393,
                    "lastUpdated": "2024-01-07T17:04:26.000Z"
                  },
                  "capabilities": {
                    "information": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "chargeState": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "location": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "odometer": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "setMaxCurrent": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "startCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "stopCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    },
                    "smartCharging": {
                      "isCapable": false,
                      "interventionIds": [
                        "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                      ]
                    }
                  },
                  "scopes": [
                    "vehicle:control:charging",
                    "vehicle:read:data",
                    "vehicle:read:location"
                  ],
                  "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                }
                Was this section helpful?

                Control charging

                POST /vehicles/{vehicleId}/charging

                Request for a vehicle to start or stop charging. This request creates an Action that will retry until the vehicle's powerDeliveryState matches the expected value. The Action must complete before any further commands are sent to the vehicle. If a PENDING action for the same target and type already exists, it will be reused and a new action will not be created. If the new Action has a different target or type, the existing Action will be automatically transitioned to the CANCELLED state and a new Action will be created. Transitions can be tracked via the user:vendor-action:updated webhook event or Get Vehicle ActionAPI.

                This endpoint returns an error with status code 422 if the vehicle is controlled by a schedule or has an active smart charging plan. To restore user control, either disable the schedule, disable smart charging, or use Create Smart OverrideAPI to temporarily enable charging.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Attributes
                • action string Required

                  Charging action to perform

                  Possible enum values:

                    STARTSTOP

                Response 200

                Resulting charge action

                Attributes
                • id string<uuid>

                  The ID of the action.

                • userId string

                  The ID of the user that owns the target of this action.

                • createdAt string<date-time>

                  Time when this action was created

                • updatedAt string<date-time>

                  Time when this action was last updated

                • completedAt string<date-time> or null

                  Time when the action transitioned to a non-pending state.

                • state string

                  The real-time status of an action executed on a target.

                  • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
                  • CONFIRMED: Successful transition of the target to the desired state.
                  • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
                  • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

                  Possible enum values:

                    PENDINGCONFIRMEDFAILEDCANCELLED
                • targetId string

                  ID of the target which this action is controlling.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • kind string

                  The charging action to perform

                  Possible enum values:

                    STARTSTOP
                • failureReason object or null

                  Information about why was this action not executed successfully.

                  Show child attributes
                  • failureReason.type string

                    A machine-readable high level error category.

                    • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
                    • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
                    • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
                    • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
                    • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
                    • NOT_FOUND: The chargeable was deleted while the action was PENDING.

                    Possible enum values:

                      NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
                  • failureReason.detail string

                    A human-readable explanation of why the charging action was unsuccessful.

                Response example

                {
                  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
                  "createdAt": "2020-04-07T17:04:26Z",
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "completedAt": "2020-04-07T17:04:26Z",
                  "state": "PENDING",
                  "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
                  "targetType": "vehicle",
                  "kind": "START",
                  "failureReason": {
                    "type": "NO_RESPONSE",
                    "detail": "The chargeable device remained unreachable."
                  }
                }

                Response 400

                A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the vehicle cannot perform the action, is fully charged, or is already in the desired state.

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }

                Response 422

                Vehicle controlled by a Schedule or has active Smart Charging Plan

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Set max currentExperimental

                POST /vehicles/{vehicleId}/max-current

                Experimental: Set the max current the vehicle is allowed to consume during charging. Currently only supported for Tesla vehicles and behind a feature flag. Reach out to Customer Success to get access.

                This request creates an Action that will retry until the vehicles's maxCurrent matches the expected value. The Action must complete before any further commands are sent to the vehicle. Only one Action can be active for a specific vehicle at a time. If a new Action is created, the previous Action will be automatically cancelled and transitioned to the CANCELLED state. Transitions can be tracked via the user:vendor-action:updated webhook event or Get Vehicle ActionAPI.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Attributes
                • maxCurrent number Required

                  Desired max current in ampere

                Response 200

                Attributes
                • id string<uuid>

                  The ID of the action.

                • userId string

                  The ID of the user that owns the target of this action.

                • createdAt string<date-time>

                  Time when this action was created

                • updatedAt string<date-time>

                  Time when this action was last updated

                • completedAt string<date-time> or null

                  Time when the action transitioned to a non-pending state.

                • state string

                  The real-time status of an action executed on a target.

                  • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
                  • CONFIRMED: Successful transition of the target to the desired state.
                  • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
                  • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

                  Possible enum values:

                    PENDINGCONFIRMEDFAILEDCANCELLED
                • targetId string

                  ID of the entity which this action is controlling.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • targetState object

                  Target maximum current for entity

                  Show child attributes
                  • targetState.maxCurrent number

                    Desired max current in ampere

                • failureReason object or null

                  Information about why was this action not executed successfully.

                  Show child attributes
                  • failureReason.type string

                    A machine-readable high level error category.

                    • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
                    • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
                    • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
                    • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
                    • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
                    • NOT_FOUND: The chargeable was deleted while the action was PENDING.

                    Possible enum values:

                      NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
                  • failureReason.detail string

                    A human-readable explanation of why the charging action was unsuccessful.

                Response example

                {
                  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
                  "createdAt": "2020-04-07T17:04:26Z",
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "completedAt": "2020-04-07T17:04:26Z",
                  "state": "PENDING",
                  "targetId": "string",
                  "targetType": "vehicle",
                  "targetState": {
                    "maxCurrent": 10
                  },
                  "failureReason": {
                    "type": "NO_RESPONSE",
                    "detail": "The chargeable device remained unreachable."
                  }
                }

                Response 400

                A precondition check failed that is unlikely to change within the action's timeout window. This occurs if the vehicle cannot perform the action.

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get vehicle action

                GET /vehicles/actions/{actionId}

                Returns the current state of the requested Action.

                Request

                Path parameters
                actionId string<uuid> Required

                ID of the Action.

                Response 200

                Attributes
                • id string<uuid>

                  The ID of the action.

                • userId string

                  The ID of the user that owns the target of this action.

                • createdAt string<date-time>

                  Time when this action was created

                • updatedAt string<date-time>

                  Time when this action was last updated

                • completedAt string<date-time> or null

                  Time when the action transitioned to a non-pending state.

                • state string

                  The real-time status of an action executed on a target.

                  • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
                  • CONFIRMED: Successful transition of the target to the desired state.
                  • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
                  • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

                  Possible enum values:

                    PENDINGCONFIRMEDFAILEDCANCELLED
                • targetId string

                  ID of the target which this action is controlling.

                • kind string

                  The charging action to perform

                  Possible enum values:

                    STARTSTOP
                • failureReason object or null

                  Information about why was this action not executed successfully.

                  Show child attributes
                  • failureReason.type string

                    A machine-readable high level error category.

                    • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
                    • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
                    • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
                    • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
                    • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
                    • NOT_FOUND: The chargeable was deleted while the action was PENDING.

                    Possible enum values:

                      NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
                  • failureReason.detail string

                    A human-readable explanation of why the charging action was unsuccessful.

                • targetType string

                  Possible enum values:

                    vehicle

                Response example

                {
                  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
                  "createdAt": "2020-04-07T17:04:26Z",
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "completedAt": "2020-04-07T17:04:26Z",
                  "state": "PENDING",
                  "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
                  "kind": "START",
                  "failureReason": {
                    "type": "NO_RESPONSE",
                    "detail": "The chargeable device remained unreachable."
                  },
                  "targetType": "vehicle"
                }

                Response 404

                Action not found.

                Was this section helpful?

                Cancel vehicle action

                POST /vehicles/actions/{actionId}/cancel

                Cancels a pending vehicle action, halting any further attempts by Enode to execute it.

                Note: This only updates the action's status to CANCELLED within Enode and does not reflect a change in the vendor's cloud. Thus any pending action in the vendor's cloud might still be executed.

                Request

                Path parameters
                actionId string<uuid> Required

                ID of the Action.

                Response 200

                Attributes
                • id string<uuid>

                  The ID of the action.

                • userId string

                  The ID of the user that owns the target of this action.

                • createdAt string<date-time>

                  Time when this action was created

                • updatedAt string<date-time>

                  Time when this action was last updated

                • completedAt string<date-time> or null

                  Time when the action transitioned to a non-pending state.

                • state string

                  The real-time status of an action executed on a target.

                  • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
                  • CONFIRMED: Successful transition of the target to the desired state.
                  • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
                  • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

                  Possible enum values:

                    PENDINGCONFIRMEDFAILEDCANCELLED
                • targetId string

                  ID of the target which this action is controlling.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • kind string

                  The charging action to perform

                  Possible enum values:

                    STARTSTOP
                • failureReason object or null

                  Information about why was this action not executed successfully.

                  Show child attributes
                  • failureReason.type string

                    A machine-readable high level error category.

                    • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
                    • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
                    • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
                    • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
                    • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
                    • NOT_FOUND: The chargeable was deleted while the action was PENDING.

                    Possible enum values:

                      NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
                  • failureReason.detail string

                    A human-readable explanation of why the charging action was unsuccessful.

                Response example

                {
                  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
                  "createdAt": "2020-04-07T17:04:26Z",
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "completedAt": "2020-04-07T17:04:26Z",
                  "state": "PENDING",
                  "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
                  "targetType": "vehicle",
                  "kind": "START",
                  "failureReason": {
                    "type": "NO_RESPONSE",
                    "detail": "The chargeable device remained unreachable."
                  }
                }

                Response 404

                Action not found.

                Response 409

                Action already in a resolved state.

                Attributes
                • id string<uuid>

                  The ID of the action.

                • userId string

                  The ID of the user that owns the target of this action.

                • createdAt string<date-time>

                  Time when this action was created

                • updatedAt string<date-time>

                  Time when this action was last updated

                • completedAt string<date-time> or null

                  Time when the action transitioned to a non-pending state.

                • state string

                  The real-time status of an action executed on a target.

                  • PENDING: The initial state. Enode is actively sending commands and monitoring the target for changes.
                  • CONFIRMED: Successful transition of the target to the desired state.
                  • FAILED: The target did not respond to the action before timing out. Enode has ceased sending additional commands.
                  • CANCELLED: A required precondition was not met during the action's timeout window or another action has been sent to the target, overriding this one.

                  Possible enum values:

                    PENDINGCONFIRMEDFAILEDCANCELLED
                • targetId string

                  ID of the target which this action is controlling.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • kind string

                  The charging action to perform

                  Possible enum values:

                    STARTSTOP
                • failureReason object or null

                  Information about why was this action not executed successfully.

                  Show child attributes
                  • failureReason.type string

                    A machine-readable high level error category.

                    • NO_RESPONSE: The chargeable device did not react to our charge commands within the action's timeout window.
                    • FAILED_PRECONDITION: The chargeable device did not meet all required preconditions for this action to be executed during the action's timeout window.
                    • UNNECESSARY: The action was not carried out given that the device was already in the desired state.
                    • CONFLICT: A newer action for this chargeable has been created. This action is now abandoned.
                    • REQUESTED_CANCELLATION: This action was cancelled by request of the controlling owner. The controlling owner may refer to another Enode entity which initiated the command, such as a schedule or smart override.
                    • NOT_FOUND: The chargeable was deleted while the action was PENDING.

                    Possible enum values:

                      NO_RESPONSEFAILED_PRECONDITIONCONFLICTNOT_FOUNDUNNECESSARYREQUESTED_CANCELLATION
                  • failureReason.detail string

                    A human-readable explanation of why the charging action was unsuccessful.

                Response example

                {
                  "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                  "userId": "d5bd4771-864e-4ae5-b913-dfb5cdcd5772",
                  "createdAt": "2020-04-07T17:04:26Z",
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "completedAt": "2020-04-07T17:04:26Z",
                  "state": "PENDING",
                  "targetId": "bfbccded-8a1c-45a8-bbda-dcaeef29977a",
                  "targetType": "vehicle",
                  "kind": "START",
                  "failureReason": {
                    "type": "NO_RESPONSE",
                    "detail": "The chargeable device remained unreachable."
                  }
                }
                Was this section helpful?

                Refresh vehicle data

                POST /vehicles/{vehicleId}/refresh-hint

                Use this endpoint to initiate an expedited data refresh for the specified vehicle.

                Note: The Enode platform keeps data automatically up-to-date and detects changes in the OEM APIs within seconds to a few minutes. We change the refresh interval dynamically based on a number of heuristics. This ensures we find the best trade-off between the stability of the connection to the OEM and freshness of the data.
                This method overrides most of our heuristics and should therefore be used with caution. You may use it when you have a strong reason to believe the data might be stale.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Response 204

                Refresh hint registered successfully.

                Response 404

                The specified vehicle was not found.

                Was this section helpful?

                Get smart charging plan

                GET /vehicles/{vehicleId}/smart-charging-plans/{smartChargingPlanId}

                Check status of current or historical Smart Charging Plans for a Vehicle. Returns a Smart Charging Plan for this vehicle.

                To fetch the most recently created Plan, call the endpoint with smartChargingPlanId set to latest.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                smartChargingPlanId string<uuid> Required

                ID of the Smart Charging Plan

                Possible enum values:

                  latest

                Response 200

                Attributes
                • id string

                  ID of the Smart Charging Plan

                • vehicleId string

                  ID of the Vehicle to which the Smart Charging Plan belongs

                • userId string

                  ID of the User to which the Smart Charging Plan belongs

                • locationId string<uuid> or null

                  ID of the charging location at which the Smart Charging Plan is being executed. Null for Smart Charging Plans started before March 2022.

                • vendor string

                  Vendor of the Vehicle to which the Smart Charging Plan belongs

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • currency string

                  Currency in which monetary amounts are denominated (ISO 4217 3-character Alpha code)

                • nonSmartCost number

                  Estimated cost of charging, if smart charging were not on for the vehicle

                • smartCost number or null

                  Estimated cost of charging, achieved by this Smart Charging Plan

                • stopAt string<date-time>

                  Time at which the current Smart Charging Plan will stop the vehicle's charging. The charging will be resumed when prices are optimal.

                • startAt string<date-time> or null

                  Time at which the current Smart Charging Plan will resume the vehicle's charging, when prices are optimal.

                • estimatedFinishAt string<date-time>

                  Time at which charging is estimated to be complete, due to the current Smart Charging Plan

                • stopConfirmedAt string<date-time> or null

                  During a Smart Charging Plan, the first time at which the vehicle's charging was confirmed as stopped. If a vehicle stops charging outside of smart charging's control (e.g., via a 3rd party app), this will be populated with that timestamp.

                • startConfirmedAt string<date-time> or null

                  During a Smart Charging Plan, the first time at which the vehicle's charging was confirmed as started. If a vehicle starts charging outside of smart charging's control (e.g., via a 3rd party app), this will be populated with that timestamp.

                • endedAt string<date-time> or null

                  The time at which the Smart Charging Plan ended

                • finalState string or null

                  The final state of the Smart Charging Plan when it ended

                  Possible enum values:

                    PLAN:ENDED:FINISHEDPLAN:ENDED:UNPLUGGEDPLAN:ENDED:FAILEDPLAN:ENDED:DISABLEDPLAN:ENDED:DEADLINE_CHANGED
                • failureCondition string or null

                  If the finalState was PLAN:ENDED:FAILED, failureCondition is populated with the condition in which the Smart Charging Plan failed. If the finalState was PLAN:ENDED:FINISHED, failureCondition is populated with FINISHED_LATE if the plan was more than 15% late.

                  Possible enum values:

                    STOP_FAILEDSTART_FAILEDFINISHED_LATEUNKNOWNCHARGE_INTERRUPTED
                • externalStart object or null Deprecated

                  This field populates after using Vehicle Create Smart OverrideAPI or Charger Create Smart OverrideAPI. Once populated, the target enters an overridden state, stopping Enode from sending Smart Charging actions. The Smart Override persists until the target ceases charging for any reason or is manually ended via Vehicle End Smart OverrideAPI or Charger End Smart OverrideAPI.

                  Deprecated, replaced by smartOverride from Get Vehicle Smart Charging StatusAPI

                  Show child attributes
                  • externalStart.createdAt string<date-time>

                    Time at which the smart override was created.

                  • externalStart.endedAt string<date-time> or null

                    Time at which the smart override was ended. If null, the smart override is still active.

                  • externalStart.targetType string

                    Possible enum values:

                      vehiclecharger
                  • externalStart.targetId string

                    ID of the target which this smart override is affecting.

                  • externalStart.vendorActionId string<uuid> or null

                    The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

                • chargingLocationId string<uuid> or null Deprecated

                  Deprecated. Replaced by locationId. ID of the charging location at which the Smart Charging Plan is being executed. Null for Smart Charging Plans started before March 2022.

                Response example

                {
                  "id": "53559d39-019a-443b-a2a7-a2ca29f54d4b",
                  "vehicleId": "4b5ada14-ea87-4ca1-aab9-3c979c34cf4a",
                  "userId": "3b568b76-e30a-426e-aacd-609db4d7be81",
                  "locationId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                  "vendor": "string",
                  "currency": "USD",
                  "nonSmartCost": 17.2,
                  "smartCost": 12.8,
                  "stopAt": "2020-04-07T17:04:26Z",
                  "startAt": "2020-04-07T17:04:26Z",
                  "estimatedFinishAt": "2020-04-07T17:04:26Z",
                  "stopConfirmedAt": "2020-04-07T17:04:26Z",
                  "startConfirmedAt": "2020-04-07T17:04:26Z",
                  "endedAt": "2020-04-07T17:04:26Z",
                  "finalState": "PLAN:ENDED:FINISHED",
                  "failureCondition": "CHARGE_INTERRUPTED",
                  "externalStart": {
                    "createdAt": "2020-04-07T17:04:26Z",
                    "endedAt": "2020-04-07T17:04:26Z",
                    "targetType": "vehicle",
                    "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                    "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f"
                  },
                  "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                }
                Was this section helpful?

                Get vehicle smart charging policy

                GET /vehicles/{vehicleId}/smart-charging-policy

                Get a vehicle's Smart Charging policy

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Response 200

                Attributes
                • isEnabled boolean

                  When enabled, this vehicle's charging status may be controlled by Smart Charging

                  Default value: false

                • deadline string

                  The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                • minimumChargeLimit number

                  Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                  Default value: 0

                Response example

                {
                  "isEnabled": false,
                  "deadline": "07:00",
                  "minimumChargeLimit": 0
                }
                Was this section helpful?

                Update vehicle smart charging policy

                PUT /vehicles/{vehicleId}/smart-charging-policy

                Updates the Smart Charging policy for a vehicle

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Attributes
                • isEnabled boolean Optional

                  When enabled, this vehicle's charging status may be controlled by Smart Charging

                  Default value: false

                • deadline string Optional

                  The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                • minimumChargeLimit number Optional

                  Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                  Default value: 0

                Response 200

                Attributes
                • isEnabled boolean

                  When enabled, this vehicle's charging status may be controlled by Smart Charging

                  Default value: false

                • deadline string

                  The hour-minute deadline for fully charging the vehicle. Smart charging does not work without setting a deadline. If a timezone is set on the charging location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                • minimumChargeLimit number

                  Proceed to charge promptly, disregarding energy prices, until the vehicle achieves this preset minimum limit. Please note that this limit cannot exceed the vehicle's maximum charge limit. The default setting is zero. The unit of measure is percentage.

                  Default value: 0

                Response example

                {
                  "isEnabled": false,
                  "deadline": "07:00",
                  "minimumChargeLimit": 0
                }
                Was this section helpful?

                Create smart override

                POST /vehicles/{vehicleId}/smart-override

                Overrides an active smart feature by forcing the vehicle to start charging. This feature is meant to be used in situations where the user wants to charge immediately without disabling other smart features. The override remains active until the vehicle stops charging, or until End Smart OverrideAPI is called. When the override ends, the overriden smart feature will regain control of the vehicle. This endpoint should not be used for standard charge control, use Control ChargingAPI instead.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Response 200

                Attributes
                • createdAt string<date-time>

                  Time at which the smart override was created.

                • endedAt string<date-time> or null

                  Time at which the smart override was ended. If null, the smart override is still active.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • targetId string

                  ID of the target which this smart override is affecting.

                • vendorActionId string<uuid> or null

                  The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

                • userId string

                  ID of the User

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXOHMEGAROENPHASEHUAWEI

                Response example

                {
                  "createdAt": "2020-04-07T17:04:26Z",
                  "endedAt": "2020-04-07T17:04:26Z",
                  "targetType": "vehicle",
                  "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                  "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f",
                  "userId": "0bec82e0-0d54-4f2f-83b1-5b248604de0b",
                  "vendor": "TESLA"
                }
                Was this section helpful?

                End smart override

                DELETE /vehicles/{vehicleId}/smart-override

                Ends any active Smart Override for the vehicle specified by vehicleId. If previously configured, Schedules or Smart Charging will resume control over the target vehicle. Note that this does not mean the vehicle will stop charging, only that it will return to the state expected by the active Schedule or Smart Charging Plan.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Response 200

                Attributes
                • createdAt string<date-time>

                  Time at which the smart override was created.

                • endedAt string<date-time> or null

                  Time at which the smart override was ended. If null, the smart override is still active.

                • targetType string

                  Possible enum values:

                    vehiclecharger
                • targetId string

                  ID of the target which this smart override is affecting.

                • vendorActionId string<uuid> or null

                  The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

                • userId string

                  ID of the User

                • vendor string

                  Machine-friendly name of the vendor. Use this in API requests.

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOEFRONIUSCHARGEPOINTENELXOHMEGAROENPHASEHUAWEI

                Response example

                {
                  "createdAt": "2020-04-07T17:04:26Z",
                  "endedAt": "2020-04-07T17:04:26Z",
                  "targetType": "vehicle",
                  "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                  "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f",
                  "userId": "0bec82e0-0d54-4f2f-83b1-5b248604de0b",
                  "vendor": "TESLA"
                }

                Response 404

                No Smart Override Exists

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/im-a-teapot",
                  "title": "I'm a teapot",
                  "detail": "The requested entity body is short and stout."
                }
                Was this section helpful?

                Get vehicle smart charging status

                GET /vehicles/{vehicleId}/smart-charging-status

                Every vehicle in Enode has a Smart Charging Status that describes the vehicle in terms of smart charging.

                Request

                Path parameters
                vehicleId string Required

                ID of the Vehicle.

                Response 200

                Attributes
                • updatedAt string<date-time>

                  Time when the Smart Charging Status was recalculated, irrespective of whether or not any values changed

                • vehicleId string

                  ID of the vehicle to which this Smart Charging Status represents

                • userId string

                  ID of the user that owns this vehicle

                • vendor string

                  Vendor of the Vehicle

                  Possible enum values:

                    AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                • state string

                  An enum value that describes the current SmartCharging state of the vehicle. Every vehicle is in exactly one state, at all times

                  Possible enum values:

                    DISABLEDCONSIDERINGUNKNOWNPLAN:EXECUTING:STOPPINGPLAN:EXECUTING:STOP_FAILEDPLAN:EXECUTING:STOPPEDPLAN:EXECUTING:STOPPED:AWAITING_PRICESPLAN:EXECUTING:STARTINGPLAN:EXECUTING:START_FAILEDPLAN:EXECUTING:STARTEDPLAN:EXECUTING:CHARGE_INTERRUPTEDPLAN:EXECUTING:OVERRIDDENPLAN:ENDED:FINISHEDPLAN:ENDED:UNPLUGGEDPLAN:ENDED:FAILEDPLAN:ENDED:DISABLEDPLAN:ENDED:DEADLINE_CHANGED
                • stateChangedAt string<date-time>

                  Time when the state property transitioned to its current value

                • consideration object or null

                  null by default, but during the CONSIDERING state, the value is populated with a list of all the requirements that must be true before a plan will be created

                  Show child attributes
                  • consideration.isSmartChargeCapable boolean Deprecated

                    Vehicle has the capability 'smartCharging'

                  • consideration.isPluggedIn boolean

                    The vehicle is plugged in

                  • consideration.isCharging boolean

                    The vehicle is charging

                  • consideration.recentlyAtChargingLocation boolean Deprecated

                    The vehicle is located at a configured Charging Location. Renamed to atChargingLocation in version 2023-04-01

                  • consideration.hasTimeEstimate boolean

                    A good estimate is available of how much time it will take to charge.

                  • consideration.singleUser boolean Deprecated

                    Only one user has this vehicle actively connected to Enode. Nearly always true in real use cases, but can be an issue for vehicles used in testing/development/integration.

                  • consideration.needsSignificantCharge boolean Deprecated
                  • consideration.hasChargeAboveThreshold boolean Deprecated
                  • consideration.wontStopExistingChargingSession boolean Deprecated
                  • consideration.likelyToGenerateSavings boolean Deprecated
                • plan object or null

                  null by default, but during all of the PLAN:* states, the value is populated with a description of the active plan

                  Show child attributes
                  • plan.id string

                    ID of the Smart Charging Plan

                  • plan.vehicleId string

                    ID of the Vehicle to which the Smart Charging Plan belongs

                  • plan.userId string

                    ID of the User to which the Smart Charging Plan belongs

                  • plan.locationId string<uuid> or null

                    ID of the charging location at which the Smart Charging Plan is being executed. Null for Smart Charging Plans started before March 2022.

                  • plan.vendor string

                    Vendor of the Vehicle to which the Smart Charging Plan belongs

                    Possible enum values:

                      AUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENG
                  • plan.currency string

                    Currency in which monetary amounts are denominated (ISO 4217 3-character Alpha code)

                  • plan.nonSmartCost number

                    Estimated cost of charging, if smart charging were not on for the vehicle

                  • plan.smartCost number or null

                    Estimated cost of charging, achieved by this Smart Charging Plan

                  • plan.stopAt string<date-time>

                    Time at which the current Smart Charging Plan will stop the vehicle's charging. The charging will be resumed when prices are optimal.

                  • plan.startAt string<date-time> or null

                    Time at which the current Smart Charging Plan will resume the vehicle's charging, when prices are optimal.

                  • plan.estimatedFinishAt string<date-time>

                    Time at which charging is estimated to be complete, due to the current Smart Charging Plan

                  • plan.stopConfirmedAt string<date-time> or null

                    During a Smart Charging Plan, the first time at which the vehicle's charging was confirmed as stopped. If a vehicle stops charging outside of smart charging's control (e.g., via a 3rd party app), this will be populated with that timestamp.

                  • plan.startConfirmedAt string<date-time> or null

                    During a Smart Charging Plan, the first time at which the vehicle's charging was confirmed as started. If a vehicle starts charging outside of smart charging's control (e.g., via a 3rd party app), this will be populated with that timestamp.

                  • plan.endedAt string<date-time> or null

                    The time at which the Smart Charging Plan ended

                  • plan.finalState string or null

                    The final state of the Smart Charging Plan when it ended

                    Possible enum values:

                      PLAN:ENDED:FINISHEDPLAN:ENDED:UNPLUGGEDPLAN:ENDED:FAILEDPLAN:ENDED:DISABLEDPLAN:ENDED:DEADLINE_CHANGED
                  • plan.failureCondition string or null

                    If the finalState was PLAN:ENDED:FAILED, failureCondition is populated with the condition in which the Smart Charging Plan failed. If the finalState was PLAN:ENDED:FINISHED, failureCondition is populated with FINISHED_LATE if the plan was more than 15% late.

                    Possible enum values:

                      STOP_FAILEDSTART_FAILEDFINISHED_LATEUNKNOWNCHARGE_INTERRUPTED
                  • plan.externalStart object or null Deprecated

                    This field populates after using Vehicle Create Smart OverrideAPI or Charger Create Smart OverrideAPI. Once populated, the target enters an overridden state, stopping Enode from sending Smart Charging actions. The Smart Override persists until the target ceases charging for any reason or is manually ended via Vehicle End Smart OverrideAPI or Charger End Smart OverrideAPI.

                    Deprecated, replaced by smartOverride from Get Vehicle Smart Charging StatusAPI

                    Show child attributes
                    • plan.externalStart.createdAt string<date-time>

                      Time at which the smart override was created.

                    • plan.externalStart.endedAt string<date-time> or null

                      Time at which the smart override was ended. If null, the smart override is still active.

                    • plan.externalStart.targetType string

                      Possible enum values:

                        vehiclecharger
                    • plan.externalStart.targetId string

                      ID of the target which this smart override is affecting.

                    • plan.externalStart.vendorActionId string<uuid> or null

                      The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

                  • plan.chargingLocationId string<uuid> or null Deprecated

                    Deprecated. Replaced by locationId. ID of the charging location at which the Smart Charging Plan is being executed. Null for Smart Charging Plans started before March 2022.

                • smartOverride object or null

                  This field populates after using Vehicle Create Smart OverrideAPI or Charger Create Smart OverrideAPI. Once populated, the target enters an overridden state, stopping Enode from sending Smart Charging actions. The Smart Override persists until the target ceases charging for any reason or is manually ended via Vehicle End Smart OverrideAPI or Charger End Smart OverrideAPI.

                  Show child attributes
                  • smartOverride.createdAt string<date-time>

                    Time at which the smart override was created.

                  • smartOverride.endedAt string<date-time> or null

                    Time at which the smart override was ended. If null, the smart override is still active.

                  • smartOverride.targetType string

                    Possible enum values:

                      vehiclecharger
                  • smartOverride.targetId string

                    ID of the target which this smart override is affecting.

                  • smartOverride.vendorActionId string<uuid> or null

                    The ID of the Action responsible for starting charging on the target. Use the Get Vehicle ActionAPI or the Get Charger ActionAPI endpoints to monitor action results.

                Response example

                {
                  "updatedAt": "2020-04-07T17:04:26Z",
                  "vehicleId": "4b5ada14-ea87-4ca1-aab9-3c979c34cf4a",
                  "userId": "3b568b76-e30a-426e-aacd-609db4d7be81",
                  "vendor": "string",
                  "state": "DISABLED",
                  "stateChangedAt": "2020-04-07T17:04:26Z",
                  "consideration": {
                    "isSmartChargeCapable": true,
                    "isPluggedIn": true,
                    "isCharging": true,
                    "recentlyAtChargingLocation": true,
                    "hasTimeEstimate": true,
                    "singleUser": true,
                    "needsSignificantCharge": true,
                    "hasChargeAboveThreshold": true,
                    "wontStopExistingChargingSession": true,
                    "likelyToGenerateSavings": true
                  },
                  "plan": {
                    "id": "53559d39-019a-443b-a2a7-a2ca29f54d4b",
                    "vehicleId": "4b5ada14-ea87-4ca1-aab9-3c979c34cf4a",
                    "userId": "3b568b76-e30a-426e-aacd-609db4d7be81",
                    "locationId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                    "vendor": "string",
                    "currency": "USD",
                    "nonSmartCost": 17.2,
                    "smartCost": 12.8,
                    "stopAt": "2020-04-07T17:04:26Z",
                    "startAt": "2020-04-07T17:04:26Z",
                    "estimatedFinishAt": "2020-04-07T17:04:26Z",
                    "stopConfirmedAt": "2020-04-07T17:04:26Z",
                    "startConfirmedAt": "2020-04-07T17:04:26Z",
                    "endedAt": "2020-04-07T17:04:26Z",
                    "finalState": "PLAN:ENDED:FINISHED",
                    "failureCondition": "CHARGE_INTERRUPTED",
                    "externalStart": {
                      "createdAt": "2020-04-07T17:04:26Z",
                      "endedAt": "2020-04-07T17:04:26Z",
                      "targetType": "vehicle",
                      "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                      "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f"
                    },
                    "chargingLocationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                  },
                  "smartOverride": {
                    "createdAt": "2020-04-07T17:04:26Z",
                    "endedAt": "2020-04-07T17:04:26Z",
                    "targetType": "vehicle",
                    "targetId": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3",
                    "vendorActionId": "213ae0a8-fb65-40be-981a-6a86df3e1c7f"
                  }
                }
                Was this section helpful?

                Webhooks

                Webhooks are a mechanism that allows your server to receive notifications of events from the Enode system.

                See the related guide for more information about timeouts, failures, and retry logic: Using Webhooks

                Update firehose webhookDeprecated

                PUT /webhooks/firehose

                Request

                Attributes
                • secret string Required

                  A cryptographically secure secret, generated and provided by your client. Refer to Generating a secret for details on how to do this.

                • url string Required

                  The HTTPS URL where webhook payloads should be sent to.

                Response 204

                No Content

                Was this section helpful?

                Delete firehose webhookDeprecated

                DELETE /webhooks/firehose

                Request

                Attributes
                • url string Required

                  The HTTPS url of the webhook to be deleted

                Response 204

                No Content

                Response 404

                Webhook not found

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/not-found",
                  "title": "Webhook not found",
                  "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                }
                Was this section helpful?

                Test firehose webhookDeprecated

                POST /webhooks/firehose/test

                Trigger a enode:firehose:test payload to be sent to your configured Webhook URL. This will reset your webhook to a healthy state on success.

                Response 200

                Attributes
                • status string

                  Indicates if the test webhook event was delivered successfully to your configured webhook endpoint.

                  Possible enum values:

                    SUCCESSFAILURE
                • description string

                  Human readable description of the test outcome.

                • response object or null

                  Null if status is FAILED.

                  Show child attributes
                  • response.code number

                    Status code returned by your configured webhook endpoint

                  • response.body string

                    Body returned by your configured webhook endpoint

                  • response.headers array or null

                    Headers returned by your configured webhook endpoint

                Response example

                {
                  "status": "SUCCESS",
                  "description": "string",
                  "response": {
                    "code": 200,
                    "body": "{}",
                    "headers": [
                      "content-type: application/json; } charset=utf-8"
                    ]
                  }
                }
                Was this section helpful?

                Create webhook

                POST /webhooks

                Create a webhook.

                Request

                Attributes
                • url string Required

                  The HTTPS URL that webhook payloads should be sent to.

                • secret string Required

                  A cryptographically secure secret, generated and provided by your client. Refer to Generating a secret for details on how to do this.

                • events array of string Optional

                  The events which will trigger the webhook. Available events: *, user:vehicle:discovered, user:vehicle:updated, user:vehicle:deleted, user:vehicle:smart-charging-status-updated, user:charge-action:updated, user:vendor-action:updated, user:schedule:execution-updated, user:charger:discovered, user:charger:updated, user:charger:deleted, user:hvac:discovered, user:hvac:updated, user:hvac:deleted, user:inverter:discovered, user:inverter:updated, user:inverter:deleted, user:credentials:invalidated, user:battery:discovered, user:battery:updated, user:battery:deleted, enode:webhook:test, user:meter:discovered, user:meter:updated, user:meter:deleted

                  Default value: ["*"]

                • apiVersion string or null Optional

                  If provided, webhook payloads will be generated for this version. If not provided or null, the default API version of the client will be used when generating webhook payloads. Valid versions: 2024-01-01, 2023-08-01, 2023-05-01, 2023-04-15, 2023-04-01, 2023-03-01, 2023-02-01

                • authentication object Optional

                  If provided, the authentication header will be sent with each webhook request.

                  Show child attributes
                  • authentication.headerName string Required

                    Authentication header name.

                  • authentication.headerValue string Required

                    Authentication header value.

                Response 200

                Attributes
                • id string

                  Unique identifier for the webhook.

                • url string

                  The HTTPS URL that webhook payloads should be sent to.

                • events array of string

                  The events which will trigger the webhook.

                  Default value: ["*"]

                • lastSuccess string

                  Time when a delivery to this webhook was last successful.

                • isActive boolean

                  Indicates whether the webhook is active or not.

                • createdAt string

                  Time when the webhook was created.

                • apiVersion string or null

                  API version of the payload. If null, the default API version of the client will be used when generating webhook payloads.

                • authentication object or null
                  Show child attributes
                  • authentication.headerName string

                Response example

                {
                  "id": "1de1as-dsa12wed-15sa",
                  "url": "https://example.com/enode-webhooks/firehose",
                  "events": [
                    "user:vehicle:discovered",
                    "user:vehicle:updated",
                    "user:vehicle:deleted"
                  ],
                  "lastSuccess": "14-08-2023T13:01:00.000Z",
                  "isActive": true,
                  "createdAt": "14-08-2023T13:01:00.000Z",
                  "apiVersion": "2023-08-01",
                  "authentication": {
                    "headerName": "string"
                  }
                }

                Response 400

                Webhook already exists.

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/bad-request",
                  "title": "Webhook already exists.",
                  "detail": "A webhook with the specified URL and API version already exists."
                }
                Was this section helpful?

                List webhooks

                GET /webhooks

                Returns a paginated list of webhooks.

                Request

                Query parameters
                after string Optional
                before string Optional
                pageSize integer Optional

                Default value: 50

                Response 200

                Attributes
                • data array of object

                  Paginated list of webhooks.

                  Show child attributes
                  • data[].id string

                    Unique identifier for the webhook.

                  • data[].url string

                    The HTTPS URL that webhook payloads should be sent to.

                  • data[].events array of string

                    The events which will trigger the webhook.

                    Default value: ["*"]

                  • data[].lastSuccess string

                    Time when a delivery to this webhook was last successful.

                  • data[].isActive boolean

                    Indicates whether the webhook is active or not.

                  • data[].createdAt string

                    Time when the webhook was created.

                  • data[].apiVersion string or null

                    API version of the payload. If null, the default API version of the client will be used when generating webhook payloads.

                  • data[].authentication object or null
                    Show child attributes
                    • data[].authentication.headerName string
                • pagination object

                  Cursors to the pages before and after current page. See the PaginationAPI section for reference.

                  Show child attributes
                  • pagination.after string or null
                  • pagination.before string or null

                Response example

                {
                  "data": [
                    {
                      "id": "1de1as-dsa12wed-15sa",
                      "url": "https://example.com/enode-webhooks/firehose",
                      "events": [
                        "user:vehicle:discovered",
                        "user:vehicle:updated",
                        "user:vehicle:deleted"
                      ],
                      "lastSuccess": "14-08-2023T13:01:00.000Z",
                      "isActive": true,
                      "createdAt": "14-08-2023T13:01:00.000Z",
                      "apiVersion": "2023-08-01",
                      "authentication": {
                        "headerName": "string"
                      }
                    }
                  ],
                  "pagination": {
                    "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                    "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                  }
                }
                Was this section helpful?

                Update webhook

                PATCH /webhooks/{webhookId}

                Update a webhook.

                Request

                Path parameters
                webhookId string<uuid> Required

                ID of the Webhook.

                Attributes
                • url string Optional

                  The HTTPS URL that webhook payloads should be sent to.

                • secret string Optional

                  A cryptographically secure secret, generated and provided by your client. Refer to Generating a secret for details on how to do this.

                • events array of string Optional

                  The events which will trigger the webhook. Available events: *, user:vehicle:discovered, user:vehicle:updated, user:vehicle:deleted, user:vehicle:smart-charging-status-updated, user:charge-action:updated, user:vendor-action:updated, user:schedule:execution-updated, user:charger:discovered, user:charger:updated, user:charger:deleted, user:hvac:discovered, user:hvac:updated, user:hvac:deleted, user:inverter:discovered, user:inverter:updated, user:inverter:deleted, user:credentials:invalidated, user:battery:discovered, user:battery:updated, user:battery:deleted, enode:webhook:test, user:meter:discovered, user:meter:updated, user:meter:deleted

                  Default value: ["*"]

                • apiVersion string or null Optional

                  If provided, webhook payloads will be generated for this version. If not provided or null, the default API version of the client will be used when generating webhook payloads. Valid versions: 2024-01-01, 2023-08-01, 2023-05-01, 2023-04-15, 2023-04-01, 2023-03-01, 2023-02-01

                • authentication object or null Optional

                  If provided, the authentication header will be sent with each webhook request.

                  Show child attributes
                  • authentication.headerName string Required

                    Authentication header name.

                  • authentication.headerValue string Required

                    Authentication header value.

                Response 200

                Attributes
                • id string

                  Unique identifier for the webhook.

                • url string

                  The HTTPS URL that webhook payloads should be sent to.

                • events array of string

                  The events which will trigger the webhook.

                  Default value: ["*"]

                • lastSuccess string

                  Time when a delivery to this webhook was last successful.

                • isActive boolean

                  Indicates whether the webhook is active or not.

                • createdAt string

                  Time when the webhook was created.

                • apiVersion string or null

                  API version of the payload. If null, the default API version of the client will be used when generating webhook payloads.

                • authentication object or null
                  Show child attributes
                  • authentication.headerName string

                Response example

                {
                  "id": "1de1as-dsa12wed-15sa",
                  "url": "https://example.com/enode-webhooks/firehose",
                  "events": [
                    "user:vehicle:discovered",
                    "user:vehicle:updated",
                    "user:vehicle:deleted"
                  ],
                  "lastSuccess": "14-08-2023T13:01:00.000Z",
                  "isActive": true,
                  "createdAt": "14-08-2023T13:01:00.000Z",
                  "apiVersion": "2023-08-01",
                  "authentication": {
                    "headerName": "string"
                  }
                }

                Response 404

                Webhook not found or already deleted

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/not-found",
                  "title": "Webhook not found",
                  "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                }
                Was this section helpful?

                Get webhook

                GET /webhooks/{webhookId}

                Returns webhook with the given ID, if it exists.

                Request

                Path parameters
                webhookId string<uuid> Required

                ID of the Webhook.

                Response 200

                Attributes
                • id string

                  Unique identifier for the webhook.

                • url string

                  The HTTPS URL that webhook payloads should be sent to.

                • events array of string

                  The events which will trigger the webhook.

                  Default value: ["*"]

                • lastSuccess string

                  Time when a delivery to this webhook was last successful.

                • isActive boolean

                  Indicates whether the webhook is active or not.

                • createdAt string

                  Time when the webhook was created.

                • apiVersion string or null

                  API version of the payload. If null, the default API version of the client will be used when generating webhook payloads.

                • authentication object or null
                  Show child attributes
                  • authentication.headerName string

                Response example

                {
                  "id": "1de1as-dsa12wed-15sa",
                  "url": "https://example.com/enode-webhooks/firehose",
                  "events": [
                    "user:vehicle:discovered",
                    "user:vehicle:updated",
                    "user:vehicle:deleted"
                  ],
                  "lastSuccess": "14-08-2023T13:01:00.000Z",
                  "isActive": true,
                  "createdAt": "14-08-2023T13:01:00.000Z",
                  "apiVersion": "2023-08-01",
                  "authentication": {
                    "headerName": "string"
                  }
                }

                Response 404

                Webhook not found or already deleted

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/not-found",
                  "title": "Webhook not found",
                  "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                }
                Was this section helpful?

                Delete webhook

                DELETE /webhooks/{webhookId}

                Deletes webhook with the given ID, if it exists.

                Request

                Path parameters
                webhookId string<uuid> Required

                ID of the Webhook.

                Response 204

                Successfully deleted

                Response 404

                Webhook not found or already deleted

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/not-found",
                  "title": "Webhook not found",
                  "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                }
                Was this section helpful?

                Test webhook

                POST /webhooks/{webhookId}/test

                Send a enode:webhook:test payload to the webhook. If the webhook is inactive, it'll be reactivated on success.

                Request

                Path parameters
                webhookId string<uuid> Required

                ID of the Webhook.

                Response 200

                Attributes
                • status string

                  Indicates if the test webhook event was delivered successfully to your configured webhook endpoint.

                  Possible enum values:

                    SUCCESSFAILURE
                • description string

                  Human readable description of the test outcome.

                • response object or null

                  Null if status is FAILED.

                  Show child attributes
                  • response.code number

                    Status code returned by your configured webhook endpoint

                  • response.body string

                    Body returned by your configured webhook endpoint

                  • response.headers array or null

                    Headers returned by your configured webhook endpoint

                Response example

                {
                  "status": "SUCCESS",
                  "description": "string",
                  "response": {
                    "code": 200,
                    "body": "{}",
                    "headers": [
                      "content-type: application/json; } charset=utf-8"
                    ]
                  }
                }

                Response 404

                Webhook not found or already deleted

                Attributes
                • type string

                  A URI reference that identifies the problem type.

                • title string

                  A short, human-readable summary of the problem type.

                • detail string

                  A human-readable explanation specific to this occurrence of the problem.

                Response example

                {
                  "type": "https://docs.enode.io/problems/not-found",
                  "title": "Webhook not found",
                  "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                }
                Was this section helpful?