Enode Developers
Latest version

Enode API 2024-10-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 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 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 client-wide endpointsAPI and user-specific endpointsAPI.

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" \

Copy linkAccessing user-specific endpoints

For resources specific to a user, include an additional header with the user ID along with the general authorization header. For versions newer than 2023-08-01, this is no longer required.

Use this additional header for general user endpoints (locationsAPI, usersAPI, schedulesAPI, statisticsAPI) and device-specific endpoints (chargersAPI, HVACsAPI, solar invertersAPI, and vehiclesAPI).

Type Value
HeaderEnode-User-Id: {USER_ID}

User resource request example

curl https://enode-api.{YOUR_CLIENT_ENVIRONMENT}.enode.io/me \
-X GET \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
-H "Enode-User-Id: {USER_ID}" \

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 typically involve polling and dynamically adjust the polling rate based on various factors to balance prompt updates with avoiding unnecessary load on the vehicle.

The maximum baseline delay between a real-world change (e.g., a vehicle being plugged in) and the resulting webhook notification is typically 7 minutes. However, actual delays can vary depending on factors such as vehicle activity and network conditions. Below is a general guide for typical webhook delays:

Vehicle contextTypical delay
default~7 minutes
charging~2-5 minutes
smartcharge PLAN:*~2 minutes
sleeping~20 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.

Scopes

Access to the data and controls of a device are scoped by an inclusive scopes structure. The scopes are requested in the Link user endpoint via the scopes parameter. Scopes are presented to your user in Link UI, and explained through example data and examples of features enabled by each scope. Your user is not able to de-select or configure scopes themselves in Link UI.

  • Data scopes include all data and states we fetch from the device, excluding location data, and is always required (e.g vehicle:read:data)
  • Location scopes include the location coordinates of the device (e.g. vehicle:read:location)
  • Control scopes are always explicit to the type of control that is requested (e.g. vehicle:control:charging)

The applied scopes are surfaced through the scopes object in device responses (see example below).

Copy linkOverview of scopes

Asset type Scope Description
Batterybattery:control:operation_modeControls the operation mode of the battery
battery:read:locationReads the GPS coordinates of the battery
battery:read:dataReads the battery data, such as the charge state, configuration and general information
Chargercharger:control:chargingControls the max current configuration and/or charging of the charger
charger:read:dataReads the charger data, such as the charge state and general information
HVAChvac:control:modeControls the mode (permanent hold or follow schedule) of the HVAC unit
hvac:read:dataReads the HVAC data, such as the information, thermostat state and temperature state
Inverterinverter:read:dataReads the inverter data, such as the production state and general information
inverter:read:locationReads the GPS coordinates of the inverter
Metermeter:read:locationReads the GPS coordinates of the meter
meter:read:dataReads the meter data, such as energy state and general information
Vehiclevehicle:control:chargingControls the charging of the vehicle
vehicle:read:dataReads the vehicle data, such as charge state, odometer and general information
vehicle:read:locationReads the GPS coordinates of the vehicle

Copy linkHandling excluded scopes

Copy linkThe relationship between scopes and capabilities

If a device is missing a scope, e.g. a charger that does not have the charger:control:charging scope set, will always have the charging related capabilities will always be set as isCapable: false with no intervention specified.

Example charger response

{
  "id": "2211e263-0362-4235-83f4-887bdf3ee414",
  "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
  "vendor": "ZAPTEC",
  "lastSeen": "2023-03-21T21:08:27.596Z",
  "isReachable": true,
  "locationId": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
  "scopes": ["charger:read:data"], // Scopes applied to the device
  "chargeState": { ... },
  "information": { ... },
  "capabilities": {
    "information": {
      "isCapable": true, // Capable via the charger:read:data scope
      "interventionIds": []
    },
    "chargeState": {
      "isCapable": true, // Capable via the charger:read:data scope
      "interventionIds": []
    },
    "startCharging": {
      "isCapable": false, // Missing charger:control:charging scope
      "interventionIds": []
    },
    "stopCharging": {
      "isCapable": false, // Missing charger:control:charging scope
      "interventionIds": []
    },
    "setMaxCurrent": {
      "isCapable": false, // Missing charger:control:charging scope
      "interventionIds": []
    }
  }
}

Copy linkResponses when the location scope is excluded

Devices with a missing location scopes will respond with longitude: null and latitude: null as part of their location object.

Copy linkResponses when a control scopes is excluded

Devices with missing control scopes will respond with a 403 error, and the action or command will not go through to the device.

Copy linkApplying new scopes to a device

To set new scopes for a device, it needs to be re-linked via the Link userAPI endpoint by setting new scope values in the scopes parameter.

Errors and problems

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://developers.enode.com/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

All other additive changes are considered backwards compatible.

Copy linkVersion Lifecycle

Current

  • This is the latest API version, recommended for all customers.
  • It is the default version for new clients and the default version documented in our API Reference.
  • There is only ever one Current API version.

Deprecated

  • This version has been superseded by a newer version. Multiple Deprecated versions can exist.
  • Customers can still choose this version for new clients or webhook subscriptions at developers.enode.com.
  • Documentation will be marked as Deprecated.
  • New functionality may not be released to Deprecated versions and supported exclusively on the Current API version.
  • We recommend you to upgrade to the Current version as soon as possible.

Legacy

  • This version has been deprecated for 6 months. Multiple Legacy versions can exist.
  • Customers cannot select this version for new clients or webhook subscriptions.
  • Documentation will not be accessible from the API Reference. You can review Legacy documentation by logging in to your organization dashboard and selecting a client with a Legacy version.
  • Functionality may be degraded, and no new features will be added.
  • 4 weeks after entering Legacy status, we will begin preparations for automatically upgrading clients on this version. Enode will conduct API brownouts for clients still using Legacy versions at this time. During these brownouts, we will randomly reject API requests using the Legacy API version.
  • 8 weeks after entering Legacy status, clients using this version will be automatically upgraded to the Current API version.

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.

Copy linkDeprecated

Individual features, endpoints, or fields tagged as Deprecated will be removed in a future version of the API. If you are using deprecated functionality you should update your application to use alternative features or methods we provide.

Pagination

Enode endpoints returning collections of a specific type of resource, such as GET /vehicles, will return a paginated response. Each response will consist of a subset of the resources, called a page. To retrieve the entire collection, subsequent pages need to be fetched.

Each response includes two properties: data and pagination. The data property contains the records of the current page and the pagination property contains cursors that can be used to fetch additional pages. These cursors, before and after, are unique identifiers for specific records in the dataset that help you keep track of your position and navigate through the pages.

Copy linkQuerying a paginated API endpoint

When querying a paginated endpoint, you may provide the following pagination query parameters:

Pagination query parameter example

{
  "pageSize": 50,
  "before": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
  "after": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
}

All of these pagination query parameters are optional. If pageSize is not provided, the default page size of 50 is used. If neither before nor after are provided, the returned page will contain the first set of resources in the collection.

The before and after parameters are mutually exclusive. If both are supplied, the API will return an error.

Responses from most paginated endpoints are sorted in descending order according to when the resource was created. Hence, for a request like GET /vehicles, the most recently linked vehicles appear on the first page.

Copy linkHow to navigate through paginated API responses

The pagination property in a paginated response typically looks like this:

Pagination property example

"pagination": {
  "before": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
  "after": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
}

The pagination property provides the cursors required to fetch the next and previous pages of resources:

  • before contains the cursor to be used to fetch the previous page.
  • after contains the cursor to be used to fetch the next page.

One or both cursors may be null instead of a string. This occurs when:

  • You are on the first page. There are no preceding resources, so before will now be null as otherwise it would point to an empty page.
  • You are on the last page. There are no subsequent resources, so after will now be null as otherwise it would point to an empty page.
  • The entire collection fits on the first page. There are no preceding or subsequent resources, so both before and after are null.

Copy linkFull example response

Example paginated response

{
    "data": [
        {
            "id": "0",
            "vendor": "TESLA",
            ...
            "isReachable": true
        },
        ...
        {
            "id": "49",
            "vendor": "TESLA",
            ...
            "isReachable": true
        }
    ],
    "pagination": {
        "before": null,
        "after": "MjAyMy0wNy0xOFQxMDowNDowMi4zNzNa"
    }
}

In this example, the data array includes the resource records for the current page. The pagination object provides the cursors for navigating to adjacent pages.

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

Request example

curl --request GET \
  --url 'https://enode-api.production.enode.io/batteries?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

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:

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

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

    • data[].isReachable boolean

      Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

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

        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
        • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

        Possible enum values:

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

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

        Possible enum values:

          TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
      • 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[].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.

    • data[].location object

      Battery's GPS coordinates

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

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

      • data[].location.longitude number or null

        Longitude in degrees

      • data[].location.latitude number or null

        Latitude in degrees

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

        Time of last received location state update

  • 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",
      "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": "Tesla",
        "model": "Powerwall",
        "siteName": "Powerwall Home",
        "installationDate": "2020-04-07T17:04:26Z"
      },
      "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": [
        "battery:control:operation_mode",
        "battery:read:data",
        "battery:read:location"
      ],
      "location": {
        "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
        "longitude": 10.7197486,
        "latitude": 59.9173985,
        "lastUpdated": "2020-04-07T17:04:26Z"
      }
    }
  ],
  "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

ID of the User.

Query parameters
after string Optional
before string Optional
pageSize integer Optional

Default value: 50

Request example

curl --request GET \
  --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/batteries?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

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:

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

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

    • data[].isReachable boolean

      Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

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

        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
        • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

        Possible enum values:

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

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

        Possible enum values:

          TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
      • 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[].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.

    • data[].location object

      Battery's GPS coordinates

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

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

      • data[].location.longitude number or null

        Longitude in degrees

      • data[].location.latitude number or null

        Latitude in degrees

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

        Time of last received location state update

  • 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",
      "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": "Tesla",
        "model": "Powerwall",
        "siteName": "Powerwall Home",
        "installationDate": "2020-04-07T17:04:26Z"
      },
      "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": [
        "battery:control:operation_mode",
        "battery:read:data",
        "battery:read:location"
      ],
      "location": {
        "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
        "longitude": 10.7197486,
        "latitude": 59.9173985,
        "lastUpdated": "2020-04-07T17:04:26Z"
      }
    }
  ],
  "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.

Request example

curl --request GET \
  --url https://enode-api.production.enode.io/batteries/54d827e1-8355-4fed-97b5-55940d1d09ba

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:

      TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMA
  • lastSeen string<date-time>

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

  • isReachable boolean

    Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

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

      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
      • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
      • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

      Possible enum values:

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

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

      Possible enum values:

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

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

  • location object

    Battery's GPS coordinates

    Show child attributes
    • location.id string<uuid> or null

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

    • 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 state update

Response example

{
  "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
  "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
  "vendor": "TESLA",
  "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": "Tesla",
    "model": "Powerwall",
    "siteName": "Powerwall Home",
    "installationDate": "2020-04-07T17:04:26Z"
  },
  "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": [
    "battery:control:operation_mode",
    "battery:read:data",
    "battery:read:location"
  ],
  "location": {
    "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
    "longitude": 10.7197486,
    "latitude": 59.9173985,
    "lastUpdated": "2020-04-07T17:04:26Z"
  }
}
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.

    • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
    • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
    • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
    • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.

    Possible enum values:

      IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCE

Request example

curl --request POST \
  --url https://enode-api.production.enode.io/batteries/54d827e1-8355-4fed-97b5-55940d1d09ba/operation-mode \
  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
  --header 'content-type: application/json' \
  --data '{"operationMode":"IMPORT_FOCUS"}'

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.

      • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
      • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
      • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
      • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.

      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.

  • issues array of object

    A list of validation issues which ocurred while validating some component of the network payload.

    Show child attributes

    Response example

    {
      "type": "https://developers.enode.com/api/problems/not-found",
      "title": "Not Found",
      "detail": "The requested asset wasn't found."
    }
    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.

    Request example

    curl --request GET \
      --url https://enode-api.production.enode.io/batteries/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    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.

        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
        • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.

        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.

    Request example

    curl --request POST \
      --url https://enode-api.production.enode.io/batteries/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd/cancel \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    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.

        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
        • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.

        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.

        • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
        • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
        • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
        • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.

        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.

    Request example

    curl --request POST \
      --url https://enode-api.production.enode.io/batteries/54d827e1-8355-4fed-97b5-55940d1d09ba/refresh-hint \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    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

    Returns a paginated list of all Chargers.

    Request

    Query parameters
    after string Optional
    before string Optional
    pageSize integer Optional

    Default value: 50

    Request example

    curl --request GET \
      --url 'https://enode-api.production.enode.io/chargers?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    Response 200

    Attributes
    • data array of object

      Paginated list of chargers

      Show child attributes
      • data[].id string

        Charger ID

      • data[].userId string

        The ID of the user that linked this charger.

      • data[].vendor string

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

        Possible enum values:

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

        The last time Enode communicated with the charger.

      • data[].isReachable boolean

        Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

      • data[].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
        • data[].chargeState.isPluggedIn boolean or null

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

        • data[].chargeState.isCharging boolean or null

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

        • data[].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.

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

          Time of latest charge state update

        • data[].chargeState.maxCurrent number or null

          Desired max current in amperes, if set

        • data[].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.
          • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

          Possible enum values:

            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
      • data[].capabilities object

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

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

          Full availability of information data.

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

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

          • data[].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.

        • data[].capabilities.chargeState object

          Full availability of chargeState data.

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

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

          • data[].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.

        • data[].capabilities.startCharging object

          Supports START charging command.

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

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

          • data[].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.

        • data[].capabilities.stopCharging object

          Supports STOP charging command.

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

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

          • data[].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.

        • data[].capabilities.setMaxCurrent object

          Ability to set the max charge rate.

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

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

          • data[].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.

      • data[].scopes array of string

        Scopes that the user has granted for this charger.

      • data[].information object

        Descriptive information about the Charger

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

          Charger brand

          Possible enum values:

            ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
        • data[].information.model string

          Charger model

        • data[].information.year number or null

          Charger production year

        • data[].information.serialNumber string

          Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

      • data[].location object
        Show child attributes
        • data[].location.id string<uuid> or null

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

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

          Time of last received location state update

    • 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": [
        {
          "information": {
            "brand": "Zaptec",
            "model": "ZAPTEC PRO",
            "serialNumber": "1234567890",
            "year": null
          },
          "location": {
            "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
            "lastUpdated": "2023-03-21T16:39:20.000Z"
          },
          "id": "2211e263-0362-4235-83f4-887bdf3ee414",
          "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
          "vendor": "ZAPTEC",
          "lastSeen": "2023-03-21T21:08:27.596Z",
          "isReachable": true,
          "chargeState": {
            "isPluggedIn": true,
            "isCharging": true,
            "chargeRate": 6.939,
            "lastUpdated": "2023-03-21T16:39:20.000Z",
            "maxCurrent": 16,
            "powerDeliveryState": "PLUGGED_IN:CHARGING"
          },
          "capabilities": {
            "information": {
              "isCapable": true,
              "interventionIds": []
            },
            "chargeState": {
              "isCapable": true,
              "interventionIds": []
            },
            "startCharging": {
              "isCapable": true,
              "interventionIds": []
            },
            "stopCharging": {
              "isCapable": true,
              "interventionIds": []
            },
            "setMaxCurrent": {
              "isCapable": false,
              "interventionIds": [
                "4eaeb363-296d-4ccc-a973-7805e6f400bd"
              ]
            }
          },
          "scopes": [
            "charger:control:charging",
            "charger:read:data"
          ]
        }
      ],
      "pagination": {
        "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
        "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
      }
    }
    Was this section helpful?

    List user chargers

    GET /users/{userId}/chargers

    Returns a paginated list of chargers for the given userId.

    Request

    Path parameters
    userId string Required

    ID of the User.

    Query parameters
    after string Optional
    before string Optional
    pageSize integer Optional

    Default value: 50

    Request example

    curl --request GET \
      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/chargers?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    Response 200

    Attributes
    • data array of object

      Paginated list of chargers

      Show child attributes
      • data[].id string

        Charger ID

      • data[].userId string

        The ID of the user that linked this charger.

      • data[].vendor string

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

        Possible enum values:

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

        The last time Enode communicated with the charger.

      • data[].isReachable boolean

        Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

      • data[].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
        • data[].chargeState.isPluggedIn boolean or null

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

        • data[].chargeState.isCharging boolean or null

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

        • data[].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.

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

          Time of latest charge state update

        • data[].chargeState.maxCurrent number or null

          Desired max current in amperes, if set

        • data[].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.
          • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

          Possible enum values:

            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
      • data[].capabilities object

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

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

          Full availability of information data.

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

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

          • data[].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.

        • data[].capabilities.chargeState object

          Full availability of chargeState data.

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

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

          • data[].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.

        • data[].capabilities.startCharging object

          Supports START charging command.

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

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

          • data[].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.

        • data[].capabilities.stopCharging object

          Supports STOP charging command.

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

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

          • data[].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.

        • data[].capabilities.setMaxCurrent object

          Ability to set the max charge rate.

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

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

          • data[].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.

      • data[].scopes array of string

        Scopes that the user has granted for this charger.

      • data[].information object

        Descriptive information about the Charger

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

          Charger brand

          Possible enum values:

            ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
        • data[].information.model string

          Charger model

        • data[].information.year number or null

          Charger production year

        • data[].information.serialNumber string

          Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

      • data[].location object
        Show child attributes
        • data[].location.id string<uuid> or null

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

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

          Time of last received location state update

    • 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": [
        {
          "information": {
            "brand": "Zaptec",
            "model": "ZAPTEC PRO",
            "serialNumber": "1234567890",
            "year": null
          },
          "location": {
            "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
            "lastUpdated": "2023-03-21T16:39:20.000Z"
          },
          "id": "2211e263-0362-4235-83f4-887bdf3ee414",
          "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
          "vendor": "ZAPTEC",
          "lastSeen": "2023-03-21T21:08:27.596Z",
          "isReachable": true,
          "chargeState": {
            "isPluggedIn": true,
            "isCharging": true,
            "chargeRate": 6.939,
            "lastUpdated": "2023-03-21T16:39:20.000Z",
            "maxCurrent": 16,
            "powerDeliveryState": "PLUGGED_IN:CHARGING"
          },
          "capabilities": {
            "information": {
              "isCapable": true,
              "interventionIds": []
            },
            "chargeState": {
              "isCapable": true,
              "interventionIds": []
            },
            "startCharging": {
              "isCapable": true,
              "interventionIds": []
            },
            "stopCharging": {
              "isCapable": true,
              "interventionIds": []
            },
            "setMaxCurrent": {
              "isCapable": false,
              "interventionIds": [
                "4eaeb363-296d-4ccc-a973-7805e6f400bd"
              ]
            }
          },
          "scopes": [
            "charger:control:charging",
            "charger:read:data"
          ]
        }
      ],
      "pagination": {
        "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
        "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
      }
    }
    Was this section helpful?

    Get charger

    GET /chargers/{chargerId}

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Request example

    curl --request GET \
      --url https://enode-api.production.enode.io/chargers/ad84e742-0f46-4cf4-b0db-7d890f8f23f5 \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

    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:

        ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
    • lastSeen string<date-time>

      The last time Enode communicated with the charger.

    • isReachable boolean

      Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

    • 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.
        • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

        Possible enum values:

          UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
    • 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.

    • information object

      Descriptive information about the Charger

      Show child attributes
      • information.brand string

        Charger brand

        Possible enum values:

          ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
      • information.model string

        Charger model

      • information.year number or null

        Charger production year

      • information.serialNumber string

        Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

    • location object
      Show child attributes
      • location.id string<uuid> or null

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

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

        Time of last received location state update

    Response example

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

    Set location for a charger

    PUT /chargers/{chargerId}

    Update the locationId field on a Charger.

    Request

    Path parameters
    chargerId string Required

    ID of the Charger.

    Attributes
    • locationId string<uuid> or null Required

    Request example

    curl --request PUT \
      --url https://enode-api.production.enode.io/chargers/ad84e742-0f46-4cf4-b0db-7d890f8f23f5 \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
      --header 'content-type: application/json' \
      --data '{"locationId":"4eaeb363-296d-4ccc-a973-7805e6f400bd"}'

    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:

        ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
    • lastSeen string<date-time>

      The last time Enode communicated with the charger.

    • isReachable boolean

      Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

    • 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.
        • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

        Possible enum values:

          UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
    • 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.

    • information object

      Descriptive information about the Charger

      Show child attributes
      • information.brand string

        Charger brand

        Possible enum values:

          ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
      • information.model string

        Charger model

      • information.year number or null

        Charger production year

      • information.serialNumber string

        Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

    • location object
      Show child attributes
      • location.id string<uuid> or null

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

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

        Time of last received location state update

    Response example

    {
      "information": {
        "brand": "Zaptec",
        "model": "ZAPTEC PRO",
        "serialNumber": "1234567890",
        "year": null
      },
      "location": {
        "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
        "lastUpdated": "2023-03-21T16:39:20.000Z"
      },
      "id": "2211e263-0362-4235-83f4-887bdf3ee414",
      "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
      "vendor": "ZAPTEC",
      "lastSeen": "2023-03-21T21:08:27.596Z",
      "isReachable": true,
      "chargeState": {
        "isPluggedIn": true,
        "isCharging": true,
        "chargeRate": 6.939,
        "lastUpdated": "2023-03-21T16:39:20.000Z",
        "maxCurrent": 16,
        "powerDeliveryState": "PLUGGED_IN:CHARGING"
      },
      "capabilities": {
        "information": {
          "isCapable": true,
          "interventionIds": []
        },
        "chargeState": {
          "isCapable": true,
          "interventionIds": []
        },
        "startCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "stopCharging": {
          "isCapable": true,
          "interventionIds": []
        },
        "setMaxCurrent": {
          "isCapable": false,
          "interventionIds": [
            "4eaeb363-296d-4ccc-a973-7805e6f400bd"
          ]
        }
      },
      "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

    Request example

    curl --request POST \
      --url https://enode-api.production.enode.io/chargers/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/charging \
      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
      --header 'content-type: application/json' \
      --data '{"action":"START"}'

    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.

    • issues array of object

      A list of validation issues which ocurred while validating some component of the network payload.

      Show child attributes

      Response example

      {
        "type": "https://developers.enode.com/api/problems/not-found",
        "title": "Not Found",
        "detail": "The requested asset wasn't found."
      }

      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.

      • issues array of object

        A list of validation issues which ocurred while validating some component of the network payload.

        Show child attributes

        Response example

        {
          "type": "https://developers.enode.com/api/problems/not-found",
          "title": "Not Found",
          "detail": "The requested asset wasn't found."
        }
        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

        Request example

        curl --request POST \
          --url https://enode-api.production.enode.io/chargers/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/max-current \
          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
          --header 'content-type: application/json' \
          --data '{"maxCurrent":10}'

        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.

        • issues array of object

          A list of validation issues which ocurred while validating some component of the network payload.

          Show child attributes

          Response example

          {
            "type": "https://developers.enode.com/api/problems/not-found",
            "title": "Not Found",
            "detail": "The requested asset wasn't found."
          }
          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.

          Request example

          curl --request GET \
            --url https://enode-api.production.enode.io/chargers/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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.

          Request example

          curl --request POST \
            --url https://enode-api.production.enode.io/chargers/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd/cancel \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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.

          Request example

          curl --request POST \
            --url https://enode-api.production.enode.io/chargers/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/refresh-hint \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          Response 204

          Refresh hint registered successfully.

          Response 404

          The specified charger was not found.

          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

          Paginated list of HVAC units

          Request

          Query parameters
          after string Optional
          before string Optional
          pageSize integer Optional

          Default value: 50

          Request example

          curl --request GET \
            --url 'https://enode-api.production.enode.io/hvacs?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          Response 200

          Attributes
          • data array of object

            List of paginated HVAC units

            Show child attributes
            • data[].id string

              HVAC unit ID

            • data[].userId string

              The ID of the user that linked this hvac.

            • data[].vendor string

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

              Possible enum values:

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

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

            • data[].isReachable boolean

              Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

            • data[].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.

            • data[].information object

              Descriptive information about the HVAC unit

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

                Display name of OEM/vendor

                Possible enum values:

                  TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
              • data[].information.model string or null

                Device model name

              • data[].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.

              • data[].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".

              • data[].information.category string

                Classification of the connected HVAC device.

                • HEATING: A direct heating device, such as an electric panel heater

                • COOLING: A direct cooling device, such as an air conditioner

                • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

                • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

                Possible enum values:

                  HEATINGCOOLINGHEAT_PUMPAGGREGATOR
            • data[].temperatureState object

              Latest information about temperature. 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[].temperatureState.currentTemperature number or null

                Current air temperature reported by device in degrees Celsius.

              • data[].temperatureState.isActive boolean

                Whether the HVAC unit is actively heating or cooling.

              • data[].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

            • data[].thermostatState object

              Latest information about the thermostat state. 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[].thermostatState.mode string

                The current state of the HVAC unit.

                • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
                • OFF: The HVAC unit is turned off.
                • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
                • COOL: The HVAC unit will only cool to the given setpoint.
                • HEAT: The HVAC unit will only heat to the given setpoint

                Possible enum values:

                  UNKNOWNOFFAUTOCOOLHEAT
              • data[].thermostatState.heatSetpoint number or null

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

              • data[].thermostatState.coolSetpoint number or null

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

              • data[].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
              • data[].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.

            • data[].scopes array of string

              Scopes that the user has granted for this HVAC unit.

            • data[].capabilities object

              An object describing valid states for this HVAC unit.

              Show child attributes
              • data[].capabilities.capableModes array of string or null

                A list of valid modes for this HVAC unit.

              • data[].capabilities.coolSetpointRange object or null

                The range of allowable values for coolSetpoint.

                Show child attributes
                • data[].capabilities.coolSetpointRange.min number or null

                  The minimum allowable temperature, inclusive.

                • data[].capabilities.coolSetpointRange.max number or null

                  The maximum allowable temperature, inclusive.

              • data[].capabilities.heatSetpointRange object or null

                The range of allowable values for heatSetpoint.

                Show child attributes
                • data[].capabilities.heatSetpointRange.min number or null

                  The minimum allowable temperature, inclusive.

                • data[].capabilities.heatSetpointRange.max number or null

                  The maximum allowable temperature, inclusive.

              • data[].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
                • data[].capabilities.setpointDifferenceRange.min number or null

                  The minimum allowable difference, inclusive.

                • data[].capabilities.setpointDifferenceRange.max number or null

                  The maximum allowable difference, inclusive.

              • data[].capabilities.setFollowSchedule object

                Supports following a schedule set on the device.

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

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

                • data[].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.

              • data[].capabilities.setPermanentHold object

                Supports setting a permanent hold.

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

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

                • data[].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.

            • data[].location object
              Show child attributes
              • data[].location.id string<uuid> or null

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

          • 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": "8f39fa8d-8f10-4984-a319-741dc23848c0",
                "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
                "vendor": "ADAX",
                "lastSeen": "2020-04-07T17:04:26.000Z",
                "isReachable": true,
                "consumptionRate": 1.8,
                "information": {
                  "brand": "ADAX",
                  "model": "Neo Wi-Fi Skirting",
                  "displayName": "Bedroom Panel Heater",
                  "groupName": "Bedroom",
                  "category": "HEATING"
                },
                "location": {
                  "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
                },
                "capabilities": {
                  "capableModes": [
                    "HEAT",
                    "COOL",
                    "OFF"
                  ],
                  "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"
                ]
              }
            ],
            "pagination": {
              "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
              "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
            }
          }
          Was this section helpful?

          List user HVAC units

          GET /users/{userId}/hvacs

          Paginated list of HVAC units for the given User

          Request

          Path parameters
          userId string Required

          ID of the User.

          Query parameters
          after string Optional
          before string Optional
          pageSize integer Optional

          Default value: 50

          Request example

          curl --request GET \
            --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/hvacs?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          Response 200

          Attributes
          • data array of object

            List of paginated HVAC units

            Show child attributes
            • data[].id string

              HVAC unit ID

            • data[].userId string

              The ID of the user that linked this hvac.

            • data[].vendor string

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

              Possible enum values:

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

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

            • data[].isReachable boolean

              Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

            • data[].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.

            • data[].information object

              Descriptive information about the HVAC unit

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

                Display name of OEM/vendor

                Possible enum values:

                  TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
              • data[].information.model string or null

                Device model name

              • data[].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.

              • data[].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".

              • data[].information.category string

                Classification of the connected HVAC device.

                • HEATING: A direct heating device, such as an electric panel heater

                • COOLING: A direct cooling device, such as an air conditioner

                • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

                • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

                Possible enum values:

                  HEATINGCOOLINGHEAT_PUMPAGGREGATOR
            • data[].temperatureState object

              Latest information about temperature. 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[].temperatureState.currentTemperature number or null

                Current air temperature reported by device in degrees Celsius.

              • data[].temperatureState.isActive boolean

                Whether the HVAC unit is actively heating or cooling.

              • data[].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

            • data[].thermostatState object

              Latest information about the thermostat state. 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[].thermostatState.mode string

                The current state of the HVAC unit.

                • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
                • OFF: The HVAC unit is turned off.
                • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
                • COOL: The HVAC unit will only cool to the given setpoint.
                • HEAT: The HVAC unit will only heat to the given setpoint

                Possible enum values:

                  UNKNOWNOFFAUTOCOOLHEAT
              • data[].thermostatState.heatSetpoint number or null

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

              • data[].thermostatState.coolSetpoint number or null

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

              • data[].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
              • data[].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.

            • data[].scopes array of string

              Scopes that the user has granted for this HVAC unit.

            • data[].capabilities object

              An object describing valid states for this HVAC unit.

              Show child attributes
              • data[].capabilities.capableModes array of string or null

                A list of valid modes for this HVAC unit.

              • data[].capabilities.coolSetpointRange object or null

                The range of allowable values for coolSetpoint.

                Show child attributes
                • data[].capabilities.coolSetpointRange.min number or null

                  The minimum allowable temperature, inclusive.

                • data[].capabilities.coolSetpointRange.max number or null

                  The maximum allowable temperature, inclusive.

              • data[].capabilities.heatSetpointRange object or null

                The range of allowable values for heatSetpoint.

                Show child attributes
                • data[].capabilities.heatSetpointRange.min number or null

                  The minimum allowable temperature, inclusive.

                • data[].capabilities.heatSetpointRange.max number or null

                  The maximum allowable temperature, inclusive.

              • data[].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
                • data[].capabilities.setpointDifferenceRange.min number or null

                  The minimum allowable difference, inclusive.

                • data[].capabilities.setpointDifferenceRange.max number or null

                  The maximum allowable difference, inclusive.

              • data[].capabilities.setFollowSchedule object

                Supports following a schedule set on the device.

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

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

                • data[].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.

              • data[].capabilities.setPermanentHold object

                Supports setting a permanent hold.

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

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

                • data[].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.

            • data[].location object
              Show child attributes
              • data[].location.id string<uuid> or null

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

          • 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": "8f39fa8d-8f10-4984-a319-741dc23848c0",
                "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
                "vendor": "ADAX",
                "lastSeen": "2020-04-07T17:04:26.000Z",
                "isReachable": true,
                "consumptionRate": 1.8,
                "information": {
                  "brand": "ADAX",
                  "model": "Neo Wi-Fi Skirting",
                  "displayName": "Bedroom Panel Heater",
                  "groupName": "Bedroom",
                  "category": "HEATING"
                },
                "location": {
                  "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
                },
                "capabilities": {
                  "capableModes": [
                    "HEAT",
                    "COOL",
                    "OFF"
                  ],
                  "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"
                ]
              }
            ],
            "pagination": {
              "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
              "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
            }
          }
          Was this section helpful?

          Set location for an HVAC unit

          PUT /hvacs/{hvacId}

          Update the locationId field on an HVAC unit.

          Request

          Path parameters
          hvacId string Required

          ID of the HVAC unit.

          Attributes
          • locationId string<uuid> or null Required

          Request example

          curl --request PUT \
            --url https://enode-api.production.enode.io/hvacs/8f39fa8d-8f10-4984-a319-741dc23848c0 \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
            --header 'content-type: application/json' \
            --data '{"locationId":"4eaeb363-296d-4ccc-a973-7805e6f400bd"}'

          Response 200

          Successfully updated HVAC unit

          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

            Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

          • 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

              Classification of the connected HVAC device.

              • HEATING: A direct heating device, such as an electric panel heater

              • COOLING: A direct cooling device, such as an air conditioner

              • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

              • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

              Possible enum values:

                HEATINGCOOLINGHEAT_PUMPAGGREGATOR
          • temperatureState object

            Latest information about temperature. 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. 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

              The current state of the HVAC unit.

              • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
              • OFF: The HVAC unit is turned off.
              • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
              • COOL: The HVAC unit will only cool to the given setpoint.
              • HEAT: The HVAC unit will only heat to the given setpoint

              Possible enum values:

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

          • scopes array of string

            Scopes that the user has granted for this HVAC unit.

          • capabilities object

            An object describing valid states for this HVAC unit.

            Show child attributes
            • capabilities.capableModes array of string or null

              A list of valid modes for this HVAC unit.

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

          • location object
            Show child attributes
            • location.id 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,
            "consumptionRate": 1.8,
            "information": {
              "brand": "ADAX",
              "model": "Neo Wi-Fi Skirting",
              "displayName": "Bedroom Panel Heater",
              "groupName": "Bedroom",
              "category": "HEATING"
            },
            "location": {
              "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
            },
            "capabilities": {
              "capableModes": [
                "HEAT",
                "COOL",
                "OFF"
              ],
              "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"
            ]
          }
          Was this section helpful?

          Get HVAC unit

          GET /hvacs/{hvacId}

          Request

          Path parameters
          hvacId string Required

          ID of the HVAC unit.

          Request example

          curl --request GET \
            --url https://enode-api.production.enode.io/hvacs/8f39fa8d-8f10-4984-a319-741dc23848c0 \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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

            Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

          • 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

              Classification of the connected HVAC device.

              • HEATING: A direct heating device, such as an electric panel heater

              • COOLING: A direct cooling device, such as an air conditioner

              • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

              • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

              Possible enum values:

                HEATINGCOOLINGHEAT_PUMPAGGREGATOR
          • temperatureState object

            Latest information about temperature. 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. 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

              The current state of the HVAC unit.

              • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
              • OFF: The HVAC unit is turned off.
              • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
              • COOL: The HVAC unit will only cool to the given setpoint.
              • HEAT: The HVAC unit will only heat to the given setpoint

              Possible enum values:

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

          • scopes array of string

            Scopes that the user has granted for this HVAC unit.

          • capabilities object

            An object describing valid states for this HVAC unit.

            Show child attributes
            • capabilities.capableModes array of string or null

              A list of valid modes for this HVAC unit.

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

          • location object
            Show child attributes
            • location.id 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,
            "consumptionRate": 1.8,
            "information": {
              "brand": "ADAX",
              "model": "Neo Wi-Fi Skirting",
              "displayName": "Bedroom Panel Heater",
              "groupName": "Bedroom",
              "category": "HEATING"
            },
            "location": {
              "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
            },
            "capabilities": {
              "capableModes": [
                "HEAT",
                "COOL",
                "OFF"
              ],
              "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"
            ]
          }
          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.

          Request example

          curl --request GET \
            --url https://enode-api.production.enode.io/hvacs/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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.

          Request example

          curl --request POST \
            --url https://enode-api.production.enode.io/hvacs/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd/cancel \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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?

          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.

          Request example

          curl --request POST \
            --url https://enode-api.production.enode.io/hvacs/8f39fa8d-8f10-4984-a319-741dc23848c0/follow-schedule \
            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

          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.

          • issues array of object

            A list of validation issues which ocurred while validating some component of the network payload.

            Show child attributes

            Response example

            {
              "type": "https://developers.enode.com/api/problems/not-found",
              "title": "Not Found",
              "detail": "The requested asset wasn't found."
            }

            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.

            • issues array of object

              A list of validation issues which ocurred while validating some component of the network payload.

              Show child attributes

              Response example

              {
                "type": "https://developers.enode.com/api/problems/not-found",
                "title": "Not Found",
                "detail": "The requested asset wasn't found."
              }
              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.

              Request example

              curl --request POST \
                --url https://enode-api.production.enode.io/hvacs/8f39fa8d-8f10-4984-a319-741dc23848c0/refresh-hint \
                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

              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
              • coolSetpoint number Required
              • mode string Required

                Possible enum values:

                  COOL

              Request example

              curl --request POST \
                --url https://enode-api.production.enode.io/hvacs/8f39fa8d-8f10-4984-a319-741dc23848c0/permanent-hold \
                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                --header 'content-type: application/json' \
                --data '{"coolSetpoint":0,"mode":"COOL"}'

              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.

              • issues array of object

                A list of validation issues which ocurred while validating some component of the network payload.

                Show child attributes

                Response example

                {
                  "type": "https://developers.enode.com/api/problems/not-found",
                  "title": "Not Found",
                  "detail": "The requested asset wasn't found."
                }

                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.

                • issues array of object

                  A list of validation issues which ocurred while validating some component of the network payload.

                  Show child attributes

                  Response example

                  {
                    "type": "https://developers.enode.com/api/problems/not-found",
                    "title": "Not Found",
                    "detail": "The requested asset wasn't found."
                  }
                  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:

                    AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG

                  Request example

                  curl --request GET \
                    --url 'https://enode-api.production.enode.io/interventions?language=SOME_STRING_VALUE&vendorType=SOME_undefined_VALUE&vendor=TESLA' \
                    --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                  Response 200

                  Attributes (list of undefined)

                    Response example

                    [
                      {
                        "id": "9d90a9ad-9b24-4ce0-94e9-e888b1b877f4",
                        "vendor": "AUDI",
                        "vendorType": "string",
                        "brand": "Audi",
                        "introducedAt": "2023-03-16T00:00:00Z",
                        "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",
                          "action": "Link"
                        }
                      }
                    ]
                    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:

                      AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/interventions/ad84e742-0f46-4cf4-b0db-7d890f8f23f5?language=SOME_STRING_VALUE&vendorType=SOME_undefined_VALUE&vendor=TESLA' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • id string<uuid>
                    • vendor string

                      Machine-friendly representation of the OEM's name.

                      Possible enum values:

                        AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                    • 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:

                        AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUNAcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYDTadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmoZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
                    • introducedAt string<date-time>

                      ISO8601 UTC 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
                      • resolution.action string or null

                        If non null, the action to be taken by the user to resolve the intervention. See our guide on resolving interventions for more information.

                        Possible enum values:

                          Link

                    Response example

                    {
                      "id": "9d90a9ad-9b24-4ce0-94e9-e888b1b877f4",
                      "vendor": "AUDI",
                      "vendorType": "string",
                      "brand": "Audi",
                      "introducedAt": "2023-03-16T00:00:00Z",
                      "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",
                        "action": "Link"
                      }
                    }

                    Response 404

                    Intervention not found.

                    Was this section helpful?

                    Locations

                    Locations are used to assign devices to a geographical group. This is useful when running schedules, smart charging, or smart heating, as target behavior usually depends on a common locality of demand (charging, heating, cooling, etc.) and supply (tariff, battery, inverter, etc.) of energy.

                    List locations

                    GET /locations

                    Returns a paginated list of all Locations.

                    Request

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/locations?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • data array of object

                      Paginated list of locations

                      Show child attributes
                      • data[].name string

                        User-supplied name for the Location

                      • data[].latitude number

                        Latitude in degrees

                      • data[].longitude number

                        Longitude in degrees

                      • data[].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

                      • data[].id string<uuid>

                        The ID of the Location.

                      • data[].userId string

                        User ID the location belongs to

                    • 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": [
                        {
                          "name": "Enode",
                          "latitude": 59.9165915,
                          "longitude": 10.7582268,
                          "timezoneName": "Europe/Oslo",
                          "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                          "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                        }
                      ],
                      "pagination": {
                        "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                        "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                      }
                    }
                    Was this section helpful?

                    List user locations

                    GET /users/{userId}/locations

                    Returns a paginated list of Locations for the given user.

                    Request

                    Path parameters
                    userId string Required

                    ID of the User.

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/locations?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • data array of object

                      Paginated list of locations

                      Show child attributes
                      • data[].name string

                        User-supplied name for the Location

                      • data[].latitude number

                        Latitude in degrees

                      • data[].longitude number

                        Longitude in degrees

                      • data[].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

                      • data[].id string<uuid>

                        The ID of the Location.

                      • data[].userId string

                        User ID the location belongs to

                    • 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": [
                        {
                          "name": "Enode",
                          "latitude": 59.9165915,
                          "longitude": 10.7582268,
                          "timezoneName": "Europe/Oslo",
                          "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                          "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                        }
                      ],
                      "pagination": {
                        "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                        "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                      }
                    }
                    Was this section helpful?

                    Create location

                    POST /users/{userId}/locations

                    Create a Location for a User.

                    Request

                    Path parameters
                    userId string Required

                    ID of the User.

                    Attributes
                    • name string Required

                      User-supplied name for the Location

                    • latitude number Required

                      Latitude in degrees

                    • longitude number Required

                      Longitude 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

                    Request example

                    curl --request POST \
                      --url https://enode-api.production.enode.io/users/%7BuserId%7D/locations \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                      --header 'content-type: application/json' \
                      --data '{"name":"Enode","latitude":59.9165915,"longitude":10.7582268,"timezoneName":"Europe/Oslo"}'

                    Response 200

                    Created

                    Attributes
                    • name string

                      User-supplied name for the Location

                    • latitude number

                      Latitude in degrees

                    • longitude number

                      Longitude 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

                    • id string<uuid>

                      The ID of the Location.

                    • userId string

                      User ID the location belongs to

                    Response example

                    {
                      "name": "Enode",
                      "latitude": 59.9165915,
                      "longitude": 10.7582268,
                      "timezoneName": "Europe/Oslo",
                      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                    }
                    Was this section helpful?

                    Get location

                    GET /locations/{locationId}

                    Fetch a Location.

                    Request

                    Path parameters
                    locationId string<uuid> Required

                    ID of the Location.

                    Request example

                    curl --request GET \
                      --url https://enode-api.production.enode.io/locations/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • name string

                      User-supplied name for the Location

                    • latitude number

                      Latitude in degrees

                    • longitude number

                      Longitude 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

                    • id string<uuid>

                      The ID of the Location.

                    • userId string

                      User ID the location belongs to

                    Response example

                    {
                      "name": "Enode",
                      "latitude": 59.9165915,
                      "longitude": 10.7582268,
                      "timezoneName": "Europe/Oslo",
                      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                    }
                    Was this section helpful?

                    Delete location

                    DELETE /locations/{locationId}

                    Delete a Location.

                    Request

                    Path parameters
                    locationId string<uuid> Required

                    ID of the Location.

                    Request example

                    curl --request DELETE \
                      --url https://enode-api.production.enode.io/locations/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • name string

                      User-supplied name for the Location

                    • latitude number

                      Latitude in degrees

                    • longitude number

                      Longitude 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

                    • id string<uuid>

                      The ID of the Location.

                    • userId string

                      User ID the location belongs to

                    Response example

                    {
                      "name": "Enode",
                      "latitude": 59.9165915,
                      "longitude": 10.7582268,
                      "timezoneName": "Europe/Oslo",
                      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                    }
                    Was this section helpful?

                    Update location

                    PUT /locations/{locationId}

                    Updates a location.

                    Request

                    Path parameters
                    locationId string<uuid> Required

                    ID of the Location.

                    Attributes
                    • name string Optional

                      User-supplied name for the Location

                    • latitude number Optional

                      Latitude in degrees

                    • longitude number Optional

                      Longitude 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

                    Request example

                    curl --request PUT \
                      --url https://enode-api.production.enode.io/locations/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                      --header 'content-type: application/json' \
                      --data '{"name":"Enode","latitude":59.9165915,"longitude":10.7582268,"timezoneName":"Europe/Oslo"}'

                    Response 200

                    Attributes
                    • name string

                      User-supplied name for the Location

                    • latitude number

                      Latitude in degrees

                    • longitude number

                      Longitude 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

                    • id string<uuid>

                      The ID of the Location.

                    • userId string

                      User ID the location belongs to

                    Response example

                    {
                      "name": "Enode",
                      "latitude": 59.9165915,
                      "longitude": 10.7582268,
                      "timezoneName": "Europe/Oslo",
                      "id": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "userId": "0fc4b1e7-9bdf-4958-b343-86eff3d9f92f"
                    }
                    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

                    Request example

                    curl --request GET \
                      --url https://enode-api.production.enode.io/meters/54d827e1-8355-4fed-97b5-55940d1d09ba

                    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:

                        ENPHASEGIVENERGYHUAWEITESLASMASOLAREDGE
                    • lastSeen string<date-time>

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

                    • isReachable boolean

                      Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

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

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

                        The current power measured by the meter in kW.

                        • Positive value: Power is imported from the grid to the site, indicating consumption.
                        • Negative value: Power is exported 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.id string<uuid> or null

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

                      • 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 state update

                    • 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": {
                        "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                        "longitude": 10.7197486,
                        "latitude": 59.9173985,
                        "lastUpdated": "2024-01-07T17:04:26.000Z"
                      },
                      "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

                    Request example

                    curl --request POST \
                      --url https://enode-api.production.enode.io/meters/54d827e1-8355-4fed-97b5-55940d1d09ba/refresh-hint \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    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

                    ID of the User.

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/meters?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    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:

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

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

                      • data[].isReachable boolean

                        Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

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

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

                          The current power measured by the meter in kW.

                          • Positive value: Power is imported from the grid to the site, indicating consumption.
                          • Negative value: Power is exported 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.id string<uuid> or null

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

                        • data[].location.longitude number or null

                          Longitude in degrees

                        • data[].location.latitude number or null

                          Latitude in degrees

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

                          Time of last received location state update

                      • 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": {
                            "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                            "longitude": 10.7197486,
                            "latitude": 59.9173985,
                            "lastUpdated": "2024-01-07T17:04:26.000Z"
                          },
                          "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

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/meters?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    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:

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

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

                      • data[].isReachable boolean

                        Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

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

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

                          The current power measured by the meter in kW.

                          • Positive value: Power is imported from the grid to the site, indicating consumption.
                          • Negative value: Power is exported 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.id string<uuid> or null

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

                        • data[].location.longitude number or null

                          Longitude in degrees

                        • data[].location.latitude number or null

                          Latitude in degrees

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

                          Time of last received location state update

                      • 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": {
                            "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                            "longitude": 10.7197486,
                            "latitude": 59.9173985,
                            "lastUpdated": "2024-01-07T17:04:26.000Z"
                          },
                          "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 schedules

                    GET /users/{userId}/schedules

                    Returns a list of Schedules registered to the User.

                    Request

                    Path parameters
                    userId string Required

                    ID of the User.

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/schedules?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • data array

                      Paginated list of schedules

                    • 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": [
                        {
                          "isEnabled": true,
                          "defaultShouldCharge": true,
                          "rules": [
                            {
                              "hourMinute": {
                                "from": "08: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
                            }
                          ],
                          "targetId": "string",
                          "targetType": "vehicle",
                          "locationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                          "id": "string"
                        }
                      ],
                      "pagination": {
                        "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                        "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                      }
                    }
                    Was this section helpful?

                    Create schedule

                    POST /users/{userId}/schedules

                    Request

                    Path parameters
                    userId string Required

                    ID of the User.

                    Attributes
                    • isEnabled boolean Required

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

                      Default value: true

                    • defaultShouldCharge boolean Required

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

                    • rules array of object Required

                      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 Optional

                        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 Required

                          Clock time from which this rule should apply each day.

                        • rules[].hourMinute.to string Required

                          Clock time until which this rule should apply each day.

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

                        UTC timestamp from which this rule should apply.

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

                        UTC timestamp until which this rule should apply.

                      • rules[].weekdays array of integer Optional

                        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 Required

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

                    • targetId string Required

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

                    • targetType string Required

                      Possible enum values:

                        vehiclecharger
                    • locationId string<uuid> or null Required

                      ID of the 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 location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

                    Request example

                    curl --request POST \
                      --url https://enode-api.production.enode.io/users/%7BuserId%7D/schedules \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                      --header 'content-type: application/json' \
                      --data '{"isEnabled":true,"defaultShouldCharge":true,"rules":[{"hourMinute":{"from":"08: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}],"targetId":"string","targetType":"vehicle","locationId":"4eaeb363-296d-4ccc-a973-7805e6f400bd"}'

                    Response 200

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

                    • targetId string

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

                    • targetType string

                      Possible enum values:

                        vehiclecharger
                    • locationId string<uuid> or null

                      ID of the 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 location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

                    • id string

                    Response example

                    {
                      "isEnabled": true,
                      "defaultShouldCharge": true,
                      "rules": [
                        {
                          "hourMinute": {
                            "from": "08: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
                        }
                      ],
                      "targetId": "string",
                      "targetType": "vehicle",
                      "locationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "id": "string"
                    }
                    Was this section helpful?

                    Get schedule

                    GET /schedules/{scheduleId}

                    Request

                    Path parameters
                    scheduleId string<uuid> Required

                    ID of the Schedule.

                    Request example

                    curl --request GET \
                      --url https://enode-api.production.enode.io/schedules/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

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

                    • targetId string

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

                    • targetType string

                      Possible enum values:

                        vehiclecharger
                    • locationId string<uuid> or null

                      ID of the 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 location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

                    • id string

                    Response example

                    {
                      "isEnabled": true,
                      "defaultShouldCharge": true,
                      "rules": [
                        {
                          "hourMinute": {
                            "from": "08: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
                        }
                      ],
                      "targetId": "string",
                      "targetType": "vehicle",
                      "locationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "id": "string"
                    }
                    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
                    • isEnabled boolean Optional

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

                      Default value: true

                    • defaultShouldCharge boolean Optional

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

                    • rules array of object Optional

                      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 Optional

                        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 Required

                          Clock time from which this rule should apply each day.

                        • rules[].hourMinute.to string Required

                          Clock time until which this rule should apply each day.

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

                        UTC timestamp from which this rule should apply.

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

                        UTC timestamp until which this rule should apply.

                      • rules[].weekdays array of integer Optional

                        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 Required

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

                    • targetId string Optional

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

                    • targetType string Optional

                      Possible enum values:

                        vehiclecharger
                    • locationId string<uuid> or null Optional

                      ID of the 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 location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

                    Request example

                    curl --request PUT \
                      --url https://enode-api.production.enode.io/schedules/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                      --header 'content-type: application/json' \
                      --data '{"isEnabled":true,"defaultShouldCharge":true,"rules":[{"hourMinute":{"from":"08: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}],"targetId":"string","targetType":"vehicle","locationId":"4eaeb363-296d-4ccc-a973-7805e6f400bd"}'

                    Response 200

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

                    • targetId string

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

                    • targetType string

                      Possible enum values:

                        vehiclecharger
                    • locationId string<uuid> or null

                      ID of the 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 location. This is designed to prevent schedules from controlling vehicles at public chargers where the user doesn't pay for electricity.

                    • id string

                    Response example

                    {
                      "isEnabled": true,
                      "defaultShouldCharge": true,
                      "rules": [
                        {
                          "hourMinute": {
                            "from": "08: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
                        }
                      ],
                      "targetId": "string",
                      "targetType": "vehicle",
                      "locationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                      "id": "string"
                    }
                    Was this section helpful?

                    Delete schedule

                    DELETE /schedules/{scheduleId}

                    Delete a Schedule

                    Request

                    Path parameters
                    scheduleId string<uuid> Required

                    ID of the Schedule.

                    Request example

                    curl --request DELETE \
                      --url https://enode-api.production.enode.io/schedules/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    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.

                    Request example

                    curl --request GET \
                      --url https://enode-api.production.enode.io/schedules/4eaeb363-296d-4ccc-a973-7805e6f400bd/status \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

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

                    {
                      "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
                        }
                      ],
                      "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?

                    Service health

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

                    List supported vendors per asset type

                    GET /integrations

                    Lists available vendors across asset types. The list of available vendors can be customized in your client. Learn more about vendors requiring activation.

                    Request

                    Query parameters
                    assetTypes string Optional

                    Default value: vehicle,charger,hvac,inverter,battery,meter

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/integrations?assetTypes=SOME_STRING_VALUE'

                    Response 200

                    Attributes (list of object)
                    • vendor string

                      Possible enum values:

                        TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMAZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERGTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOAFOREAPSYSTEMSCSISolarDeyeFOXESSFRONIUSGOODWEGROWATTHoymilesINVTSOFARSOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                    • displayName string

                      Possible enum values:

                        TeslaEnphaseGivEnergyHuaweiSolarEdgeSMAZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelbergTadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmoAforeAPsystemsCSISolarDeyeFOXESSFroniusGoodWeGrowattHoymilesINVTSofarSolArkSolaxSolisSolplanetSungrowSUNSYNKTSUNAcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                    • assetTypes array of string
                    • scopes array of string
                    • 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",
                        "assetTypes": [
                          "battery",
                          "charger",
                          "inverter",
                          "meter",
                          "vehicle"
                        ],
                        "scopes": [
                          "battery:control:operation_mode",
                          "battery:read:data",
                          "battery:read:location",
                          "charger:control:charging",
                          "charger:read:data",
                          "inverter:read:data",
                          "inverter:read:location",
                          "meter:read:data",
                          "meter:read:location",
                          "vehicle:control:charging",
                          "vehicle:read:data",
                          "vehicle:read:location"
                        ]
                      }
                    ]
                    Was this section helpful?

                    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:

                        ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                    • displayName string

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

                      Possible enum values:

                        ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
                    • 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:

                        ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                    • displayName string

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

                      Possible enum values:

                        AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                    • 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 battery vendorsBeta

                    GET /health/batteries

                    Lists the available battery 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:

                        TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMA
                    • displayName string

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

                      Possible enum values:

                        TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
                    • 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": "ENPHASE",
                        "displayName": "Enphase",
                        "portalName": "Enphase",
                        "status": "READY",
                        "linkingStatus": "READY"
                      },
                      {
                        "vendor": "HUAWEI",
                        "displayName": "Huawei",
                        "portalName": "Huawei",
                        "status": "READY",
                        "linkingStatus": "READY"
                      },
                      {
                        "vendor": "TESLA",
                        "displayName": "Tesla",
                        "portalName": "Tesla",
                        "status": "READY",
                        "linkingStatus": "READY"
                      }
                    ]
                    Was this section helpful?

                    Check available inverter vendors

                    GET /health/inverters

                    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:

                        AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                    • displayName string

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

                      Possible enum values:

                        AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                    • 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 vendorsBeta

                    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:

                        ENPHASEGIVENERGYHUAWEITESLASMASOLAREDGE
                    • displayName string

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

                      Possible enum values:

                        EnphaseGivEnergyHuaweiTeslaSMASolarEdge
                    • 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 a paginated list of all available Solar Inverters

                    Request

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/inverters?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes
                    • data array of object

                      Paginated list of solar inverters

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

                        Solar Inverter ID

                      • data[].userId string

                        The ID of the user that linked this inverter.

                      • data[].vendor string

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

                        Possible enum values:

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

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

                      • data[].isReachable boolean

                        Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                      • data[].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
                        • data[].productionState.productionRate number or null

                          The current production rate in kW.

                        • data[].productionState.isProducing boolean or null

                          Whether the solar inverter is actively producing energy or not.

                        • data[].productionState.totalLifetimeProduction number or null

                          The total lifetime production in kWh.

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

                          Time of last received production state update

                      • data[].timezone string or null

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

                      • data[].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
                        • data[].capabilities.productionState object

                          Full availability of productionState data.

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

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

                          • data[].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.

                        • data[].capabilities.productionStatistics object

                          Availability of production statistics directly from the vendor.

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

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

                          • data[].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.

                      • data[].scopes array of string

                        Scopes that the user has granted for this inverter.

                      • data[].information object

                        Descriptive information about the solar inverter

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

                          Solar inverter vendor ID

                        • data[].information.sn string or null

                          Solar inverter serial number

                        • data[].information.brand string

                          Solar inverter brand

                          Possible enum values:

                            AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                        • data[].information.model string

                          Solar inverter 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>

                          Solar inverter installation date

                      • data[].location object

                        Solar inverter's GPS coordinates

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

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

                        • data[].location.longitude number or null

                          Longitude in degrees

                        • data[].location.latitude number or null

                          Latitude in degrees

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

                          Time of last received location state update

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

                    List user solar inverters

                    GET /users/{userId}/inverters

                    Request

                    Path parameters
                    userId string Required

                    ID of the User.

                    Query parameters
                    after string Optional
                    before string Optional
                    pageSize integer Optional

                    Default value: 50

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/inverters?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50'

                    Response 200

                    Attributes
                    • data array of object

                      Paginated list of solar inverters

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

                        Solar Inverter ID

                      • data[].userId string

                        The ID of the user that linked this inverter.

                      • data[].vendor string

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

                        Possible enum values:

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

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

                      • data[].isReachable boolean

                        Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                      • data[].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
                        • data[].productionState.productionRate number or null

                          The current production rate in kW.

                        • data[].productionState.isProducing boolean or null

                          Whether the solar inverter is actively producing energy or not.

                        • data[].productionState.totalLifetimeProduction number or null

                          The total lifetime production in kWh.

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

                          Time of last received production state update

                      • data[].timezone string or null

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

                      • data[].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
                        • data[].capabilities.productionState object

                          Full availability of productionState data.

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

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

                          • data[].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.

                        • data[].capabilities.productionStatistics object

                          Availability of production statistics directly from the vendor.

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

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

                          • data[].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.

                      • data[].scopes array of string

                        Scopes that the user has granted for this inverter.

                      • data[].information object

                        Descriptive information about the solar inverter

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

                          Solar inverter vendor ID

                        • data[].information.sn string or null

                          Solar inverter serial number

                        • data[].information.brand string

                          Solar inverter brand

                          Possible enum values:

                            AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                        • data[].information.model string

                          Solar inverter 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>

                          Solar inverter installation date

                      • data[].location object

                        Solar inverter's GPS coordinates

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

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

                        • data[].location.longitude number or null

                          Longitude in degrees

                        • data[].location.latitude number or null

                          Latitude in degrees

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

                          Time of last received location state update

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

                    Get solar inverter

                    GET /inverters/{inverterId}

                    Request

                    Path parameters
                    inverterId string<uuid> Required

                    ID of the solar inverter

                    Request example

                    curl --request GET \
                      --url https://enode-api.production.enode.io/inverters/54d827e1-8355-4fed-97b5-55940d1d09ba

                    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:

                        AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                    • lastSeen string<date-time>

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

                    • isReachable boolean

                      Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                    • 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

                    • timezone string or null

                      IANA TZ database timezone name representing the location of 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.

                    • scopes array of string

                      Scopes that the user has granted for this inverter.

                    • information object

                      Descriptive information about the solar inverter

                      Show child attributes
                      • information.id string

                        Solar inverter vendor ID

                      • information.sn string or null

                        Solar inverter serial number

                      • information.brand string

                        Solar inverter brand

                        Possible enum values:

                          AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                      • 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.id string<uuid> or null

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

                      • 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 state update

                    Response example

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

                    Request example

                    curl --request POST \
                      --url https://enode-api.production.enode.io/inverters/54d827e1-8355-4fed-97b5-55940d1d09ba/refresh-hint \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 204

                    Refresh hint registered successfully.

                    Response 404

                    The specified inverter was not found.

                    Was this section helpful?

                    Get inverter statisticsBeta

                    GET /inverters/{inverterId}/statistics

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

                    Request a day of data by specifying year, month, and day, or a month of data by specifying only year and month.

                    Intervals are given in the local time of the inverter. For example, year=2024&month=05&day=05 for an inverter in the Australia/Adelaide timezone will return data between 2024-05-05T00:00:00+09:30 and 2024-05-06T00:00:00+09:30.

                    The resolutions in the response depend on the interval size requested. For a month interval, the resolution is DAY. For a day interval, the resolution is QUARTER_HOUR.

                    Pre-linking data is available shortly after linking. 30 days before the linking date at QUARTER_HOUR resolution. 3 months before linking date at DAY resolution.

                    Webhooks: Whenever data is backfilled or updated a user:inverter:statistics-updated webhook event will be emitted.

                    Request

                    Path parameters
                    inverterId string<uuid> Required

                    ID of the solar inverter

                    Query parameters
                    year integer Required
                    month integer Required
                    day integer Optional

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/inverters/54d827e1-8355-4fed-97b5-55940d1d09ba/statistics?year=2024&month=10&day=1' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Success. All data is final, and is not likely to change.

                    Attributes
                    • timezone string

                      The timezone of the inverter.

                    • resolutions object
                      Show child attributes
                      • resolutions.QUARTER_HOUR object
                        Show child attributes
                        • resolutions.QUARTER_HOUR.unit string

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

                          Possible enum values:

                            kWh
                        • resolutions.QUARTER_HOUR.data array of object or null

                          An array of data points representing the power production statistics.

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

                            Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                          • resolutions.QUARTER_HOUR.data[].value number or null

                            The energy produced (kWh) in the specified interval. Null if no data is available.

                      • resolutions.DAY object
                        Show child attributes
                        • resolutions.DAY.unit string

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

                          Possible enum values:

                            kWh
                        • resolutions.DAY.data array of object or null

                          An array of data points representing the power production statistics.

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

                            Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                          • resolutions.DAY.data[].value number or null

                            The energy produced (kWh) in the specified interval. Null if no data is available.

                    Response example

                    {
                      "timezone": "Europe/Oslo",
                      "resolutions": {
                        "QUARTER_HOUR": {
                          "unit": "kWh",
                          "data": [
                            {
                              "date": "2021-01-19T00:15:00+01:00",
                              "value": 1.1
                            }
                          ]
                        },
                        "DAY": {
                          "unit": "kWh",
                          "data": [
                            {
                              "date": "2021-01-19T00:15:00+01:00",
                              "value": 1.1
                            }
                          ]
                        }
                      }
                    }

                    Response 202

                    Success. Some of the returned data is likely to change in the future. For example, if you request an interval ending in the future. Persist the data, and retry after the specified time. You'll also receive a webhook user:inverter:statistics-updated event when the data changes.

                    Attributes
                    • timezone string

                      The timezone of the inverter.

                    • resolutions object
                      Show child attributes
                      • resolutions.QUARTER_HOUR object
                        Show child attributes
                        • resolutions.QUARTER_HOUR.unit string

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

                          Possible enum values:

                            kWh
                        • resolutions.QUARTER_HOUR.data array of object or null

                          An array of data points representing the power production statistics.

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

                            Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                          • resolutions.QUARTER_HOUR.data[].value number or null

                            The energy produced (kWh) in the specified interval. Null if no data is available.

                      • resolutions.DAY object
                        Show child attributes
                        • resolutions.DAY.unit string

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

                          Possible enum values:

                            kWh
                        • resolutions.DAY.data array of object or null

                          An array of data points representing the power production statistics.

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

                            Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                          • resolutions.DAY.data[].value number or null

                            The energy produced (kWh) in the specified interval. Null if no data is available.

                    • retryAfter string<date-time>

                      Wait until this time or later before retrying the request.

                    Response example

                    {
                      "timezone": "Europe/Oslo",
                      "resolutions": {
                        "QUARTER_HOUR": {
                          "unit": "kWh",
                          "data": [
                            {
                              "date": "2021-01-19T00:15:00+01:00",
                              "value": 1.1
                            }
                          ]
                        },
                        "DAY": {
                          "unit": "kWh",
                          "data": [
                            {
                              "date": "2021-01-19T00:15:00+01:00",
                              "value": 1.1
                            }
                          ]
                        }
                      },
                      "retryAfter": "2020-04-07T17:04:26Z"
                    }

                    Response 400

                    Bad Request

                    Response 404

                    Not Found

                    Was this section helpful?

                    Statistics

                    Endpoints returning timeseries data collected from linked devices.

                    Get user statistics on charging sessions

                    GET /users/{userId}/statistics/charging/sessions

                    Returns statistics about power consumption and price, binned by sessions for a single user and device, at a location. A session is defined by consecutive readings from the device showing consumption. It can typically take up to 15 minutes between a session ending in reality, and being reflected by this endpoint.

                    Request

                    Path parameters
                    userId string Required

                    The ID of the user

                    Query parameters
                    startDate string<date-time> Required

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

                    endDate string<date-time> Optional

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

                    locationId string<uuid> Optional

                    The ID of the location for which to fetch statistics

                    id string Optional

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

                    type string Required

                    The device types for which statistics can be obtained.

                    Possible enum values:

                      chargervehiclehvac

                    Request example

                    curl --request GET \
                      --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/statistics/charging/sessions?startDate=2020-04-07T17%3A04%3A26Z&endDate=2020-04-07T17%3A04%3A26Z&locationId=4eaeb363-296d-4ccc-a973-7805e6f400bd&id=SOME_STRING_VALUE&type=SOME_STRING_VALUE' \
                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                    Response 200

                    Attributes (list of object)
                    • kw object

                      Aggregate statistics in kW for the session

                      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 session

                    • price object

                      Aggregate per kWh price statistics for the session. 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.

                    • locationId string<uuid> or null

                      Location ID for this session.

                    • from string<date-time>

                      Start time of the session.

                    • to string<date-time>

                      End time of the session.

                    • 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. 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
                      • nonSmartPrice.min number or null

                        The minimum amount for this period.

                      • nonSmartPrice.max number or null

                        The maximum amount for this period.

                      • nonSmartPrice.mean number or null

                        The average for this period.

                    • 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

                    Response example

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

                    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.

                    • issues array of object

                      A list of validation issues which ocurred while validating some component of the network payload.

                      Show child attributes

                      Response example

                      {
                        "type": "https://developers.enode.com/api/problems/not-found",
                        "title": "Not Found",
                        "detail": "The requested asset wasn't found."
                      }
                      Was this section helpful?

                      Get user charging statistics

                      GET /users/{userId}/statistics/charging

                      Get statistics about power consumption and price in the form of a time series for a single device.

                      If Smart Charging has shifted the consumption, the nonSmartPrice 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.

                      Request

                      Path parameters
                      userId string Required

                      The ID of the User

                      Query parameters
                      startDate string<date-time> Required

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

                      endDate string<date-time> Optional

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

                      locationId string<uuid> Optional

                      The ID of the location for which to fetch statistics

                      id string Optional

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

                      type string Required

                      The device types for which statistics can be obtained.

                      Possible enum values:

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

                      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

                      Request example

                      curl --request GET \
                        --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/statistics/charging?startDate=2020-04-07T17%3A04%3A26Z&endDate=2020-04-07T17%3A04%3A26Z&locationId=4eaeb363-296d-4ccc-a973-7805e6f400bd&id=SOME_STRING_VALUE&type=SOME_STRING_VALUE&utcOffset=-8&resolution=SOME_STRING_VALUE' \
                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                      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 per kWh price statistics for the time bucket if Smart Charging has actively stopped consumption from occurring during this resolution. This can be used to show the potential price if Smart Charging had not been active. 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
                        • nonSmartPrice.min number or null

                          The minimum amount for this period.

                        • nonSmartPrice.max number or null

                          The maximum amount for this period.

                        • nonSmartPrice.mean number or null

                          The average for this period.

                      • estimatedSavings number or null

                        Total estimated savings achieved by Smart Charging for this resolution. If null, no part of this resolution was impacted by Smart Charging. 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

                      • date string<date-time>

                        The timestamp that represents the start of this resolution

                      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
                          },
                          "costSum": 3.14,
                          "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.

                      • issues array of object

                        A list of validation issues which ocurred while validating some component of the network payload.

                        Show child attributes

                        Response example

                        {
                          "type": "https://developers.enode.com/api/problems/not-found",
                          "title": "Not Found",
                          "detail": "The requested asset wasn't found."
                        }
                        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

                        Request example

                        curl --request GET \
                          --url https://enode-api.production.enode.io/tariffs/%7BtariffId%7D \
                          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                        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)

                        Request example

                        curl --request PUT \
                          --url https://enode-api.production.enode.io/tariffs/%7BtariffId%7D \
                          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                          --header 'content-type: application/json' \
                          --data '[{"name":"PEAK","cost":"13.37"},{"name":"OFF-PEAK","cost":"12.34"}]'

                        Response 204

                        Successfully updated.

                        Was this section helpful?

                        Link tariff to location

                        PUT /locations/{locationId}/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
                        locationId string<uuid> Required

                        ID of the Location.

                        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.

                        Request example

                        curl --request PUT \
                          --url https://enode-api.production.enode.io/locations/4eaeb363-296d-4ccc-a973-7805e6f400bd/tariff \
                          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                          --header 'content-type: application/json' \
                          --data '{"tariffId":"string","tariffIntervals":[{"name":"OFF-PEAK-WEEKDAY","from":"00:00","to":"12:00","weekdays":[0,1,2,3,4]},{"name":"PEAK-WEEKDAY","from":"12:00","to":"24:00","weekdays":[0,1,2,3,4]},{"name":"OFF-PEAK-WEEKEND","weekdays":[5,6],"from":"00:00","to":"06:00"},{"name":"PEAK-WEEKEND","weekdays":[5,6],"from":"06:00","to":"24:00"}]}'

                        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.

                        • issues array of object

                          A list of validation issues which ocurred while validating some component of the network payload.

                          Show child attributes

                          Response example

                          {
                            "type": "https://developers.enode.com/api/problems/not-found",
                            "title": "Not Found",
                            "detail": "The requested asset wasn't found."
                          }

                          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.

                          • issues array of object

                            A list of validation issues which ocurred while validating some component of the network payload.

                            Show child attributes

                            Response example

                            {
                              "type": "https://developers.enode.com/api/problems/not-found",
                              "title": "Not Found",
                              "detail": "The requested asset wasn't found."
                            }
                            Was this section helpful?

                            Get tariff schedule

                            GET /locations/{locationId}/tariff

                            Get the tariff schedule linked to a location.

                            Request

                            Path parameters
                            locationId string<uuid> Required

                            ID of the Location.

                            Request example

                            curl --request GET \
                              --url https://enode-api.production.enode.io/locations/4eaeb363-296d-4ccc-a973-7805e6f400bd/tariff \
                              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                            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.

                            • issues array of object

                              A list of validation issues which ocurred while validating some component of the network payload.

                              Show child attributes

                              Response example

                              {
                                "type": "https://developers.enode.com/api/problems/not-found",
                                "title": "Not Found",
                                "detail": "The requested asset wasn't found."
                              }
                              Was this section helpful?

                              User management

                              Endpoints used to link and unlink users or vendors.

                              List users

                              GET /users

                              Returns a paginated list of all users.

                              Request

                              Query parameters
                              after string Optional
                              before string Optional
                              pageSize integer Optional

                              Default value: 50

                              Request example

                              curl --request GET \
                                --url 'https://enode-api.production.enode.io/users?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                              Response 200

                              Paginated list of users. Use query parameters to retrieve more results.

                              Attributes
                              • data array of object

                                Paginated list of users.

                                Show child attributes
                                • data[].id string

                                  ID of the user.

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

                                  ISO8601 UTC timestamp

                                • data[].scopes array of string Deprecated

                                  Scopes for the user.

                              • 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": "ad84e742-0f46-4cf4-b0db-7d890f8f23f5",
                                    "createdAt": "2020-04-07T17:04:26Z",
                                    "scopes": [
                                      "all"
                                    ]
                                  }
                                ],
                                "pagination": {
                                  "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                                  "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                                }
                              }
                              Was this section helpful?

                              Get user

                              GET /users/{userId}

                              Returns metadata about the given User ID, including a list of vendors for which the User has provided credentials.

                              Request

                              Path parameters
                              userId string Required

                              ID of the User.

                              Request example

                              curl --request GET \
                                --url https://enode-api.production.enode.io/users/%7BuserId%7D \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                              Response 200

                              Attributes
                              • id string

                                The user's ID.

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

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

                                  Possible enum values:

                                    AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                                • 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?

                              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

                              ID of the User.

                              Request example

                              curl --request DELETE \
                                --url https://enode-api.production.enode.io/users/%7BuserId%7D \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                              Response 204

                              No Content

                              Was this section helpful?

                              Disconnect vendor

                              DELETE /users/{userId}/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.

                              Request

                              Path parameters
                              userId string Required

                              ID of the User.

                              vendor object Required

                              Vendor to be unlinked.

                              Possible enum values:

                                AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG

                              Request example

                              curl --request DELETE \
                                --url https://enode-api.production.enode.io/users/%7BuserId%7D/vendors/TESLA \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                              Response 204

                              No Content

                              Was this section helpful?

                              Disconnect vendor type

                              DELETE /users/{userId}/vendors/{vendor}/{vendorType}

                              Disconnect a specific vendor type from the User's account. Assets of this type from that Vendor will be removed. If no other types from that vendor remain, all its stored data will be deleted.

                              Request

                              Path parameters
                              userId string Required

                              ID of the User.

                              vendor object Required

                              Vendor to be unlinked.

                              Possible enum values:

                                AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                              vendorType string Required

                              Possible enum values:

                                vehiclechargerhvacinverterbatterymeter

                              Request example

                              curl --request DELETE \
                                --url https://enode-api.production.enode.io/users/%7BuserId%7D/vendors/TESLA/vehicle \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                              Response 204

                              No Content

                              Was this section helpful?
                              POST /users/{userId}/link

                              Creates a short-lived (24 hours), single-use device linking session. Use the returned linkUrl to present Link UI to your user via mobile in-app browsers or web redirects, or use the linkToken to present Link UI via the Link SDKs.

                              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

                                By specifying a vendor, the brand selection step in Link UI will be skipped. Instead, your user will go directly to the service selection view (if applicable for the specified vendor), or to the review data access step.

                                Possible enum values:

                                  AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                              • vendorType string Optional

                                Sets the asset type your user can link through Link UI within the linking session. The brand selection step selection step will show vendors available for the specified asset type. If absent, the type(s) of assets that will be linked are inferred from the scope(s) requested.

                                Possible enum values:

                                  vehiclechargerhvacinverterbatterymeter
                              • scopes array of string Required

                                The scope(s) you wish to request access to when linking an asset (learn more). The scopes will be presented for user consent in Link UI in the review data access step. The <assetType>:read:data scope is required for any asset type (e.g. if you wish to link a battery, you must request battery:read:data).

                              • language string Required

                                Sets the language for Link UI. We recommend matching this to the language of your application. If your language is not yet supported, you can specify browser which will assess your user's browser language via the Accept-Language header (learn more). Passing in browser will fall back to en-US if no match is found.

                                Possible enum values:

                                  browserda-DKde-DEen-USen-GBes-ESfi-FIfr-FRit-ITnb-NOnl-NLnl-BEpt-PTro-ROsv-SE
                              • redirectUri string<uri> Required

                                The URI your user will be redirected to after clicking "Complete" at the linking flow (from the last step in the Link UI flow). Only used in Link UI sessions that were not opened via the Link SDKs.

                              • colorScheme string Optional

                                Sets the color scheme (light or dark) of Link UI. If your UI is only available in one of the color schemes, and does not follow the operating system color scheme, we recommend setting either light or dark. Defaults to system, which follows the users operating system settings.

                                Default value: system

                                Possible enum values:

                                  systemlightdark

                              Request example

                              curl --request POST \
                                --url https://enode-api.production.enode.io/users/%7BuserId%7D/link \
                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                --header 'content-type: application/json' \
                                --data '{"vendor":"VOLKSWAGEN","vendorType":"vehicle","language":"en-GB","scopes":["vehicle:read:data","vehicle:control:charging"],"redirectUri":"https://myapp.com/callback/enode","colorScheme":"light"}'

                              Response 200

                              Attributes

                              Response example

                              {
                                "linkUrl": "https://link.enode.com/YzIwZThhYjYtMjMzMi00ZTAyLTg0OTYtYzdjOTlhZTY3Zjc3QDI2YzI1MDExLTdhYTctNGE2NS1iNjBmLTZmMzc5NmRhODUyMDowNDViYjFiYmE0M2Y5NDU5YTc5OTgxZmEyYTg1NmI4YzhkOGU4YjgyNmNmMzQzZmFmMGNhZTlmNDBjMmZmOTgy",
                                "linkToken": "U2FtcGxlIFNESyB0b2tlbgpTYW1wbGUgU0RLIHRva2VuClNhbXBsZSBTREsgdG9rZW4KU2FtcGxlIFNESyB0b2tlbg=="
                              }

                              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.

                              • issues array of object

                                A list of validation issues which ocurred while validating some component of the network payload.

                                Show child attributes

                                Response example

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

                                Creates a short-lived (24 hours), single-use device linking session specifically tailored for relinking. See our relinking guide for more details. Use the returned linkUrl to present Link UI to your user via mobile in-app browsers or web redirects, or use the linkToken to present Link UI via the Link SDKs.

                                Request

                                Path parameters
                                assetId string Required

                                The ID of the already linked asset to relink.

                                Attributes
                                • language string Required

                                  Sets the language for Link UI. We recommend matching this to the language of your application. If your language is not yet supported, you can specify browser which will assess your user's browser language via the Accept-Language header (learn more). Passing in browser will fall back to en-US if no match is found.

                                  Possible enum values:

                                    browserda-DKde-DEen-USen-GBes-ESfi-FIfr-FRit-ITnb-NOnl-NLnl-BEpt-PTro-ROsv-SE
                                • redirectUri string<uri> Required

                                  The URI your user will be redirected to after clicking "Complete" at the linking flow (from the last step in the Link UI flow). Only used in Link UI sessions that were not opened via the Link SDKs.

                                • colorScheme string Optional

                                  Sets the color scheme (light or dark) of Link UI. If your UI is only available in one of the color schemes, and does not follow the operating system color scheme, we recommend setting either light or dark. Defaults to system, which follows the users operating system settings.

                                  Default value: system

                                  Possible enum values:

                                    systemlightdark

                                Request example

                                curl --request POST \
                                  --url https://enode-api.production.enode.io/assets/%7BassetId%7D/relink \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                  --header 'content-type: application/json' \
                                  --data '{"language":"browser","redirectUri":"https://myapp.com/callback/enode","colorScheme":"light"}'

                                Response 200

                                Response 400

                                Asset not found or already linked

                                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

                                ID of the User.

                                Request example

                                curl --request DELETE \
                                  --url https://enode-api.production.enode.io/users/%7BuserId%7D/authorization \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                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

                                Returns a paginated list of all available Vehicles

                                Request

                                Query parameters
                                after string Optional
                                before string Optional
                                pageSize integer Optional

                                Default value: 50

                                Request example

                                curl --request GET \
                                  --url 'https://enode-api.production.enode.io/vehicles?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                Response 200

                                Attributes
                                • data array of object
                                  Show child attributes
                                  • data[].id string

                                    Vehicle ID

                                  • data[].userId string

                                    The ID of the user that linked this vehicle.

                                  • data[].vendor string

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

                                    Possible enum values:

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

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

                                  • data[].isReachable boolean or null

                                    Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

                                  • data[].information object

                                    Descriptive information about the Vehicle.

                                    Show child attributes
                                    • data[].information.vin string or null

                                      Vehicle VIN

                                    • data[].information.brand string or null

                                      Vehicle brand

                                      Possible enum values:

                                        AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                    • data[].information.model string or null

                                      Vehicle model

                                    • data[].information.year number or null

                                      Vehicle production year

                                    • data[].information.displayName string or null

                                      User-defined vehicle nickname.

                                  • data[].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
                                    • data[].chargeState.batteryLevel number or null

                                      Remaining battery in percent

                                    • data[].chargeState.range number or null

                                      Estimated remaining kilometers

                                    • data[].chargeState.isPluggedIn boolean or null

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

                                    • data[].chargeState.isCharging boolean or null

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

                                    • data[].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.

                                    • data[].chargeState.batteryCapacity number or null

                                      Vehicle's usable battery capacity in kWh.

                                    • data[].chargeState.chargeLimit number or null

                                      Charge limit, as a percent of batteryCapacity.

                                      When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                    • data[].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.

                                    • data[].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.

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

                                      Time of last received charge state update

                                    • data[].chargeState.maxCurrent number or null

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

                                    • data[].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.
                                      • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                      Possible enum values:

                                        UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                  • data[].smartChargingPolicy object

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

                                    Show child attributes
                                    • data[].smartChargingPolicy.isEnabled boolean

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

                                    • data[].smartChargingPolicy.deadline string or null

                                      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 location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                                    • data[].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.

                                  • data[].odometer object

                                    Vehicle's odometer reading in kilometers with timestamp

                                    Show child attributes
                                    • data[].odometer.distance number or null

                                      Odometer in kilometers

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

                                      Time of the last odometer update, in kilometers

                                  • data[].capabilities object

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

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

                                      Full availability of information data.

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

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

                                      • data[].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.

                                    • data[].capabilities.chargeState object

                                      Full availability of chargeState data.

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

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

                                      • data[].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.

                                    • data[].capabilities.location object

                                      Full availability of location data.

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

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

                                      • data[].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.

                                    • data[].capabilities.odometer object

                                      Full availability of odometer data.

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

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

                                      • data[].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.

                                    • data[].capabilities.setMaxCurrent object

                                      Supports setting the maximum charge current.

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

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

                                      • data[].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.

                                    • data[].capabilities.startCharging object

                                      Supports START charging command.

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

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

                                      • data[].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.

                                    • data[].capabilities.stopCharging object

                                      Supports STOP charging command.

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

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

                                      • data[].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.

                                    • data[].capabilities.smartCharging object

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

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

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

                                      • data[].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.

                                  • data[].scopes array of string

                                    Scopes that the user has granted for this vehicle.

                                  • data[].location object

                                    Vehicle's GPS coordinates with timestamp

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

                                      Longitude in degrees

                                    • data[].location.latitude number or null

                                      Latitude in degrees

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

                                      Time of last received location

                                    • data[].location.id string<uuid> or null

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

                                • 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": "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": true,
                                        "deadline": "07:00",
                                        "minimumChargeLimit": 0
                                      },
                                      "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"
                                      ],
                                      "location": {
                                        "longitude": 10.7197486,
                                        "latitude": 59.9173985,
                                        "lastUpdated": "2024-01-07T17:04:26.000Z",
                                        "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                      }
                                    }
                                  ],
                                  "pagination": {
                                    "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                                    "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                                  }
                                }
                                Was this section helpful?

                                List user vehicles

                                GET /users/{userId}/vehicles

                                Paginated list of user vehicles.

                                Request

                                Path parameters
                                userId string Required

                                ID of the User.

                                Query parameters
                                after string Optional
                                before string Optional
                                pageSize integer Optional

                                Default value: 50

                                Request example

                                curl --request GET \
                                  --url 'https://enode-api.production.enode.io/users/%7BuserId%7D/vehicles?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                Response 200

                                Attributes
                                • data array of object
                                  Show child attributes
                                  • data[].id string

                                    Vehicle ID

                                  • data[].userId string

                                    The ID of the user that linked this vehicle.

                                  • data[].vendor string

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

                                    Possible enum values:

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

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

                                  • data[].isReachable boolean or null

                                    Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

                                  • data[].information object

                                    Descriptive information about the Vehicle.

                                    Show child attributes
                                    • data[].information.vin string or null

                                      Vehicle VIN

                                    • data[].information.brand string or null

                                      Vehicle brand

                                      Possible enum values:

                                        AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                    • data[].information.model string or null

                                      Vehicle model

                                    • data[].information.year number or null

                                      Vehicle production year

                                    • data[].information.displayName string or null

                                      User-defined vehicle nickname.

                                  • data[].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
                                    • data[].chargeState.batteryLevel number or null

                                      Remaining battery in percent

                                    • data[].chargeState.range number or null

                                      Estimated remaining kilometers

                                    • data[].chargeState.isPluggedIn boolean or null

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

                                    • data[].chargeState.isCharging boolean or null

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

                                    • data[].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.

                                    • data[].chargeState.batteryCapacity number or null

                                      Vehicle's usable battery capacity in kWh.

                                    • data[].chargeState.chargeLimit number or null

                                      Charge limit, as a percent of batteryCapacity.

                                      When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                    • data[].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.

                                    • data[].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.

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

                                      Time of last received charge state update

                                    • data[].chargeState.maxCurrent number or null

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

                                    • data[].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.
                                      • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                      Possible enum values:

                                        UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                  • data[].smartChargingPolicy object

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

                                    Show child attributes
                                    • data[].smartChargingPolicy.isEnabled boolean

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

                                    • data[].smartChargingPolicy.deadline string or null

                                      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 location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                                    • data[].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.

                                  • data[].odometer object

                                    Vehicle's odometer reading in kilometers with timestamp

                                    Show child attributes
                                    • data[].odometer.distance number or null

                                      Odometer in kilometers

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

                                      Time of the last odometer update, in kilometers

                                  • data[].capabilities object

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

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

                                      Full availability of information data.

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

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

                                      • data[].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.

                                    • data[].capabilities.chargeState object

                                      Full availability of chargeState data.

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

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

                                      • data[].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.

                                    • data[].capabilities.location object

                                      Full availability of location data.

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

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

                                      • data[].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.

                                    • data[].capabilities.odometer object

                                      Full availability of odometer data.

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

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

                                      • data[].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.

                                    • data[].capabilities.setMaxCurrent object

                                      Supports setting the maximum charge current.

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

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

                                      • data[].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.

                                    • data[].capabilities.startCharging object

                                      Supports START charging command.

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

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

                                      • data[].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.

                                    • data[].capabilities.stopCharging object

                                      Supports STOP charging command.

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

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

                                      • data[].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.

                                    • data[].capabilities.smartCharging object

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

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

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

                                      • data[].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.

                                  • data[].scopes array of string

                                    Scopes that the user has granted for this vehicle.

                                  • data[].location object

                                    Vehicle's GPS coordinates with timestamp

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

                                      Longitude in degrees

                                    • data[].location.latitude number or null

                                      Latitude in degrees

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

                                      Time of last received location

                                    • data[].location.id string<uuid> or null

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

                                • 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": "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": true,
                                        "deadline": "07:00",
                                        "minimumChargeLimit": 0
                                      },
                                      "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"
                                      ],
                                      "location": {
                                        "longitude": 10.7197486,
                                        "latitude": 59.9173985,
                                        "lastUpdated": "2024-01-07T17:04:26.000Z",
                                        "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                      }
                                    }
                                  ],
                                  "pagination": {
                                    "after": "MjAyMy0wNy0xOFQxMDowODowMi4zNzNa",
                                    "before": "MjAyMy0wNi0xNlQwOTowMzowMS4yNjJa"
                                  }
                                }
                                Was this section helpful?

                                Get vehicle

                                GET /vehicles/{vehicleId}

                                Request

                                Path parameters
                                vehicleId string Required

                                ID of the Vehicle.

                                Request example

                                curl --request GET \
                                  --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5 \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                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:

                                    ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                • lastSeen string<date-time>

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

                                • isReachable boolean or null

                                  Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

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

                                      AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                  • 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 charger 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.

                                    When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                  • 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.
                                    • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                    Possible enum values:

                                      UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                • 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

                                  • smartChargingPolicy.deadline string or null

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

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

                                • 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

                                  • location.id string<uuid> or null

                                    ID of the 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": true,
                                    "deadline": "07:00",
                                    "minimumChargeLimit": 0
                                  },
                                  "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"
                                  ],
                                  "location": {
                                    "longitude": 10.7197486,
                                    "latitude": 59.9173985,
                                    "lastUpdated": "2024-01-07T17:04:26.000Z",
                                    "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                  }
                                }
                                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

                                Request example

                                curl --request POST \
                                  --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/charging \
                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                  --header 'content-type: application/json' \
                                  --data '{"action":"START"}'

                                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.

                                • issues array of object

                                  A list of validation issues which ocurred while validating some component of the network payload.

                                  Show child attributes

                                  Response example

                                  {
                                    "type": "https://developers.enode.com/api/problems/not-found",
                                    "title": "Not Found",
                                    "detail": "The requested asset wasn't found."
                                  }

                                  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.

                                  • issues array of object

                                    A list of validation issues which ocurred while validating some component of the network payload.

                                    Show child attributes

                                    Response example

                                    {
                                      "type": "https://developers.enode.com/api/problems/not-found",
                                      "title": "Not Found",
                                      "detail": "The requested asset wasn't found."
                                    }
                                    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

                                    Request example

                                    curl --request POST \
                                      --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/max-current \
                                      --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                      --header 'content-type: application/json' \
                                      --data '{"maxCurrent":10}'

                                    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.

                                    • issues array of object

                                      A list of validation issues which ocurred while validating some component of the network payload.

                                      Show child attributes

                                      Response example

                                      {
                                        "type": "https://developers.enode.com/api/problems/not-found",
                                        "title": "Not Found",
                                        "detail": "The requested asset wasn't found."
                                      }
                                      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.

                                      Request example

                                      curl --request GET \
                                        --url https://enode-api.production.enode.io/vehicles/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                      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.

                                      Request example

                                      curl --request POST \
                                        --url https://enode-api.production.enode.io/vehicles/actions/4eaeb363-296d-4ccc-a973-7805e6f400bd/cancel \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                      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.

                                      Request example

                                      curl --request POST \
                                        --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/refresh-hint \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                      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 object<uuid> Required

                                      ID of the Smart Charging Plan

                                      Possible enum values:

                                        latest

                                      Request example

                                      curl --request GET \
                                        --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-charging-plans/latest \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

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

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

                                      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"
                                      }
                                      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.

                                      Request example

                                      curl --request GET \
                                        --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-charging-policy \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                      Response 200

                                      Attributes
                                      • isEnabled boolean

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

                                      • deadline string or null

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

                                      Response example

                                      {
                                        "isEnabled": true,
                                        "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 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

                                      Request example

                                      curl --request PUT \
                                        --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-charging-policy \
                                        --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                        --header 'content-type: application/json' \
                                        --data '{"isEnabled":false,"deadline":"07:00","minimumChargeLimit":0}'

                                      Response 200

                                      Attributes
                                      • isEnabled boolean

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

                                      • deadline string or null

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

                                      Response example

                                      {
                                        "isEnabled": true,
                                        "deadline": "07:00",
                                        "minimumChargeLimit": 0
                                      }

                                      Response 400

                                      Bad Request. For example: another user has activated smart charging for the same vehicle, missing deadline, maxChargeLimit < minChargeLimit, minChargeLimit below threshold for vendor or user does not have a price area or tariffs.

                                      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.

                                      • issues array of object

                                        A list of validation issues which ocurred while validating some component of the network payload.

                                        Show child attributes

                                        Response example

                                        {
                                          "type": "https://developers.enode.com/api/problems/bad-request",
                                          "title": "Cannot activate smart charging",
                                          "detail": "Another user already has smart charging enabled for this vehicle"
                                        }
                                        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.

                                        Request example

                                        curl --request POST \
                                          --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-override \
                                          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                        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:

                                            ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERGENPHASEGIVENERGYHUAWEISOLAREDGESMA

                                        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.

                                        Request example

                                        curl --request DELETE \
                                          --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-override \
                                          --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                        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:

                                            ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERGENPHASEGIVENERGYHUAWEISOLAREDGESMA

                                        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.

                                        • issues array of object

                                          A list of validation issues which ocurred while validating some component of the network payload.

                                          Show child attributes

                                          Response example

                                          {
                                            "type": "https://developers.enode.com/api/problems/not-found",
                                            "title": "Not Found",
                                            "detail": "The requested asset wasn't found."
                                          }
                                          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.

                                          Request example

                                          curl --request GET \
                                            --url https://enode-api.production.enode.io/vehicles/ad84e742-0f46-4cf4-b0db-7d890f8f23f5/smart-charging-status \
                                            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                          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:

                                              ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                          • state string

                                            An enum value that describes the current Smart Charging state of the vehicle. Every vehicle is in exactly one state, at all times. If the returned state is UNKNOWN, this might indicate that the vehicle is no longer capable of smart charging. In this case we recommend that you check the capabilities of the vehicle to determine what should be communicated to users. If we don't have pricing data or tariffs for the location of the vehicle, the state will also be UNKNOWN. In this case, we recommend that you contact Enode staff.

                                            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_CHANGEDFULLY_CHARGED
                                          • stateChangedAt string<date-time>

                                            Time when the state property transitioned to its current value

                                          • consideration object or null
                                            Show child attributes
                                            • consideration.isPluggedIn boolean

                                              The vehicle is plugged in

                                            • consideration.isCharging boolean

                                              The vehicle is charging

                                            • consideration.atChargingLocation boolean

                                              The vehicle is located at a configured Charging Location

                                            • consideration.hasTimeEstimate boolean

                                              A good estimate is available of how much time it will take to charge.

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

                                                ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                            • 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
                                          • 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": "PLAN:EXECUTING:STARTING",
                                            "stateChangedAt": "2020-04-07T17:04:26Z",
                                            "consideration": {
                                              "isPluggedIn": true,
                                              "isCharging": true,
                                              "atChargingLocation": true,
                                              "hasTimeEstimate": 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"
                                            },
                                            "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

                                          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:inverter:statistics-updated, 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-10-01, 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.

                                          Request example

                                          curl --request POST \
                                            --url https://enode-api.production.enode.io/webhooks \
                                            --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                            --header 'content-type: application/json' \
                                            --data '{"url":"https://example.com/enode-webhooks/firehose","secret":"0Kvs1tAUQ69FOMBiWlt5XJSrruXMhWDiVbyrWaNm","events":["user:vehicle:discovered","user:vehicle:updated","user:vehicle:deleted"],"apiVersion":"2024-10-01","authentication":{"headerName":"x-api-key","headerValue":"AOIxcVLKxR2VpzlN5HIk14oPu80"}}'

                                          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<date-time>

                                            Time when a delivery to this webhook was last successful.

                                          • isActive boolean

                                            Indicates whether the webhook is active or not.

                                          • createdAt string<date-time>

                                            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": "2023-08-14T13:01:00.000",
                                            "isActive": true,
                                            "createdAt": "2023-08-14T13:01:00.000",
                                            "apiVersion": "2024-10-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.

                                          • issues array of object

                                            A list of validation issues which ocurred while validating some component of the network payload.

                                            Show child attributes

                                            Response example

                                            {
                                              "type": "https://developers.enode.com/api/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

                                            Request example

                                            curl --request GET \
                                              --url 'https://enode-api.production.enode.io/webhooks?after=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&before=MjAyMy0wNy0xOFQxMDowODowMi4zNzNa&pageSize=50' \
                                              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                            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<date-time>

                                                Time when a delivery to this webhook was last successful.

                                              • data[].isActive boolean

                                                Indicates whether the webhook is active or not.

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

                                                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": "2023-08-14T13:01:00.000",
                                                  "isActive": true,
                                                  "createdAt": "2023-08-14T13:01:00.000",
                                                  "apiVersion": "2024-10-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:inverter:statistics-updated, 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-10-01, 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.

                                            Request example

                                            curl --request PATCH \
                                              --url https://enode-api.production.enode.io/webhooks/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                                              --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \
                                              --header 'content-type: application/json' \
                                              --data '{"url":"https://example.com/enode-webhooks/firehose","secret":"0Kvs1tAUQ69FOMBiWlt5XJSrruXMhWDiVbyrWaNm","events":["user:vehicle:discovered","user:vehicle:updated","user:vehicle:deleted"],"apiVersion":"2024-10-01","authentication":{"headerName":"x-api-key","headerValue":"AOIxcVLKxR2VpzlN5HIk14oPu80"}}'

                                            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<date-time>

                                              Time when a delivery to this webhook was last successful.

                                            • isActive boolean

                                              Indicates whether the webhook is active or not.

                                            • createdAt string<date-time>

                                              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": "2023-08-14T13:01:00.000",
                                              "isActive": true,
                                              "createdAt": "2023-08-14T13:01:00.000",
                                              "apiVersion": "2024-10-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.

                                            • issues array of object

                                              A list of validation issues which ocurred while validating some component of the network payload.

                                              Show child attributes

                                              Response example

                                              {
                                                "type": "https://developers.enode.com/api/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.

                                              Request example

                                              curl --request GET \
                                                --url https://enode-api.production.enode.io/webhooks/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                                                --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                              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<date-time>

                                                Time when a delivery to this webhook was last successful.

                                              • isActive boolean

                                                Indicates whether the webhook is active or not.

                                              • createdAt string<date-time>

                                                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": "2023-08-14T13:01:00.000",
                                                "isActive": true,
                                                "createdAt": "2023-08-14T13:01:00.000",
                                                "apiVersion": "2024-10-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.

                                              • issues array of object

                                                A list of validation issues which ocurred while validating some component of the network payload.

                                                Show child attributes

                                                Response example

                                                {
                                                  "type": "https://developers.enode.com/api/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.

                                                Request example

                                                curl --request DELETE \
                                                  --url https://enode-api.production.enode.io/webhooks/4eaeb363-296d-4ccc-a973-7805e6f400bd \
                                                  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                                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.

                                                • issues array of object

                                                  A list of validation issues which ocurred while validating some component of the network payload.

                                                  Show child attributes

                                                  Response example

                                                  {
                                                    "type": "https://developers.enode.com/api/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.

                                                  Request example

                                                  curl --request POST \
                                                    --url https://enode-api.production.enode.io/webhooks/4eaeb363-296d-4ccc-a973-7805e6f400bd/test \
                                                    --header 'Authorization: Bearer REPLACE_BEARER_TOKEN'

                                                  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 of string 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.

                                                  • issues array of object

                                                    A list of validation issues which ocurred while validating some component of the network payload.

                                                    Show child attributes

                                                    Response example

                                                    {
                                                      "type": "https://developers.enode.com/api/problems/not-found",
                                                      "title": "Webhook not found",
                                                      "detail": "Could not find webhook 0ec3d927-0100-44ff-bb53-edfe3ce64a57"
                                                    }
                                                    Was this section helpful?

                                                    Webhook events

                                                    user:vehicle:discovered

                                                    Occurs whenever a new vehicle is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:vehicle:discovered
                                                    • vehicle object Required
                                                      Show child attributes
                                                      • vehicle.id string Optional

                                                        Vehicle ID

                                                      • vehicle.userId string Required

                                                        The ID of the user that linked this vehicle.

                                                      • vehicle.vendor string Required

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

                                                        Possible enum values:

                                                          ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                                      • vehicle.lastSeen string<date-time> Required

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

                                                      • vehicle.isReachable boolean or null Required

                                                        Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

                                                      • vehicle.information object Required

                                                        Descriptive information about the Vehicle.

                                                        Show child attributes
                                                        • vehicle.information.vin string or null Required

                                                          Vehicle VIN

                                                        • vehicle.information.brand string or null Required

                                                          Vehicle brand

                                                          Possible enum values:

                                                            AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                                        • vehicle.information.model string or null Required

                                                          Vehicle model

                                                        • vehicle.information.year number or null Required

                                                          Vehicle production year

                                                        • vehicle.information.displayName string or null Required

                                                          User-defined vehicle nickname.

                                                      • vehicle.chargeState object Required

                                                        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
                                                        • vehicle.chargeState.batteryLevel number or null Required

                                                          Remaining battery in percent

                                                        • vehicle.chargeState.range number or null Required

                                                          Estimated remaining kilometers

                                                        • vehicle.chargeState.isPluggedIn boolean or null Required

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

                                                        • vehicle.chargeState.isCharging boolean or null Required

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

                                                        • vehicle.chargeState.isFullyCharged boolean or null Required

                                                          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.

                                                        • vehicle.chargeState.batteryCapacity number or null Required

                                                          Vehicle's usable battery capacity in kWh.

                                                        • vehicle.chargeState.chargeLimit number or null Required

                                                          Charge limit, as a percent of batteryCapacity.

                                                          When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                                        • vehicle.chargeState.chargeRate number or null Required

                                                          The current charge rate in kW.

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

                                                        • vehicle.chargeState.chargeTimeRemaining number or null Required

                                                          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.

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

                                                          Time of last received charge state update

                                                        • vehicle.chargeState.maxCurrent number or null Required

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

                                                        • vehicle.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • vehicle.smartChargingPolicy object Required

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

                                                        Show child attributes
                                                        • vehicle.smartChargingPolicy.isEnabled boolean Required

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

                                                        • vehicle.smartChargingPolicy.deadline string or null Required

                                                          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 location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                                                        • vehicle.smartChargingPolicy.minimumChargeLimit number Required

                                                          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.

                                                      • vehicle.odometer object Required

                                                        Vehicle's odometer reading in kilometers with timestamp

                                                        Show child attributes
                                                        • vehicle.odometer.distance number or null Required

                                                          Odometer in kilometers

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

                                                          Time of the last odometer update, in kilometers

                                                      • vehicle.capabilities object Required

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

                                                        Show child attributes
                                                        • vehicle.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • vehicle.capabilities.information.isCapable boolean Required

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

                                                          • vehicle.capabilities.information.interventionIds array of string Required

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

                                                        • vehicle.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • vehicle.capabilities.chargeState.isCapable boolean Required

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

                                                          • vehicle.capabilities.chargeState.interventionIds array of string Required

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

                                                        • vehicle.capabilities.location object Required

                                                          Full availability of location data.

                                                          Show child attributes
                                                          • vehicle.capabilities.location.isCapable boolean Required

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

                                                          • vehicle.capabilities.location.interventionIds array of string Required

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

                                                        • vehicle.capabilities.odometer object Required

                                                          Full availability of odometer data.

                                                          Show child attributes
                                                          • vehicle.capabilities.odometer.isCapable boolean Required

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

                                                          • vehicle.capabilities.odometer.interventionIds array of string Required

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

                                                        • vehicle.capabilities.setMaxCurrent object Required

                                                          Supports setting the maximum charge current.

                                                          Show child attributes
                                                          • vehicle.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • vehicle.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                        • vehicle.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.startCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.startCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.stopCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.smartCharging object Required

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

                                                          Show child attributes
                                                          • vehicle.capabilities.smartCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.smartCharging.interventionIds array of string Required

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

                                                      • vehicle.scopes array of string Required

                                                        Scopes that the user has granted for this vehicle.

                                                      • vehicle.location object Required

                                                        Vehicle's GPS coordinates with timestamp

                                                        Show child attributes
                                                        • vehicle.location.longitude number or null Optional

                                                          Longitude in degrees

                                                        • vehicle.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location

                                                        • vehicle.location.id string<uuid> or null Required

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

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:vehicle:discovered",
                                                      "vehicle": {
                                                        "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": true,
                                                          "deadline": "07:00",
                                                          "minimumChargeLimit": 0
                                                        },
                                                        "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"
                                                        ],
                                                        "location": {
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z",
                                                          "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                                        }
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:vehicle:updated

                                                    Occurs whenever a vehicle's properties are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:vehicle:updated
                                                    • vehicle object Required
                                                      Show child attributes
                                                      • vehicle.id string Optional

                                                        Vehicle ID

                                                      • vehicle.userId string Required

                                                        The ID of the user that linked this vehicle.

                                                      • vehicle.vendor string Required

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

                                                        Possible enum values:

                                                          ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                                      • vehicle.lastSeen string<date-time> Required

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

                                                      • vehicle.isReachable boolean or null Required

                                                        Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

                                                      • vehicle.information object Required

                                                        Descriptive information about the Vehicle.

                                                        Show child attributes
                                                        • vehicle.information.vin string or null Required

                                                          Vehicle VIN

                                                        • vehicle.information.brand string or null Required

                                                          Vehicle brand

                                                          Possible enum values:

                                                            AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                                        • vehicle.information.model string or null Required

                                                          Vehicle model

                                                        • vehicle.information.year number or null Required

                                                          Vehicle production year

                                                        • vehicle.information.displayName string or null Required

                                                          User-defined vehicle nickname.

                                                      • vehicle.chargeState object Required

                                                        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
                                                        • vehicle.chargeState.batteryLevel number or null Required

                                                          Remaining battery in percent

                                                        • vehicle.chargeState.range number or null Required

                                                          Estimated remaining kilometers

                                                        • vehicle.chargeState.isPluggedIn boolean or null Required

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

                                                        • vehicle.chargeState.isCharging boolean or null Required

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

                                                        • vehicle.chargeState.isFullyCharged boolean or null Required

                                                          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.

                                                        • vehicle.chargeState.batteryCapacity number or null Required

                                                          Vehicle's usable battery capacity in kWh.

                                                        • vehicle.chargeState.chargeLimit number or null Required

                                                          Charge limit, as a percent of batteryCapacity.

                                                          When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                                        • vehicle.chargeState.chargeRate number or null Required

                                                          The current charge rate in kW.

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

                                                        • vehicle.chargeState.chargeTimeRemaining number or null Required

                                                          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.

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

                                                          Time of last received charge state update

                                                        • vehicle.chargeState.maxCurrent number or null Required

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

                                                        • vehicle.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • vehicle.smartChargingPolicy object Required

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

                                                        Show child attributes
                                                        • vehicle.smartChargingPolicy.isEnabled boolean Required

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

                                                        • vehicle.smartChargingPolicy.deadline string or null Required

                                                          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 location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                                                        • vehicle.smartChargingPolicy.minimumChargeLimit number Required

                                                          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.

                                                      • vehicle.odometer object Required

                                                        Vehicle's odometer reading in kilometers with timestamp

                                                        Show child attributes
                                                        • vehicle.odometer.distance number or null Required

                                                          Odometer in kilometers

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

                                                          Time of the last odometer update, in kilometers

                                                      • vehicle.capabilities object Required

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

                                                        Show child attributes
                                                        • vehicle.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • vehicle.capabilities.information.isCapable boolean Required

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

                                                          • vehicle.capabilities.information.interventionIds array of string Required

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

                                                        • vehicle.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • vehicle.capabilities.chargeState.isCapable boolean Required

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

                                                          • vehicle.capabilities.chargeState.interventionIds array of string Required

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

                                                        • vehicle.capabilities.location object Required

                                                          Full availability of location data.

                                                          Show child attributes
                                                          • vehicle.capabilities.location.isCapable boolean Required

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

                                                          • vehicle.capabilities.location.interventionIds array of string Required

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

                                                        • vehicle.capabilities.odometer object Required

                                                          Full availability of odometer data.

                                                          Show child attributes
                                                          • vehicle.capabilities.odometer.isCapable boolean Required

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

                                                          • vehicle.capabilities.odometer.interventionIds array of string Required

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

                                                        • vehicle.capabilities.setMaxCurrent object Required

                                                          Supports setting the maximum charge current.

                                                          Show child attributes
                                                          • vehicle.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • vehicle.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                        • vehicle.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.startCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.startCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.stopCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.smartCharging object Required

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

                                                          Show child attributes
                                                          • vehicle.capabilities.smartCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.smartCharging.interventionIds array of string Required

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

                                                      • vehicle.scopes array of string Required

                                                        Scopes that the user has granted for this vehicle.

                                                      • vehicle.location object Required

                                                        Vehicle's GPS coordinates with timestamp

                                                        Show child attributes
                                                        • vehicle.location.longitude number or null Optional

                                                          Longitude in degrees

                                                        • vehicle.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location

                                                        • vehicle.location.id string<uuid> or null Required

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

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:vehicle:updated",
                                                      "vehicle": {
                                                        "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": true,
                                                          "deadline": "07:00",
                                                          "minimumChargeLimit": 0
                                                        },
                                                        "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"
                                                        ],
                                                        "location": {
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z",
                                                          "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                                        }
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:vehicle:deleted

                                                    Occurs whenever a vehicle is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:vehicle:deleted
                                                    • vehicle object Required
                                                      Show child attributes
                                                      • vehicle.id string Optional

                                                        Vehicle ID

                                                      • vehicle.userId string Required

                                                        The ID of the user that linked this vehicle.

                                                      • vehicle.vendor string Required

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

                                                        Possible enum values:

                                                          ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                                      • vehicle.lastSeen string<date-time> Required

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

                                                      • vehicle.isReachable boolean or null Required

                                                        Indicates whether Enode can currently access live data from the vehicle. If the vehicle is not reachable, data updates will be delayed.

                                                      • vehicle.information object Required

                                                        Descriptive information about the Vehicle.

                                                        Show child attributes
                                                        • vehicle.information.vin string or null Required

                                                          Vehicle VIN

                                                        • vehicle.information.brand string or null Required

                                                          Vehicle brand

                                                          Possible enum values:

                                                            AcuraAudiBMWHondaHyundaiJaguarLand RoverKiaMercedesMININissanPeugeotPorscheRenaultSEATŠkodaTeslaVolkswagenVolvoFordOpelDSToyotaLexusCitroënCupraVauxhallFiatRivianNIOChevroletGMCCadillacXPENGPolestarSubaruJeepMazdaMGChryslerDodgeRamAlfa RomeoLanciaLucidBYD
                                                        • vehicle.information.model string or null Required

                                                          Vehicle model

                                                        • vehicle.information.year number or null Required

                                                          Vehicle production year

                                                        • vehicle.information.displayName string or null Required

                                                          User-defined vehicle nickname.

                                                      • vehicle.chargeState object Required

                                                        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
                                                        • vehicle.chargeState.batteryLevel number or null Required

                                                          Remaining battery in percent

                                                        • vehicle.chargeState.range number or null Required

                                                          Estimated remaining kilometers

                                                        • vehicle.chargeState.isPluggedIn boolean or null Required

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

                                                        • vehicle.chargeState.isCharging boolean or null Required

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

                                                        • vehicle.chargeState.isFullyCharged boolean or null Required

                                                          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.

                                                        • vehicle.chargeState.batteryCapacity number or null Required

                                                          Vehicle's usable battery capacity in kWh.

                                                        • vehicle.chargeState.chargeLimit number or null Required

                                                          Charge limit, as a percent of batteryCapacity.

                                                          When null, the vendor did not report a charge limit when we last received data from them. We recommend assuming the limit is 100%.

                                                        • vehicle.chargeState.chargeRate number or null Required

                                                          The current charge rate in kW.

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

                                                        • vehicle.chargeState.chargeTimeRemaining number or null Required

                                                          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.

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

                                                          Time of last received charge state update

                                                        • vehicle.chargeState.maxCurrent number or null Required

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

                                                        • vehicle.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The vehicle is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:COMPLETEPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • vehicle.smartChargingPolicy object Required

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

                                                        Show child attributes
                                                        • vehicle.smartChargingPolicy.isEnabled boolean Required

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

                                                        • vehicle.smartChargingPolicy.deadline string or null Required

                                                          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 location at which the smart charging occurs, the deadline is interpreted in that timezone, otherwise UTC is used.

                                                        • vehicle.smartChargingPolicy.minimumChargeLimit number Required

                                                          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.

                                                      • vehicle.odometer object Required

                                                        Vehicle's odometer reading in kilometers with timestamp

                                                        Show child attributes
                                                        • vehicle.odometer.distance number or null Required

                                                          Odometer in kilometers

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

                                                          Time of the last odometer update, in kilometers

                                                      • vehicle.capabilities object Required

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

                                                        Show child attributes
                                                        • vehicle.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • vehicle.capabilities.information.isCapable boolean Required

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

                                                          • vehicle.capabilities.information.interventionIds array of string Required

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

                                                        • vehicle.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • vehicle.capabilities.chargeState.isCapable boolean Required

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

                                                          • vehicle.capabilities.chargeState.interventionIds array of string Required

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

                                                        • vehicle.capabilities.location object Required

                                                          Full availability of location data.

                                                          Show child attributes
                                                          • vehicle.capabilities.location.isCapable boolean Required

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

                                                          • vehicle.capabilities.location.interventionIds array of string Required

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

                                                        • vehicle.capabilities.odometer object Required

                                                          Full availability of odometer data.

                                                          Show child attributes
                                                          • vehicle.capabilities.odometer.isCapable boolean Required

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

                                                          • vehicle.capabilities.odometer.interventionIds array of string Required

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

                                                        • vehicle.capabilities.setMaxCurrent object Required

                                                          Supports setting the maximum charge current.

                                                          Show child attributes
                                                          • vehicle.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • vehicle.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                        • vehicle.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.startCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.startCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • vehicle.capabilities.stopCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • vehicle.capabilities.smartCharging object Required

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

                                                          Show child attributes
                                                          • vehicle.capabilities.smartCharging.isCapable boolean Required

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

                                                          • vehicle.capabilities.smartCharging.interventionIds array of string Required

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

                                                      • vehicle.scopes array of string Required

                                                        Scopes that the user has granted for this vehicle.

                                                      • vehicle.location object Required

                                                        Vehicle's GPS coordinates with timestamp

                                                        Show child attributes
                                                        • vehicle.location.longitude number or null Optional

                                                          Longitude in degrees

                                                        • vehicle.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location

                                                        • vehicle.location.id string<uuid> or null Required

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

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:vehicle:deleted",
                                                      "vehicle": {
                                                        "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": true,
                                                          "deadline": "07:00",
                                                          "minimumChargeLimit": 0
                                                        },
                                                        "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"
                                                        ],
                                                        "location": {
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z",
                                                          "id": "07f8368d-be7e-4dbd-8cf0-94d00dd67ad3"
                                                        }
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:vehicle:smart-charging-status-updated

                                                    Occurs whenever a vehicle's SmartChargingStatus is updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:vehicle:smart-charging-status-updated
                                                    • smartChargingStatus object Required
                                                      Show child attributes
                                                      • smartChargingStatus.updatedAt string<date-time> Required

                                                        Time when the Smart Charging Status was recalculated, irrespective of whether or not any values changed

                                                      • smartChargingStatus.vehicleId string Required

                                                        ID of the vehicle to which this Smart Charging Status represents

                                                      • smartChargingStatus.userId string Required

                                                        ID of the user that owns this vehicle

                                                      • smartChargingStatus.vendor string Required

                                                        Vendor of the Vehicle

                                                        Possible enum values:

                                                          ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                                      • smartChargingStatus.state string Required

                                                        An enum value that describes the current Smart Charging state of the vehicle. Every vehicle is in exactly one state, at all times. If the returned state is UNKNOWN, this might indicate that the vehicle is no longer capable of smart charging. In this case we recommend that you check the capabilities of the vehicle to determine what should be communicated to users. If we don't have pricing data or tariffs for the location of the vehicle, the state will also be UNKNOWN. In this case, we recommend that you contact Enode staff.

                                                        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_CHANGEDFULLY_CHARGED
                                                      • smartChargingStatus.stateChangedAt string<date-time> Required

                                                        Time when the state property transitioned to its current value

                                                      • smartChargingStatus.consideration object or null Required
                                                        Show child attributes
                                                        • smartChargingStatus.consideration.isPluggedIn boolean Required

                                                          The vehicle is plugged in

                                                        • smartChargingStatus.consideration.isCharging boolean Required

                                                          The vehicle is charging

                                                        • smartChargingStatus.consideration.atChargingLocation boolean Required

                                                          The vehicle is located at a configured Charging Location

                                                        • smartChargingStatus.consideration.hasTimeEstimate boolean Required

                                                          A good estimate is available of how much time it will take to charge.

                                                      • smartChargingStatus.plan object or null Required

                                                        null by default, but during all of the PLAN:* states, the value is populated with a description of the active plan

                                                        Show child attributes
                                                        • smartChargingStatus.plan.id string Required

                                                          ID of the Smart Charging Plan

                                                        • smartChargingStatus.plan.vehicleId string Required

                                                          ID of the Vehicle to which the Smart Charging Plan belongs

                                                        • smartChargingStatus.plan.userId string Required

                                                          ID of the User to which the Smart Charging Plan belongs

                                                        • smartChargingStatus.plan.locationId string<uuid> or null Required

                                                          ID of the location at which the Smart Charging Plan is being executed. Null for Smart Charging Plans started before March 2022.

                                                        • smartChargingStatus.plan.vendor string Required

                                                          Vendor of the Vehicle to which the Smart Charging Plan belongs

                                                          Possible enum values:

                                                            ACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODATESLAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYD
                                                        • smartChargingStatus.plan.currency string Required

                                                          Currency in which monetary amounts are denominated (ISO 4217 3-character Alpha code)

                                                        • smartChargingStatus.plan.nonSmartCost number Required

                                                          Estimated cost of charging, if smart charging were not on for the vehicle

                                                        • smartChargingStatus.plan.smartCost number or null Required

                                                          Estimated cost of charging, achieved by this Smart Charging Plan

                                                        • smartChargingStatus.plan.stopAt string<date-time> Required

                                                          Time at which the current Smart Charging Plan will stop the vehicle's charging. The charging will be resumed when prices are optimal.

                                                        • smartChargingStatus.plan.startAt string<date-time> or null Required

                                                          Time at which the current Smart Charging Plan will resume the vehicle's charging, when prices are optimal.

                                                        • smartChargingStatus.plan.estimatedFinishAt string<date-time> Required

                                                          Time at which charging is estimated to be complete, due to the current Smart Charging Plan

                                                        • smartChargingStatus.plan.stopConfirmedAt string<date-time> or null Required

                                                          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.

                                                        • smartChargingStatus.plan.startConfirmedAt string<date-time> or null Required

                                                          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.

                                                        • smartChargingStatus.plan.endedAt string<date-time> or null Required

                                                          The time at which the Smart Charging Plan ended

                                                        • smartChargingStatus.plan.finalState string or null Required

                                                          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
                                                        • smartChargingStatus.plan.failureCondition string or null Required

                                                          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
                                                      • smartChargingStatus.smartOverride object or null Required

                                                        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
                                                        • smartChargingStatus.smartOverride.createdAt string<date-time> Required

                                                          Time at which the smart override was created.

                                                        • smartChargingStatus.smartOverride.endedAt string<date-time> or null Required

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

                                                        • smartChargingStatus.smartOverride.targetType string Required

                                                          Possible enum values:

                                                            vehiclecharger
                                                        • smartChargingStatus.smartOverride.targetId string Required

                                                          ID of the target which this smart override is affecting.

                                                        • smartChargingStatus.smartOverride.vendorActionId string<uuid> or null Required

                                                          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.

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:vehicle:smart-charging-status-updated",
                                                      "smartChargingStatus": {
                                                        "updatedAt": "2020-04-07T17:04:26Z",
                                                        "vehicleId": "4b5ada14-ea87-4ca1-aab9-3c979c34cf4a",
                                                        "userId": "3b568b76-e30a-426e-aacd-609db4d7be81",
                                                        "vendor": "string",
                                                        "state": "PLAN:EXECUTING:STARTING",
                                                        "stateChangedAt": "2020-04-07T17:04:26Z",
                                                        "consideration": {
                                                          "isPluggedIn": true,
                                                          "isCharging": true,
                                                          "atChargingLocation": true,
                                                          "hasTimeEstimate": 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"
                                                        },
                                                        "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"
                                                        }
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:charger:discovered

                                                    Occurs whenever a new charger is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:charger:discovered
                                                    • charger object Required
                                                      Show child attributes
                                                      • charger.id string Required

                                                        Charger ID

                                                      • charger.userId string Required

                                                        The ID of the user that linked this charger.

                                                      • charger.vendor string Required

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

                                                        Possible enum values:

                                                          ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                                                      • charger.lastSeen string<date-time> Required

                                                        The last time Enode communicated with the charger.

                                                      • charger.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

                                                      • charger.chargeState object Required

                                                        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
                                                        • charger.chargeState.isPluggedIn boolean or null Required

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

                                                        • charger.chargeState.isCharging boolean or null Required

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

                                                        • charger.chargeState.chargeRate number or null Required

                                                          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.

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

                                                          Time of latest charge state update

                                                        • charger.chargeState.maxCurrent number or null Required

                                                          Desired max current in amperes, if set

                                                        • charger.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • charger.capabilities object Required

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

                                                        Show child attributes
                                                        • charger.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • charger.capabilities.information.isCapable boolean Required

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

                                                          • charger.capabilities.information.interventionIds array of string Required

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

                                                        • charger.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • charger.capabilities.chargeState.isCapable boolean Required

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

                                                          • charger.capabilities.chargeState.interventionIds array of string Required

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

                                                        • charger.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • charger.capabilities.startCharging.isCapable boolean Required

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

                                                          • charger.capabilities.startCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • charger.capabilities.stopCharging.isCapable boolean Required

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

                                                          • charger.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.setMaxCurrent object Required

                                                          Ability to set the max charge rate.

                                                          Show child attributes
                                                          • charger.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • charger.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                      • charger.scopes array of string Required

                                                        Scopes that the user has granted for this charger.

                                                      • charger.information object Required

                                                        Descriptive information about the Charger

                                                        Show child attributes
                                                        • charger.information.brand string Required

                                                          Charger brand

                                                          Possible enum values:

                                                            ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
                                                        • charger.information.model string Required

                                                          Charger model

                                                        • charger.information.year number or null Required

                                                          Charger production year

                                                        • charger.information.serialNumber string Required

                                                          Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

                                                      • charger.location object Required
                                                        Show child attributes
                                                        • charger.location.id string<uuid> or null Required

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

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

                                                          Time of last received location state update

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:charger:discovered",
                                                      "charger": {
                                                        "information": {
                                                          "brand": "Zaptec",
                                                          "model": "ZAPTEC PRO",
                                                          "serialNumber": "1234567890",
                                                          "year": null
                                                        },
                                                        "location": {
                                                          "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z"
                                                        },
                                                        "id": "2211e263-0362-4235-83f4-887bdf3ee414",
                                                        "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
                                                        "vendor": "ZAPTEC",
                                                        "lastSeen": "2023-03-21T21:08:27.596Z",
                                                        "isReachable": true,
                                                        "chargeState": {
                                                          "isPluggedIn": true,
                                                          "isCharging": true,
                                                          "chargeRate": 6.939,
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z",
                                                          "maxCurrent": 16,
                                                          "powerDeliveryState": "PLUGGED_IN:CHARGING"
                                                        },
                                                        "capabilities": {
                                                          "information": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "chargeState": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "startCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "stopCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "setMaxCurrent": {
                                                            "isCapable": false,
                                                            "interventionIds": [
                                                              "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                                                            ]
                                                          }
                                                        },
                                                        "scopes": [
                                                          "charger:control:charging",
                                                          "charger:read:data"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:charger:updated

                                                    Occurs whenever a charger is updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:charger:updated
                                                    • charger object Required
                                                      Show child attributes
                                                      • charger.id string Required

                                                        Charger ID

                                                      • charger.userId string Required

                                                        The ID of the user that linked this charger.

                                                      • charger.vendor string Required

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

                                                        Possible enum values:

                                                          ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                                                      • charger.lastSeen string<date-time> Required

                                                        The last time Enode communicated with the charger.

                                                      • charger.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

                                                      • charger.chargeState object Required

                                                        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
                                                        • charger.chargeState.isPluggedIn boolean or null Required

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

                                                        • charger.chargeState.isCharging boolean or null Required

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

                                                        • charger.chargeState.chargeRate number or null Required

                                                          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.

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

                                                          Time of latest charge state update

                                                        • charger.chargeState.maxCurrent number or null Required

                                                          Desired max current in amperes, if set

                                                        • charger.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • charger.capabilities object Required

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

                                                        Show child attributes
                                                        • charger.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • charger.capabilities.information.isCapable boolean Required

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

                                                          • charger.capabilities.information.interventionIds array of string Required

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

                                                        • charger.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • charger.capabilities.chargeState.isCapable boolean Required

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

                                                          • charger.capabilities.chargeState.interventionIds array of string Required

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

                                                        • charger.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • charger.capabilities.startCharging.isCapable boolean Required

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

                                                          • charger.capabilities.startCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • charger.capabilities.stopCharging.isCapable boolean Required

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

                                                          • charger.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.setMaxCurrent object Required

                                                          Ability to set the max charge rate.

                                                          Show child attributes
                                                          • charger.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • charger.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                      • charger.scopes array of string Required

                                                        Scopes that the user has granted for this charger.

                                                      • charger.information object Required

                                                        Descriptive information about the Charger

                                                        Show child attributes
                                                        • charger.information.brand string Required

                                                          Charger brand

                                                          Possible enum values:

                                                            ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
                                                        • charger.information.model string Required

                                                          Charger model

                                                        • charger.information.year number or null Required

                                                          Charger production year

                                                        • charger.information.serialNumber string Required

                                                          Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

                                                      • charger.location object Required
                                                        Show child attributes
                                                        • charger.location.id string<uuid> or null Required

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

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

                                                          Time of last received location state update

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:charger:updated",
                                                      "charger": {
                                                        "information": {
                                                          "brand": "Zaptec",
                                                          "model": "ZAPTEC PRO",
                                                          "serialNumber": "1234567890",
                                                          "year": null
                                                        },
                                                        "location": {
                                                          "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z"
                                                        },
                                                        "id": "2211e263-0362-4235-83f4-887bdf3ee414",
                                                        "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
                                                        "vendor": "ZAPTEC",
                                                        "lastSeen": "2023-03-21T21:08:27.596Z",
                                                        "isReachable": true,
                                                        "chargeState": {
                                                          "isPluggedIn": true,
                                                          "isCharging": true,
                                                          "chargeRate": 6.939,
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z",
                                                          "maxCurrent": 16,
                                                          "powerDeliveryState": "PLUGGED_IN:CHARGING"
                                                        },
                                                        "capabilities": {
                                                          "information": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "chargeState": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "startCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "stopCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "setMaxCurrent": {
                                                            "isCapable": false,
                                                            "interventionIds": [
                                                              "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                                                            ]
                                                          }
                                                        },
                                                        "scopes": [
                                                          "charger:control:charging",
                                                          "charger:read:data"
                                                        ]
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:charger:deleted

                                                    Occurs whenever a charger is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:charger:deleted
                                                    • charger object Required
                                                      Show child attributes
                                                      • charger.id string Required

                                                        Charger ID

                                                      • charger.userId string Required

                                                        The ID of the user that linked this charger.

                                                      • charger.vendor string Required

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

                                                        Possible enum values:

                                                          ZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXTESLAOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG
                                                      • charger.lastSeen string<date-time> Required

                                                        The last time Enode communicated with the charger.

                                                      • charger.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the charger. If the charger is not reachable, data updates will be delayed.

                                                      • charger.chargeState object Required

                                                        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
                                                        • charger.chargeState.isPluggedIn boolean or null Required

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

                                                        • charger.chargeState.isCharging boolean or null Required

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

                                                        • charger.chargeState.chargeRate number or null Required

                                                          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.

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

                                                          Time of latest charge state update

                                                        • charger.chargeState.maxCurrent number or null Required

                                                          Desired max current in amperes, if set

                                                        • charger.chargeState.powerDeliveryState string Required

                                                          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.
                                                          • PLUGGED_IN:DISCHARGING: The charger is actively discharging by giving power to the home/grid, causing the battery level to decrease.

                                                          Possible enum values:

                                                            UNKNOWNUNPLUGGEDPLUGGED_IN:INITIALIZINGPLUGGED_IN:CHARGINGPLUGGED_IN:STOPPEDPLUGGED_IN:NO_POWERPLUGGED_IN:FAULTPLUGGED_IN:DISCHARGING
                                                      • charger.capabilities object Required

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

                                                        Show child attributes
                                                        • charger.capabilities.information object Required

                                                          Full availability of information data.

                                                          Show child attributes
                                                          • charger.capabilities.information.isCapable boolean Required

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

                                                          • charger.capabilities.information.interventionIds array of string Required

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

                                                        • charger.capabilities.chargeState object Required

                                                          Full availability of chargeState data.

                                                          Show child attributes
                                                          • charger.capabilities.chargeState.isCapable boolean Required

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

                                                          • charger.capabilities.chargeState.interventionIds array of string Required

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

                                                        • charger.capabilities.startCharging object Required

                                                          Supports START charging command.

                                                          Show child attributes
                                                          • charger.capabilities.startCharging.isCapable boolean Required

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

                                                          • charger.capabilities.startCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.stopCharging object Required

                                                          Supports STOP charging command.

                                                          Show child attributes
                                                          • charger.capabilities.stopCharging.isCapable boolean Required

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

                                                          • charger.capabilities.stopCharging.interventionIds array of string Required

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

                                                        • charger.capabilities.setMaxCurrent object Required

                                                          Ability to set the max charge rate.

                                                          Show child attributes
                                                          • charger.capabilities.setMaxCurrent.isCapable boolean Required

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

                                                          • charger.capabilities.setMaxCurrent.interventionIds array of string Required

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

                                                      • charger.scopes array of string Required

                                                        Scopes that the user has granted for this charger.

                                                      • charger.information object Required

                                                        Descriptive information about the Charger

                                                        Show child attributes
                                                        • charger.information.brand string Required

                                                          Charger brand

                                                          Possible enum values:

                                                            ZaptecEaseeWallboxEOEVBoxCharge Ampsgo-eChargePointEnel XTeslaOhmeGaroSchneider ElectricPod PointKEBAHypervoltmyenergiHeidelberg
                                                        • charger.information.model string Required

                                                          Charger model

                                                        • charger.information.year number or null Required

                                                          Charger production year

                                                        • charger.information.serialNumber string Required

                                                          Charger serial number. Most chargers have this, but some do not expose it. When missing we default to a vendor provided ID, which may be visible to the end user in their app.

                                                      • charger.location object Required
                                                        Show child attributes
                                                        • charger.location.id string<uuid> or null Required

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

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

                                                          Time of last received location state update

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:charger:deleted",
                                                      "charger": {
                                                        "information": {
                                                          "brand": "Zaptec",
                                                          "model": "ZAPTEC PRO",
                                                          "serialNumber": "1234567890",
                                                          "year": null
                                                        },
                                                        "location": {
                                                          "id": "2211e263-d6d4-d6d4-d6d4-dbdd77ec82b6",
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z"
                                                        },
                                                        "id": "2211e263-0362-4235-83f4-887bdf3ee414",
                                                        "userId": "d381faac-5283-44a1-9eb1-36cab2ace670",
                                                        "vendor": "ZAPTEC",
                                                        "lastSeen": "2023-03-21T21:08:27.596Z",
                                                        "isReachable": true,
                                                        "chargeState": {
                                                          "isPluggedIn": true,
                                                          "isCharging": true,
                                                          "chargeRate": 6.939,
                                                          "lastUpdated": "2023-03-21T16:39:20.000Z",
                                                          "maxCurrent": 16,
                                                          "powerDeliveryState": "PLUGGED_IN:CHARGING"
                                                        },
                                                        "capabilities": {
                                                          "information": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "chargeState": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "startCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "stopCharging": {
                                                            "isCapable": true,
                                                            "interventionIds": []
                                                          },
                                                          "setMaxCurrent": {
                                                            "isCapable": false,
                                                            "interventionIds": [
                                                              "4eaeb363-296d-4ccc-a973-7805e6f400bd"
                                                            ]
                                                          }
                                                        },
                                                        "scopes": [
                                                          "charger:control:charging",
                                                          "charger:read:data"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:hvac:discovered

                                                    Occurs whenever a new HVAC is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:hvac:discovered
                                                    • hvac object Required
                                                      Show child attributes
                                                      • hvac.id string Required

                                                        HVAC unit ID

                                                      • hvac.userId string Required

                                                        The ID of the user that linked this hvac.

                                                      • hvac.vendor string Required

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

                                                        Possible enum values:

                                                          TADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMO
                                                      • hvac.lastSeen string<date-time> Required

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

                                                      • hvac.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

                                                      • hvac.consumptionRate number or null Required

                                                        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.

                                                      • hvac.information object Required

                                                        Descriptive information about the HVAC unit

                                                        Show child attributes
                                                        • hvac.information.brand string Required

                                                          Display name of OEM/vendor

                                                          Possible enum values:

                                                            TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
                                                        • hvac.information.model string or null Required

                                                          Device model name

                                                        • hvac.information.displayName string Required

                                                          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.

                                                        • hvac.information.groupName string or null Required

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

                                                        • hvac.information.category string Required

                                                          Classification of the connected HVAC device.

                                                          • HEATING: A direct heating device, such as an electric panel heater

                                                          • COOLING: A direct cooling device, such as an air conditioner

                                                          • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

                                                          • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

                                                          Possible enum values:

                                                            HEATINGCOOLINGHEAT_PUMPAGGREGATOR
                                                      • hvac.temperatureState object Required

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

                                                        Show child attributes
                                                        • hvac.temperatureState.currentTemperature number or null Required

                                                          Current air temperature reported by device in degrees Celsius.

                                                        • hvac.temperatureState.isActive boolean Required

                                                          Whether the HVAC unit is actively heating or cooling.

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

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

                                                      • hvac.thermostatState object Required

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

                                                        Show child attributes
                                                        • hvac.thermostatState.mode string Required

                                                          The current state of the HVAC unit.

                                                          • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
                                                          • OFF: The HVAC unit is turned off.
                                                          • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
                                                          • COOL: The HVAC unit will only cool to the given setpoint.
                                                          • HEAT: The HVAC unit will only heat to the given setpoint

                                                          Possible enum values:

                                                            UNKNOWNOFFAUTOCOOLHEAT
                                                        • hvac.thermostatState.heatSetpoint number or null Required

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

                                                        • hvac.thermostatState.coolSetpoint number or null Required

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

                                                        • hvac.thermostatState.holdType string or null Required

                                                          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
                                                        • hvac.thermostatState.lastUpdated string<date-time> or null Required

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

                                                      • hvac.scopes array of string Required

                                                        Scopes that the user has granted for this HVAC unit.

                                                      • hvac.capabilities object Required

                                                        An object describing valid states for this HVAC unit.

                                                        Show child attributes
                                                        • hvac.capabilities.capableModes array of string or null Required

                                                          A list of valid modes for this HVAC unit.

                                                        • hvac.capabilities.coolSetpointRange object or null Required

                                                          The range of allowable values for coolSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.coolSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.heatSetpointRange object or null Required

                                                          The range of allowable values for heatSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.heatSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.setpointDifferenceRange object or null Required

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

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

                                                            The minimum allowable difference, inclusive.

                                                          • hvac.capabilities.setpointDifferenceRange.max number or null Required

                                                            The maximum allowable difference, inclusive.

                                                        • hvac.capabilities.setFollowSchedule object Required

                                                          Supports following a schedule set on the device.

                                                          Show child attributes
                                                          • hvac.capabilities.setFollowSchedule.isCapable boolean Required

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

                                                          • hvac.capabilities.setFollowSchedule.interventionIds array of string Required

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

                                                        • hvac.capabilities.setPermanentHold object Required

                                                          Supports setting a permanent hold.

                                                          Show child attributes
                                                          • hvac.capabilities.setPermanentHold.isCapable boolean Required

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

                                                          • hvac.capabilities.setPermanentHold.interventionIds array of string Required

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

                                                      • hvac.location object Required
                                                        Show child attributes
                                                        • hvac.location.id string<uuid> or null Required

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

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:hvac:discovered",
                                                      "hvac": {
                                                        "id": "8f39fa8d-8f10-4984-a319-741dc23848c0",
                                                        "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
                                                        "vendor": "ADAX",
                                                        "lastSeen": "2020-04-07T17:04:26.000Z",
                                                        "isReachable": true,
                                                        "consumptionRate": 1.8,
                                                        "information": {
                                                          "brand": "ADAX",
                                                          "model": "Neo Wi-Fi Skirting",
                                                          "displayName": "Bedroom Panel Heater",
                                                          "groupName": "Bedroom",
                                                          "category": "HEATING"
                                                        },
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
                                                        },
                                                        "capabilities": {
                                                          "capableModes": [
                                                            "HEAT",
                                                            "COOL",
                                                            "OFF"
                                                          ],
                                                          "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"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:hvac:updated

                                                    Occurs whenever an HVAC's properties are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:hvac:updated
                                                    • hvac object Required
                                                      Show child attributes
                                                      • hvac.id string Required

                                                        HVAC unit ID

                                                      • hvac.userId string Required

                                                        The ID of the user that linked this hvac.

                                                      • hvac.vendor string Required

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

                                                        Possible enum values:

                                                          TADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMO
                                                      • hvac.lastSeen string<date-time> Required

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

                                                      • hvac.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

                                                      • hvac.consumptionRate number or null Required

                                                        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.

                                                      • hvac.information object Required

                                                        Descriptive information about the HVAC unit

                                                        Show child attributes
                                                        • hvac.information.brand string Required

                                                          Display name of OEM/vendor

                                                          Possible enum values:

                                                            TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
                                                        • hvac.information.model string or null Required

                                                          Device model name

                                                        • hvac.information.displayName string Required

                                                          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.

                                                        • hvac.information.groupName string or null Required

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

                                                        • hvac.information.category string Required

                                                          Classification of the connected HVAC device.

                                                          • HEATING: A direct heating device, such as an electric panel heater

                                                          • COOLING: A direct cooling device, such as an air conditioner

                                                          • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

                                                          • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

                                                          Possible enum values:

                                                            HEATINGCOOLINGHEAT_PUMPAGGREGATOR
                                                      • hvac.temperatureState object Required

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

                                                        Show child attributes
                                                        • hvac.temperatureState.currentTemperature number or null Required

                                                          Current air temperature reported by device in degrees Celsius.

                                                        • hvac.temperatureState.isActive boolean Required

                                                          Whether the HVAC unit is actively heating or cooling.

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

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

                                                      • hvac.thermostatState object Required

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

                                                        Show child attributes
                                                        • hvac.thermostatState.mode string Required

                                                          The current state of the HVAC unit.

                                                          • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
                                                          • OFF: The HVAC unit is turned off.
                                                          • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
                                                          • COOL: The HVAC unit will only cool to the given setpoint.
                                                          • HEAT: The HVAC unit will only heat to the given setpoint

                                                          Possible enum values:

                                                            UNKNOWNOFFAUTOCOOLHEAT
                                                        • hvac.thermostatState.heatSetpoint number or null Required

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

                                                        • hvac.thermostatState.coolSetpoint number or null Required

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

                                                        • hvac.thermostatState.holdType string or null Required

                                                          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
                                                        • hvac.thermostatState.lastUpdated string<date-time> or null Required

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

                                                      • hvac.scopes array of string Required

                                                        Scopes that the user has granted for this HVAC unit.

                                                      • hvac.capabilities object Required

                                                        An object describing valid states for this HVAC unit.

                                                        Show child attributes
                                                        • hvac.capabilities.capableModes array of string or null Required

                                                          A list of valid modes for this HVAC unit.

                                                        • hvac.capabilities.coolSetpointRange object or null Required

                                                          The range of allowable values for coolSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.coolSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.heatSetpointRange object or null Required

                                                          The range of allowable values for heatSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.heatSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.setpointDifferenceRange object or null Required

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

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

                                                            The minimum allowable difference, inclusive.

                                                          • hvac.capabilities.setpointDifferenceRange.max number or null Required

                                                            The maximum allowable difference, inclusive.

                                                        • hvac.capabilities.setFollowSchedule object Required

                                                          Supports following a schedule set on the device.

                                                          Show child attributes
                                                          • hvac.capabilities.setFollowSchedule.isCapable boolean Required

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

                                                          • hvac.capabilities.setFollowSchedule.interventionIds array of string Required

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

                                                        • hvac.capabilities.setPermanentHold object Required

                                                          Supports setting a permanent hold.

                                                          Show child attributes
                                                          • hvac.capabilities.setPermanentHold.isCapable boolean Required

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

                                                          • hvac.capabilities.setPermanentHold.interventionIds array of string Required

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

                                                      • hvac.location object Required
                                                        Show child attributes
                                                        • hvac.location.id string<uuid> or null Required

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

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:hvac:updated",
                                                      "hvac": {
                                                        "id": "8f39fa8d-8f10-4984-a319-741dc23848c0",
                                                        "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
                                                        "vendor": "ADAX",
                                                        "lastSeen": "2020-04-07T17:04:26.000Z",
                                                        "isReachable": true,
                                                        "consumptionRate": 1.8,
                                                        "information": {
                                                          "brand": "ADAX",
                                                          "model": "Neo Wi-Fi Skirting",
                                                          "displayName": "Bedroom Panel Heater",
                                                          "groupName": "Bedroom",
                                                          "category": "HEATING"
                                                        },
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
                                                        },
                                                        "capabilities": {
                                                          "capableModes": [
                                                            "HEAT",
                                                            "COOL",
                                                            "OFF"
                                                          ],
                                                          "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"
                                                        ]
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:hvac:deleted

                                                    Occurs whenever an HVAC is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:hvac:deleted
                                                    • hvac object Required
                                                      Show child attributes
                                                      • hvac.id string Required

                                                        HVAC unit ID

                                                      • hvac.userId string Required

                                                        The ID of the user that linked this hvac.

                                                      • hvac.vendor string Required

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

                                                        Possible enum values:

                                                          TADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMO
                                                      • hvac.lastSeen string<date-time> Required

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

                                                      • hvac.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the HVAC. If the HVAC is not reachable, data updates will be delayed.

                                                      • hvac.consumptionRate number or null Required

                                                        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.

                                                      • hvac.information object Required

                                                        Descriptive information about the HVAC unit

                                                        Show child attributes
                                                        • hvac.information.brand string Required

                                                          Display name of OEM/vendor

                                                          Possible enum values:

                                                            TadoMillADAXEcobeeSensiboHoneywell TCCResideoMitsubishiMicro MaticNIBEPanasonicToshibaDAIKINNestFujitsuBoschNetatmo
                                                        • hvac.information.model string or null Required

                                                          Device model name

                                                        • hvac.information.displayName string Required

                                                          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.

                                                        • hvac.information.groupName string or null Required

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

                                                        • hvac.information.category string Required

                                                          Classification of the connected HVAC device.

                                                          • HEATING: A direct heating device, such as an electric panel heater

                                                          • COOLING: A direct cooling device, such as an air conditioner

                                                          • HEAT_PUMP: An air-to-air heat pump capable of both heating and cooling

                                                          • AGGREGATOR: A device that is capable of controlling various HVAC systems behind it, such as a smart thermostat

                                                          Possible enum values:

                                                            HEATINGCOOLINGHEAT_PUMPAGGREGATOR
                                                      • hvac.temperatureState object Required

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

                                                        Show child attributes
                                                        • hvac.temperatureState.currentTemperature number or null Required

                                                          Current air temperature reported by device in degrees Celsius.

                                                        • hvac.temperatureState.isActive boolean Required

                                                          Whether the HVAC unit is actively heating or cooling.

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

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

                                                      • hvac.thermostatState object Required

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

                                                        Show child attributes
                                                        • hvac.thermostatState.mode string Required

                                                          The current state of the HVAC unit.

                                                          • UNKNOWN: The mode of the HVAC unit is currently not available from the vendor or not supported by enode.
                                                          • OFF: The HVAC unit is turned off.
                                                          • AUTO: The HVAC unit will try to maintain the given setpoint by alternating between cooling and heating based on the ambient temperature
                                                          • COOL: The HVAC unit will only cool to the given setpoint.
                                                          • HEAT: The HVAC unit will only heat to the given setpoint

                                                          Possible enum values:

                                                            UNKNOWNOFFAUTOCOOLHEAT
                                                        • hvac.thermostatState.heatSetpoint number or null Required

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

                                                        • hvac.thermostatState.coolSetpoint number or null Required

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

                                                        • hvac.thermostatState.holdType string or null Required

                                                          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
                                                        • hvac.thermostatState.lastUpdated string<date-time> or null Required

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

                                                      • hvac.scopes array of string Required

                                                        Scopes that the user has granted for this HVAC unit.

                                                      • hvac.capabilities object Required

                                                        An object describing valid states for this HVAC unit.

                                                        Show child attributes
                                                        • hvac.capabilities.capableModes array of string or null Required

                                                          A list of valid modes for this HVAC unit.

                                                        • hvac.capabilities.coolSetpointRange object or null Required

                                                          The range of allowable values for coolSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.coolSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.heatSetpointRange object or null Required

                                                          The range of allowable values for heatSetpoint.

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

                                                            The minimum allowable temperature, inclusive.

                                                          • hvac.capabilities.heatSetpointRange.max number or null Required

                                                            The maximum allowable temperature, inclusive.

                                                        • hvac.capabilities.setpointDifferenceRange object or null Required

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

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

                                                            The minimum allowable difference, inclusive.

                                                          • hvac.capabilities.setpointDifferenceRange.max number or null Required

                                                            The maximum allowable difference, inclusive.

                                                        • hvac.capabilities.setFollowSchedule object Required

                                                          Supports following a schedule set on the device.

                                                          Show child attributes
                                                          • hvac.capabilities.setFollowSchedule.isCapable boolean Required

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

                                                          • hvac.capabilities.setFollowSchedule.interventionIds array of string Required

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

                                                        • hvac.capabilities.setPermanentHold object Required

                                                          Supports setting a permanent hold.

                                                          Show child attributes
                                                          • hvac.capabilities.setPermanentHold.isCapable boolean Required

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

                                                          • hvac.capabilities.setPermanentHold.interventionIds array of string Required

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

                                                      • hvac.location object Required
                                                        Show child attributes
                                                        • hvac.location.id string<uuid> or null Required

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

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:hvac:deleted",
                                                      "hvac": {
                                                        "id": "8f39fa8d-8f10-4984-a319-741dc23848c0",
                                                        "userId": "17d9f847-8a1c-4158-adaa-4911a7acd5f9",
                                                        "vendor": "ADAX",
                                                        "lastSeen": "2020-04-07T17:04:26.000Z",
                                                        "isReachable": true,
                                                        "consumptionRate": 1.8,
                                                        "information": {
                                                          "brand": "ADAX",
                                                          "model": "Neo Wi-Fi Skirting",
                                                          "displayName": "Bedroom Panel Heater",
                                                          "groupName": "Bedroom",
                                                          "category": "HEATING"
                                                        },
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe"
                                                        },
                                                        "capabilities": {
                                                          "capableModes": [
                                                            "HEAT",
                                                            "COOL",
                                                            "OFF"
                                                          ],
                                                          "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"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:inverter:discovered

                                                    Occurs whenever a new inverter is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:inverter:discovered
                                                    • inverter object Required

                                                      Solar inverter object

                                                      Show child attributes
                                                      • inverter.id string<uuid> Required

                                                        Solar Inverter ID

                                                      • inverter.userId string Required

                                                        The ID of the user that linked this inverter.

                                                      • inverter.vendor string Required

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

                                                        Possible enum values:

                                                          AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                                                      • inverter.lastSeen string<date-time> Required

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

                                                      • inverter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                                                      • inverter.productionState object Required

                                                        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
                                                        • inverter.productionState.productionRate number or null Required

                                                          The current production rate in kW.

                                                        • inverter.productionState.isProducing boolean or null Required

                                                          Whether the solar inverter is actively producing energy or not.

                                                        • inverter.productionState.totalLifetimeProduction number or null Required

                                                          The total lifetime production in kWh.

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

                                                          Time of last received production state update

                                                      • inverter.timezone string or null Required

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

                                                      • inverter.capabilities object Required

                                                        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
                                                        • inverter.capabilities.productionState object Required

                                                          Full availability of productionState data.

                                                          Show child attributes
                                                          • inverter.capabilities.productionState.isCapable boolean Required

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

                                                          • inverter.capabilities.productionState.interventionIds array of string Required

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

                                                        • inverter.capabilities.productionStatistics object Required

                                                          Availability of production statistics directly from the vendor.

                                                          Show child attributes
                                                          • inverter.capabilities.productionStatistics.isCapable boolean Required

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

                                                          • inverter.capabilities.productionStatistics.interventionIds array of string Required

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

                                                      • inverter.scopes array of string Required

                                                        Scopes that the user has granted for this inverter.

                                                      • inverter.information object Required

                                                        Descriptive information about the solar inverter

                                                        Show child attributes
                                                        • inverter.information.id string Required

                                                          Solar inverter vendor ID

                                                        • inverter.information.sn string or null Required

                                                          Solar inverter serial number

                                                        • inverter.information.brand string Required

                                                          Solar inverter brand

                                                          Possible enum values:

                                                            AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                                                        • inverter.information.model string Required

                                                          Solar inverter model

                                                        • inverter.information.siteName string Required

                                                          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.

                                                        • inverter.information.installationDate string<date-time> Required

                                                          Solar inverter installation date

                                                      • inverter.location object Required

                                                        Solar inverter's GPS coordinates

                                                        Show child attributes
                                                        • inverter.location.id string<uuid> or null Required

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

                                                        • inverter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • inverter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    Request example

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

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:inverter:updated

                                                    Occurs whenever an inverter's properties are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:inverter:updated
                                                    • inverter object Required

                                                      Solar inverter object

                                                      Show child attributes
                                                      • inverter.id string<uuid> Required

                                                        Solar Inverter ID

                                                      • inverter.userId string Required

                                                        The ID of the user that linked this inverter.

                                                      • inverter.vendor string Required

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

                                                        Possible enum values:

                                                          AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                                                      • inverter.lastSeen string<date-time> Required

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

                                                      • inverter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                                                      • inverter.productionState object Required

                                                        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
                                                        • inverter.productionState.productionRate number or null Required

                                                          The current production rate in kW.

                                                        • inverter.productionState.isProducing boolean or null Required

                                                          Whether the solar inverter is actively producing energy or not.

                                                        • inverter.productionState.totalLifetimeProduction number or null Required

                                                          The total lifetime production in kWh.

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

                                                          Time of last received production state update

                                                      • inverter.timezone string or null Required

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

                                                      • inverter.capabilities object Required

                                                        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
                                                        • inverter.capabilities.productionState object Required

                                                          Full availability of productionState data.

                                                          Show child attributes
                                                          • inverter.capabilities.productionState.isCapable boolean Required

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

                                                          • inverter.capabilities.productionState.interventionIds array of string Required

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

                                                        • inverter.capabilities.productionStatistics object Required

                                                          Availability of production statistics directly from the vendor.

                                                          Show child attributes
                                                          • inverter.capabilities.productionStatistics.isCapable boolean Required

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

                                                          • inverter.capabilities.productionStatistics.interventionIds array of string Required

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

                                                      • inverter.scopes array of string Required

                                                        Scopes that the user has granted for this inverter.

                                                      • inverter.information object Required

                                                        Descriptive information about the solar inverter

                                                        Show child attributes
                                                        • inverter.information.id string Required

                                                          Solar inverter vendor ID

                                                        • inverter.information.sn string or null Required

                                                          Solar inverter serial number

                                                        • inverter.information.brand string Required

                                                          Solar inverter brand

                                                          Possible enum values:

                                                            AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                                                        • inverter.information.model string Required

                                                          Solar inverter model

                                                        • inverter.information.siteName string Required

                                                          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.

                                                        • inverter.information.installationDate string<date-time> Required

                                                          Solar inverter installation date

                                                      • inverter.location object Required

                                                        Solar inverter's GPS coordinates

                                                        Show child attributes
                                                        • inverter.location.id string<uuid> or null Required

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

                                                        • inverter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • inverter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    • updatedFields array of string Required

                                                    Request example

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

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:inverter:deleted

                                                    Occurs whenever an inverter is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:inverter:deleted
                                                    • inverter object Required

                                                      Solar inverter object

                                                      Show child attributes
                                                      • inverter.id string<uuid> Required

                                                        Solar Inverter ID

                                                      • inverter.userId string Required

                                                        The ID of the user that linked this inverter.

                                                      • inverter.vendor string Required

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

                                                        Possible enum values:

                                                          AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUN
                                                      • inverter.lastSeen string<date-time> Required

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

                                                      • inverter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the inverter. If the inverter is not reachable, data updates will be delayed.

                                                      • inverter.productionState object Required

                                                        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
                                                        • inverter.productionState.productionRate number or null Required

                                                          The current production rate in kW.

                                                        • inverter.productionState.isProducing boolean or null Required

                                                          Whether the solar inverter is actively producing energy or not.

                                                        • inverter.productionState.totalLifetimeProduction number or null Required

                                                          The total lifetime production in kWh.

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

                                                          Time of last received production state update

                                                      • inverter.timezone string or null Required

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

                                                      • inverter.capabilities object Required

                                                        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
                                                        • inverter.capabilities.productionState object Required

                                                          Full availability of productionState data.

                                                          Show child attributes
                                                          • inverter.capabilities.productionState.isCapable boolean Required

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

                                                          • inverter.capabilities.productionState.interventionIds array of string Required

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

                                                        • inverter.capabilities.productionStatistics object Required

                                                          Availability of production statistics directly from the vendor.

                                                          Show child attributes
                                                          • inverter.capabilities.productionStatistics.isCapable boolean Required

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

                                                          • inverter.capabilities.productionStatistics.interventionIds array of string Required

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

                                                      • inverter.scopes array of string Required

                                                        Scopes that the user has granted for this inverter.

                                                      • inverter.information object Required

                                                        Descriptive information about the solar inverter

                                                        Show child attributes
                                                        • inverter.information.id string Required

                                                          Solar inverter vendor ID

                                                        • inverter.information.sn string or null Required

                                                          Solar inverter serial number

                                                        • inverter.information.brand string Required

                                                          Solar inverter brand

                                                          Possible enum values:

                                                            AforeAPsystemsCSISolarDeyeEnphaseFOXESSFroniusGivEnergyGoodWeGrowattHoymilesHuaweiINVTSMASofarSolarEdgeSolArkSolaxSolisSolplanetSungrowSUNSYNKTeslaTSUN
                                                        • inverter.information.model string Required

                                                          Solar inverter model

                                                        • inverter.information.siteName string Required

                                                          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.

                                                        • inverter.information.installationDate string<date-time> Required

                                                          Solar inverter installation date

                                                      • inverter.location object Required

                                                        Solar inverter's GPS coordinates

                                                        Show child attributes
                                                        • inverter.location.id string<uuid> or null Required

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

                                                        • inverter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • inverter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    Request example

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

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:inverter:statistics-updated

                                                    Occurs whenever inverter statistics are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:inverter:statistics-updated
                                                    • statistics object Required
                                                      Show child attributes
                                                      • statistics.timezone string Optional

                                                        The timezone of the inverter.

                                                      • statistics.resolutions object Optional
                                                        Show child attributes
                                                        • statistics.resolutions.QUARTER_HOUR object Optional
                                                          Show child attributes
                                                          • statistics.resolutions.QUARTER_HOUR.unit string Required

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

                                                            Possible enum values:

                                                              kWh
                                                          • statistics.resolutions.QUARTER_HOUR.data array of object or null Required

                                                            An array of data points representing the power production statistics.

                                                            Show child attributes
                                                            • statistics.resolutions.QUARTER_HOUR.data[].date string<date-time> Required

                                                              Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                                                            • statistics.resolutions.QUARTER_HOUR.data[].value number or null Required

                                                              The energy produced (kWh) in the specified interval. Null if no data is available.

                                                        • statistics.resolutions.DAY object Optional
                                                          Show child attributes
                                                          • statistics.resolutions.DAY.unit string Required

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

                                                            Possible enum values:

                                                              kWh
                                                          • statistics.resolutions.DAY.data array of object or null Required

                                                            An array of data points representing the power production statistics.

                                                            Show child attributes
                                                            • statistics.resolutions.DAY.data[].date string<date-time> Required

                                                              Time bucket start as a RFC3339 timestamp. Offset may be Z or ±hh:mm. In the unlikely event that an inverter changes timezone, the offset from when the data was retrieved is used, not the inverter's current timezone.

                                                            • statistics.resolutions.DAY.data[].value number or null Required

                                                              The energy produced (kWh) in the specified interval. Null if no data is available.

                                                      • statistics.inverterId string Required
                                                      • statistics.day number or null Required
                                                      • statistics.month number or null Required
                                                      • statistics.year number Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:inverter:statistics-updated",
                                                      "statistics": {
                                                        "timezone": "Europe/Oslo",
                                                        "resolutions": {
                                                          "QUARTER_HOUR": {
                                                            "unit": "kWh",
                                                            "data": [
                                                              {
                                                                "date": "2021-01-19T00:15:00+01:00",
                                                                "value": 1.1
                                                              }
                                                            ]
                                                          },
                                                          "DAY": {
                                                            "unit": "kWh",
                                                            "data": [
                                                              {
                                                                "date": "2021-01-19T00:15:00+01:00",
                                                                "value": 1.1
                                                              }
                                                            ]
                                                          }
                                                        },
                                                        "inverterId": "string",
                                                        "day": 0,
                                                        "month": 0,
                                                        "year": 0
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:battery:discovered

                                                    Occurs whenever a new battery is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:battery:discovered
                                                    • battery object Required

                                                      Battery object

                                                      Show child attributes
                                                      • battery.id string<uuid> Required

                                                        Unique identifier for the battery object

                                                      • battery.userId string Required

                                                        The ID of the user that linked this battery.

                                                      • battery.vendor string Required

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

                                                        Possible enum values:

                                                          TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMA
                                                      • battery.lastSeen string<date-time> Required

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

                                                      • battery.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

                                                      • battery.chargeState object Required

                                                        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
                                                        • battery.chargeState.status string or null Required

                                                          The power delivery state of the battery.

                                                          Possible enum values:

                                                            CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
                                                        • battery.chargeState.batteryCapacity number or null Required

                                                          Battery capacity in kWh.

                                                        • battery.chargeState.batteryLevel number or null Required

                                                          Remaining battery charge level in percent.

                                                        • battery.chargeState.chargeRate number or null Required

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

                                                        • battery.chargeState.dischargeLimit number or null Required

                                                          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.

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

                                                          Time of last received charge state update

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

                                                          The current operation mode of the battery.

                                                          • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
                                                          • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
                                                          • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

                                                          Possible enum values:

                                                            IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCEUNKNOWN
                                                        • battery.config.lastUpdated string<date-time> or null Required

                                                          Time of last received configuration update

                                                      • battery.information object Required

                                                        Descriptive information about the battery

                                                        Show child attributes
                                                        • battery.information.id string Required

                                                          Battery vendor ID

                                                        • battery.information.brand string Required

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

                                                          Possible enum values:

                                                            TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
                                                        • battery.information.model string Required

                                                          Battery model

                                                        • battery.information.siteName string Required

                                                          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.

                                                        • battery.information.installationDate string<date-time> Required

                                                          Battery installation date

                                                      • battery.capabilities object Required

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

                                                        Show child attributes
                                                        • battery.capabilities.exportFocus object Required

                                                          Supports EXPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.exportFocus.isCapable boolean Required

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

                                                          • battery.capabilities.exportFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.importFocus object Required

                                                          Supports IMPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.importFocus.isCapable boolean Required

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

                                                          • battery.capabilities.importFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.timeOfUse object Required

                                                          Supports TIME_OF_USE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.timeOfUse.isCapable boolean Required

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

                                                          • battery.capabilities.timeOfUse.interventionIds array of string Required

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

                                                        • battery.capabilities.selfReliance object Required

                                                          Supports SELF_RELIANCE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.selfReliance.isCapable boolean Required

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

                                                          • battery.capabilities.selfReliance.interventionIds array of string Required

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

                                                      • battery.scopes array of string Required

                                                        Scopes that the user has granted for this battery.

                                                      • battery.location object Required

                                                        Battery's GPS coordinates

                                                        Show child attributes
                                                        • battery.location.id string<uuid> or null Required

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

                                                        • battery.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • battery.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:battery:discovered",
                                                      "battery": {
                                                        "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
                                                        "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
                                                        "vendor": "TESLA",
                                                        "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": "Tesla",
                                                          "model": "Powerwall",
                                                          "siteName": "Powerwall Home",
                                                          "installationDate": "2020-04-07T17:04:26Z"
                                                        },
                                                        "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": [
                                                          "battery:control:operation_mode",
                                                          "battery:read:data",
                                                          "battery:read:location"
                                                        ],
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2020-04-07T17:04:26Z"
                                                        }
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:battery:updated

                                                    Occurs whenever a battery's properties are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:battery:updated
                                                    • battery object Required

                                                      Battery object

                                                      Show child attributes
                                                      • battery.id string<uuid> Required

                                                        Unique identifier for the battery object

                                                      • battery.userId string Required

                                                        The ID of the user that linked this battery.

                                                      • battery.vendor string Required

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

                                                        Possible enum values:

                                                          TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMA
                                                      • battery.lastSeen string<date-time> Required

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

                                                      • battery.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

                                                      • battery.chargeState object Required

                                                        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
                                                        • battery.chargeState.status string or null Required

                                                          The power delivery state of the battery.

                                                          Possible enum values:

                                                            CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
                                                        • battery.chargeState.batteryCapacity number or null Required

                                                          Battery capacity in kWh.

                                                        • battery.chargeState.batteryLevel number or null Required

                                                          Remaining battery charge level in percent.

                                                        • battery.chargeState.chargeRate number or null Required

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

                                                        • battery.chargeState.dischargeLimit number or null Required

                                                          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.

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

                                                          Time of last received charge state update

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

                                                          The current operation mode of the battery.

                                                          • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
                                                          • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
                                                          • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

                                                          Possible enum values:

                                                            IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCEUNKNOWN
                                                        • battery.config.lastUpdated string<date-time> or null Required

                                                          Time of last received configuration update

                                                      • battery.information object Required

                                                        Descriptive information about the battery

                                                        Show child attributes
                                                        • battery.information.id string Required

                                                          Battery vendor ID

                                                        • battery.information.brand string Required

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

                                                          Possible enum values:

                                                            TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
                                                        • battery.information.model string Required

                                                          Battery model

                                                        • battery.information.siteName string Required

                                                          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.

                                                        • battery.information.installationDate string<date-time> Required

                                                          Battery installation date

                                                      • battery.capabilities object Required

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

                                                        Show child attributes
                                                        • battery.capabilities.exportFocus object Required

                                                          Supports EXPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.exportFocus.isCapable boolean Required

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

                                                          • battery.capabilities.exportFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.importFocus object Required

                                                          Supports IMPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.importFocus.isCapable boolean Required

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

                                                          • battery.capabilities.importFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.timeOfUse object Required

                                                          Supports TIME_OF_USE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.timeOfUse.isCapable boolean Required

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

                                                          • battery.capabilities.timeOfUse.interventionIds array of string Required

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

                                                        • battery.capabilities.selfReliance object Required

                                                          Supports SELF_RELIANCE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.selfReliance.isCapable boolean Required

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

                                                          • battery.capabilities.selfReliance.interventionIds array of string Required

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

                                                      • battery.scopes array of string Required

                                                        Scopes that the user has granted for this battery.

                                                      • battery.location object Required

                                                        Battery's GPS coordinates

                                                        Show child attributes
                                                        • battery.location.id string<uuid> or null Required

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

                                                        • battery.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • battery.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:battery:updated",
                                                      "battery": {
                                                        "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
                                                        "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
                                                        "vendor": "TESLA",
                                                        "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": "Tesla",
                                                          "model": "Powerwall",
                                                          "siteName": "Powerwall Home",
                                                          "installationDate": "2020-04-07T17:04:26Z"
                                                        },
                                                        "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": [
                                                          "battery:control:operation_mode",
                                                          "battery:read:data",
                                                          "battery:read:location"
                                                        ],
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2020-04-07T17:04:26Z"
                                                        }
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:battery:deleted

                                                    Occurs whenever a battery is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:battery:deleted
                                                    • battery object Required

                                                      Battery object

                                                      Show child attributes
                                                      • battery.id string<uuid> Required

                                                        Unique identifier for the battery object

                                                      • battery.userId string Required

                                                        The ID of the user that linked this battery.

                                                      • battery.vendor string Required

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

                                                        Possible enum values:

                                                          TESLAENPHASEGIVENERGYHUAWEISOLAREDGESMA
                                                      • battery.lastSeen string<date-time> Required

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

                                                      • battery.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the battery. If the battery is not reachable, data updates will be delayed.

                                                      • battery.chargeState object Required

                                                        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
                                                        • battery.chargeState.status string or null Required

                                                          The power delivery state of the battery.

                                                          Possible enum values:

                                                            CHARGINGDISCHARGINGIDLEFAULTUNKNOWN
                                                        • battery.chargeState.batteryCapacity number or null Required

                                                          Battery capacity in kWh.

                                                        • battery.chargeState.batteryLevel number or null Required

                                                          Remaining battery charge level in percent.

                                                        • battery.chargeState.chargeRate number or null Required

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

                                                        • battery.chargeState.dischargeLimit number or null Required

                                                          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.

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

                                                          Time of last received charge state update

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

                                                          The current operation mode of the battery.

                                                          • SELF_RELIANCE: Minimizes household reliance on the grid. Prioritizes 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.
                                                          • TIME_OF_USE: Maximizes energy cost savings in accordance with a user-defined schedule matching a 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.
                                                          • IMPORT_FOCUS: Prioritizes charging the battery. Uses excess solar energy for charging and will charge from grid if possible. Leveraged energy sources depend on the configuration of the battery. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • EXPORT_FOCUS: Prioritizes discharging energy stored in the battery back to the household and any excess to the grid. Grid exports often depend on local regulation and might require agreements with grid providers to be supported. Note: Focus modes target a certain battery behavior but are ultimately internal to the battery. Actual behavior might differ from the focus mode.
                                                          • UNKNOWN: The mode of the battery is currently unknown. It might be possible to switch out of this mode and into one of the known modes. Actively returning to this mode is not possible.

                                                          Possible enum values:

                                                            IMPORT_FOCUSEXPORT_FOCUSTIME_OF_USESELF_RELIANCEUNKNOWN
                                                        • battery.config.lastUpdated string<date-time> or null Required

                                                          Time of last received configuration update

                                                      • battery.information object Required

                                                        Descriptive information about the battery

                                                        Show child attributes
                                                        • battery.information.id string Required

                                                          Battery vendor ID

                                                        • battery.information.brand string Required

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

                                                          Possible enum values:

                                                            TeslaEnphaseGivEnergyHuaweiSolarEdgeSMA
                                                        • battery.information.model string Required

                                                          Battery model

                                                        • battery.information.siteName string Required

                                                          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.

                                                        • battery.information.installationDate string<date-time> Required

                                                          Battery installation date

                                                      • battery.capabilities object Required

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

                                                        Show child attributes
                                                        • battery.capabilities.exportFocus object Required

                                                          Supports EXPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.exportFocus.isCapable boolean Required

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

                                                          • battery.capabilities.exportFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.importFocus object Required

                                                          Supports IMPORT_FOCUS operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.importFocus.isCapable boolean Required

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

                                                          • battery.capabilities.importFocus.interventionIds array of string Required

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

                                                        • battery.capabilities.timeOfUse object Required

                                                          Supports TIME_OF_USE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.timeOfUse.isCapable boolean Required

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

                                                          • battery.capabilities.timeOfUse.interventionIds array of string Required

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

                                                        • battery.capabilities.selfReliance object Required

                                                          Supports SELF_RELIANCE operation mode.

                                                          Show child attributes
                                                          • battery.capabilities.selfReliance.isCapable boolean Required

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

                                                          • battery.capabilities.selfReliance.interventionIds array of string Required

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

                                                      • battery.scopes array of string Required

                                                        Scopes that the user has granted for this battery.

                                                      • battery.location object Required

                                                        Battery's GPS coordinates

                                                        Show child attributes
                                                        • battery.location.id string<uuid> or null Required

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

                                                        • battery.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • battery.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:battery:deleted",
                                                      "battery": {
                                                        "id": "54d827e1-8355-4fed-97b5-55940d1d09ba",
                                                        "userId": "4f6fecd0-bdae-49be-b6e8-ee442e1e3da9",
                                                        "vendor": "TESLA",
                                                        "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": "Tesla",
                                                          "model": "Powerwall",
                                                          "siteName": "Powerwall Home",
                                                          "installationDate": "2020-04-07T17:04:26Z"
                                                        },
                                                        "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": [
                                                          "battery:control:operation_mode",
                                                          "battery:read:data",
                                                          "battery:read:location"
                                                        ],
                                                        "location": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2020-04-07T17:04:26Z"
                                                        }
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:meter:discovered

                                                    Occurs whenever a new meter is discovered for a user

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:meter:discovered
                                                    • meter object Required
                                                      Show child attributes
                                                      • meter.id string<uuid> Required

                                                        Unique identifier for the meter object

                                                      • meter.userId string Required

                                                        The ID of the user that linked this meter.

                                                      • meter.vendor string Required

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

                                                        Possible enum values:

                                                          ENPHASEGIVENERGYHUAWEITESLASMASOLAREDGE
                                                      • meter.lastSeen string<date-time> Required

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

                                                      • meter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

                                                      • meter.information object Required

                                                        Descriptive information about the meter

                                                        Show child attributes
                                                        • meter.information.brand string Required

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

                                                          Possible enum values:

                                                            EnphaseGivEnergyHuaweiTeslaSMASolarEdge
                                                        • meter.information.model string Required

                                                          Meter model

                                                        • meter.information.siteName string Required

                                                          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.

                                                        • meter.information.installationDate string<date-time> Required

                                                          Meter installation date

                                                      • meter.energyState object Required

                                                        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
                                                        • meter.energyState.power number or null Required

                                                          The current power measured by the meter in kW.

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

                                                          Time of last received energy state update.

                                                      • meter.location object Required

                                                        Meter's GPS coordinates

                                                        Show child attributes
                                                        • meter.location.id string<uuid> or null Required

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

                                                        • meter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • meter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                      • meter.capabilities object Required

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

                                                        Show child attributes
                                                        • meter.capabilities.measuresConsumption object Required

                                                          Indicates if the meter can measure consumed energy.

                                                          Show child attributes
                                                          • meter.capabilities.measuresConsumption.isCapable boolean Required

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

                                                          • meter.capabilities.measuresConsumption.interventionIds array of string Required

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

                                                        • meter.capabilities.measuresProduction object Required

                                                          Indicates if the meter can measure energy produced or generated.

                                                          Show child attributes
                                                          • meter.capabilities.measuresProduction.isCapable boolean Required

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

                                                          • meter.capabilities.measuresProduction.interventionIds array of string Required

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

                                                      • meter.scopes array of string Required

                                                        Scopes that the user has granted for this meter.

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:meter:discovered",
                                                      "meter": {
                                                        "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": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z"
                                                        },
                                                        "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"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:meter:updated

                                                    Occurs whenever a meter's properties are updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:meter:updated
                                                    • meter object Required
                                                      Show child attributes
                                                      • meter.id string<uuid> Required

                                                        Unique identifier for the meter object

                                                      • meter.userId string Required

                                                        The ID of the user that linked this meter.

                                                      • meter.vendor string Required

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

                                                        Possible enum values:

                                                          ENPHASEGIVENERGYHUAWEITESLASMASOLAREDGE
                                                      • meter.lastSeen string<date-time> Required

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

                                                      • meter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

                                                      • meter.information object Required

                                                        Descriptive information about the meter

                                                        Show child attributes
                                                        • meter.information.brand string Required

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

                                                          Possible enum values:

                                                            EnphaseGivEnergyHuaweiTeslaSMASolarEdge
                                                        • meter.information.model string Required

                                                          Meter model

                                                        • meter.information.siteName string Required

                                                          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.

                                                        • meter.information.installationDate string<date-time> Required

                                                          Meter installation date

                                                      • meter.energyState object Required

                                                        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
                                                        • meter.energyState.power number or null Required

                                                          The current power measured by the meter in kW.

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

                                                          Time of last received energy state update.

                                                      • meter.location object Required

                                                        Meter's GPS coordinates

                                                        Show child attributes
                                                        • meter.location.id string<uuid> or null Required

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

                                                        • meter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • meter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                      • meter.capabilities object Required

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

                                                        Show child attributes
                                                        • meter.capabilities.measuresConsumption object Required

                                                          Indicates if the meter can measure consumed energy.

                                                          Show child attributes
                                                          • meter.capabilities.measuresConsumption.isCapable boolean Required

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

                                                          • meter.capabilities.measuresConsumption.interventionIds array of string Required

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

                                                        • meter.capabilities.measuresProduction object Required

                                                          Indicates if the meter can measure energy produced or generated.

                                                          Show child attributes
                                                          • meter.capabilities.measuresProduction.isCapable boolean Required

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

                                                          • meter.capabilities.measuresProduction.interventionIds array of string Required

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

                                                      • meter.scopes array of string Required

                                                        Scopes that the user has granted for this meter.

                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:meter:updated",
                                                      "meter": {
                                                        "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": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z"
                                                        },
                                                        "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"
                                                        ]
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:meter:deleted

                                                    Occurs whenever a meter is deleted

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:meter:deleted
                                                    • meter object Required
                                                      Show child attributes
                                                      • meter.id string<uuid> Required

                                                        Unique identifier for the meter object

                                                      • meter.userId string Required

                                                        The ID of the user that linked this meter.

                                                      • meter.vendor string Required

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

                                                        Possible enum values:

                                                          ENPHASEGIVENERGYHUAWEITESLASMASOLAREDGE
                                                      • meter.lastSeen string<date-time> Required

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

                                                      • meter.isReachable boolean Required

                                                        Indicates whether Enode can currently access live data from the meter. If the meter is not reachable, data updates will be delayed.

                                                      • meter.information object Required

                                                        Descriptive information about the meter

                                                        Show child attributes
                                                        • meter.information.brand string Required

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

                                                          Possible enum values:

                                                            EnphaseGivEnergyHuaweiTeslaSMASolarEdge
                                                        • meter.information.model string Required

                                                          Meter model

                                                        • meter.information.siteName string Required

                                                          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.

                                                        • meter.information.installationDate string<date-time> Required

                                                          Meter installation date

                                                      • meter.energyState object Required

                                                        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
                                                        • meter.energyState.power number or null Required

                                                          The current power measured by the meter in kW.

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

                                                          Time of last received energy state update.

                                                      • meter.location object Required

                                                        Meter's GPS coordinates

                                                        Show child attributes
                                                        • meter.location.id string<uuid> or null Required

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

                                                        • meter.location.longitude number or null Required

                                                          Longitude in degrees

                                                        • meter.location.latitude number or null Required

                                                          Latitude in degrees

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

                                                          Time of last received location state update

                                                      • meter.capabilities object Required

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

                                                        Show child attributes
                                                        • meter.capabilities.measuresConsumption object Required

                                                          Indicates if the meter can measure consumed energy.

                                                          Show child attributes
                                                          • meter.capabilities.measuresConsumption.isCapable boolean Required

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

                                                          • meter.capabilities.measuresConsumption.interventionIds array of string Required

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

                                                        • meter.capabilities.measuresProduction object Required

                                                          Indicates if the meter can measure energy produced or generated.

                                                          Show child attributes
                                                          • meter.capabilities.measuresProduction.isCapable boolean Required

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

                                                          • meter.capabilities.measuresProduction.interventionIds array of string Required

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

                                                      • meter.scopes array of string Required

                                                        Scopes that the user has granted for this meter.

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:meter:deleted",
                                                      "meter": {
                                                        "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": {
                                                          "id": "8d90101b-3f2f-462a-bbb4-1ed320d33bbe",
                                                          "longitude": 10.7197486,
                                                          "latitude": 59.9173985,
                                                          "lastUpdated": "2024-01-07T17:04:26.000Z"
                                                        },
                                                        "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"
                                                        ]
                                                      }
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:credentials:invalidated

                                                    Occurs whenever the connection needs to be relinked

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:credentials:invalidated
                                                    • vendor string Required

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

                                                      Possible enum values:

                                                        AFOREAPSYSTEMSCSISolarDeyeENPHASEFOXESSFRONIUSGIVENERGYGOODWEGROWATTHoymilesHUAWEIINVTSMASOFARSOLAREDGESOLARKSOLAXSOLISSOLPLANETSUNGROWSUNSYNKTESLATSUNACURAAUDIBMWHONDAHYUNDAIJAGUARLANDROVERKIAMERCEDESMININISSANPEUGEOTPORSCHERENAULTSEATSKODAVOLKSWAGENVOLVOFORDOPELDSTOYOTALEXUSCITROENCUPRAVAUXHALLFIATRIVIANNIOCHEVROLETGMCCADILLACXPENGPOLESTARSUBARUJEEPMAZDAMGCHRYSLERDODGERAMALFAROMEOLANCIALUCIDBYDTADOMILLADAXECOBEESENSIBOHONEYWELLRESIDEOMITSUBISHIMICROMATICNIBEPANASONICTOSHIBADAIKINNESTFUJITSUBOSCHNETATMOZAPTECEASEEWALLBOXEOCHARGEAMPSEVBOXGOECHARGEPOINTENELXOHMEGAROSCHNEIDERPODPOINTKEBAHYPERVOLTMYENERGIHEIDELBERG

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:credentials:invalidated",
                                                      "vendor": "TESLA"
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:vendor-action:updated

                                                    Occurs whenever an action changes state

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:vendor-action:updated
                                                    • vendorAction Required
                                                    • updatedFields Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:vendor-action:updated",
                                                      "vendorAction": {
                                                        "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"
                                                        }
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    user:schedule:execution-updated

                                                    Occurs whenever a schedule's status is updated

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • user object Required
                                                      Show child attributes
                                                      • user.id string Required

                                                        User ID

                                                    • event string Required

                                                      Possible enum values:

                                                        user:schedule:execution-updated
                                                    • status Required
                                                    • schedule Required
                                                    • updatedFields array of string Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "user": {
                                                        "id": "string"
                                                      },
                                                      "event": "user:schedule:execution-updated",
                                                      "status": {
                                                        "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
                                                          }
                                                        ],
                                                        "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"
                                                        }
                                                      },
                                                      "schedule": {
                                                        "isEnabled": true,
                                                        "defaultShouldCharge": true,
                                                        "rules": [
                                                          {
                                                            "hourMinute": {
                                                              "from": "08: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
                                                          }
                                                        ],
                                                        "targetId": "string",
                                                        "targetType": "vehicle",
                                                        "locationId": "4eaeb363-296d-4ccc-a973-7805e6f400bd",
                                                        "id": "string"
                                                      },
                                                      "updatedFields": [
                                                        "string"
                                                      ]
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    system:heartbeat

                                                    Occurs whenever a system heartbeat event is triggered

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • event string Required

                                                      Possible enum values:

                                                        system:heartbeat
                                                    • pendingEvents number Required

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "event": "system:heartbeat",
                                                      "pendingEvents": 0
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?

                                                    enode:webhook:test

                                                    Occurs whenever a webhook test event is triggered

                                                    Request

                                                    Attributes
                                                    • createdAt string<date-time> Required

                                                      ISO8601 UTC timestamp

                                                    • version string Required

                                                      API version of the payload

                                                    • event string Required

                                                      Possible enum values:

                                                        enode:webhook:test

                                                    Request example

                                                    {
                                                      "createdAt": "2020-04-07T17:04:26Z",
                                                      "version": "2024-10-01",
                                                      "event": "enode:webhook:test"
                                                    }

                                                    Response 200

                                                    The subscriber should return 200 OK to acknowledge the webhook has been received

                                                    Was this section helpful?