Download OpenAPI specification:Download
Welcome to the Powernaut API Reference!
Our API offers a robust and secure way to connect your flexible resources to flexibility buyers such as energy utilities/suppliers and system operators.
This OpenAPI documentation is designed to provide a comprehensive and easy-to-understand guide for developers who are integrating their systems with Powernaut’s platform.
By leveraging our API, you can seamlessly offer flexibility in several electricity markets, opening up additional revenue streams for your resources while contributing to a greener and more efficient electricity grid.
Gets an authentication access token, to be used to authenticate calls to all other endpoints.
Include this token in the headers of all other endpoint calls:
Authorization: Bearer <token>
authorization required | string Header value for HTTP Basic authentication. To encode the credentials:
Example:
|
import requests url = "https://api.powernaut.io/v1/auth/token" payload = {} headers = { 'Accept': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
{- "access_token": "string",
- "expires_in": 3600,
- "token_type": "Bearer"
}
Register, modify or delete sites.
Sites are the start of everything, they are required to uniquely identify the end consumer's connection to the grid. They define the meter point(s) for which flexibility is activated.
⚠️ The /v1/connect/connection-points
endpoints have moved to /v1/connect/sites
. The original paths have been deprecated.
Create a new connection point.
The credentials returned can be used for edge-cloud authentication, if needed.
grid_identifier | string Deprecated The grid identifier for this site (e.g. EAN/MPAN/...). Common prefixes will be stripped. |
required | AddressLocationDto (object) or GeoLocationDto (object) Location of the site, can either be coordinates or a full-text address (incl. country). |
required | Array of objects (CreateSupplyPointDto) List of supply points linked to this site. This is the prefered way of passing the grid identifier(s) of a site. |
{- "grid_identifier": "00000000",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z",
- "credentials": {
- "key": "4adfe27e-63d3-45b9-8238-62b6ed6fdb5e",
- "secret": "secret"
}
}
Gets all connection points available to your current authorised scope. Results are ordered based on creation date (most recent first).
page | number >= 1 Default: 1 Page number |
page_size | number >= 1 Default: 10 Page size |
import requests url = "https://api.powernaut.io/v1/connect/connection-points?page=1&page_size=10" payload = {} headers = { 'Accept': 'application/json', 'Authorization': 'Bearer <token>' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
{- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
]
}
Gets a connection point by its unique ID.
id required | string <uuid> Identifier of the connection point. |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Update a connection point by its unique ID.
Only the properties you provide will be updated. Use null
to unset a property.
id required | string <uuid> Identifier of the connection point you want to update. |
grid_identifier | string Deprecated The grid identifier for this site (e.g. EAN/MPAN/...). Common prefixes will be stripped. |
AddressLocationDto (object) or GeoLocationDto (object) Location of the site, can either be coordinates or a full-text address (incl. country). | |
Array of objects (CreateSupplyPointDto) List of supply points linked to this site. This is the prefered way of passing the grid identifier(s) of a site. |
{- "grid_identifier": "00000000",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Delete a connection point
Imporant: This action is irreversible and will remove all associated resources and bids.
id required | string <uuid> Identifier of the connection point you want to delete. |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Creates new credentials and marks the old ones for rotation.
Both sets of credentials remain valid until the rotation is either completed or canceled. This allows for a seamless transition between the old and new credentials, ensuring that there is no downtime or disruption in service during the rotation process.
id required | string <uuid> Connection point ID |
{- "key": "4adfe27e-63d3-45b9-8238-62b6ed6fdb5e",
- "secret": "secret"
}
Completes the credential rotation process by permanently removing the old credentials from the system. Once this operation is performed, the old credentials will no longer be valid and this action cannot be undone.
id required | string <uuid> Connection point ID |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Cancels the credential rotation process. This action will remove the newly generated credentials and retain the old credentials, keeping them active and valid.
id required | string <uuid> Connection point ID |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Create a new site.
The credentials returned can be used for edge-cloud authentication, if needed.
grid_identifier | string Deprecated The grid identifier for this site (e.g. EAN/MPAN/...). Common prefixes will be stripped. |
required | AddressLocationDto (object) or GeoLocationDto (object) Location of the site, can either be coordinates or a full-text address (incl. country). |
required | Array of objects (CreateSupplyPointDto) List of supply points linked to this site. This is the prefered way of passing the grid identifier(s) of a site. |
{- "grid_identifier": "00000000",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z",
- "credentials": {
- "key": "4adfe27e-63d3-45b9-8238-62b6ed6fdb5e",
- "secret": "secret"
}
}
Gets all sites available to your current authorised scope. Results are ordered based on creation date (most recent first).
page | number >= 1 Default: 1 Page number |
page_size | number >= 1 Default: 10 Page size |
import requests url = "https://api.powernaut.io/v1/connect/sites?page=1&page_size=10" payload = {} headers = { 'Accept': 'application/json', 'Authorization': 'Bearer <token>' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
{- "total": 0,
- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
]
}
Gets a site by its unique ID.
id required | string <uuid> Identifier of the site. |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Update a site by its unique ID.
Only the properties you provide will be updated. Use null
to unset a property.
id required | string <uuid> Identifier of the site you want to update. |
grid_identifier | string Deprecated The grid identifier for this site (e.g. EAN/MPAN/...). Common prefixes will be stripped. |
AddressLocationDto (object) or GeoLocationDto (object) Location of the site, can either be coordinates or a full-text address (incl. country). | |
Array of objects (CreateSupplyPointDto) List of supply points linked to this site. This is the prefered way of passing the grid identifier(s) of a site. |
{- "grid_identifier": "00000000",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
]
}
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "no_resources",
- "upstream_status": "no_upstream_registered",
- "location": {
- "address": "Full-text address, including country"
}, - "supply_points": [
- {
- "grid_identifier": "00000000",
- "direction": "bidirectional"
}
], - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Delete a site
Imporant: This action is irreversible and will remove all associated resources and bids.
id required | string <uuid> Identifier of the site you want to delete. |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Creates new credentials and marks the old ones for rotation.
Both sets of credentials remain valid until the rotation is either completed or canceled. This allows for a seamless transition between the old and new credentials, ensuring that there is no downtime or disruption in service during the rotation process.
id required | string <uuid> Site ID |
{- "key": "4adfe27e-63d3-45b9-8238-62b6ed6fdb5e",
- "secret": "secret"
}
Completes the credential rotation process by permanently removing the old credentials from the system. Once this operation is performed, the old credentials will no longer be valid and this action cannot be undone.
id required | string <uuid> Site ID |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Cancels the credential rotation process. This action will remove the newly generated credentials and retain the old credentials, keeping them active and valid.
id required | string <uuid> Site ID |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Register, modify or delete flexible resources.
You can add flexible resources to each site, such as batteries, heat pumps, electric vehicles, ... They are the physical resource that can offer flexibility.
Each resource has an enrollment status for the markets it can participate in, which you can query.
Create a new resource.
A maximum of 10 resources can be created per connection point.
name | string non-empty Human-readable name for this resource. Useful for reporting, but not required. |
type required | string Enum: "static_battery" "heat_pump" "electric_vehicle" "electric_vehicle_charging_point" "photovoltaic" "wind" "other" Type of energy resource (battery, heat pump, solar, etc.). |
required | object Power constraints for this resource. |
object Capacity constraints for this resource (in kWh). This property is currently only required for battery resources. | |
connection_point_id required | string <uuid> Deprecated Identifier for the connection point that this resource is part of. Replaced by |
site_id required | string <uuid> Identifier for the site that this resource is part of. |
object Webhooks related to this resource, for example to be notified about the acceptance of a bid for this resource. |
{- "name": "Home Battery",
- "type": "static_battery",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "connection_point_id": "ae944f51-5a77-4711-9dcc-c522537596d9",
- "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",
}
{- "name": "Home Battery",
- "type": "static_battery",
- "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "connection_point_id": "ae944f51-5a77-4711-9dcc-c522537596d9",
- "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Gets all resources available to your current authorised scope, or for a connection point specifically.
site_id | string <uuid> Identifier of the site to fetch resources for. |
connection_point_id | string <uuid> Deprecated Identifier of the connection point to fetch resources for. |
import requests url = "https://api.powernaut.io/v1/connect/resources?site_id=<uuid>&connection_point_id=<uuid>" payload = {} headers = { 'Accept': 'application/json', 'Authorization': 'Bearer <token>' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
{- "total": 0,
- "items": [
- {
- "name": "Home Battery",
- "type": "static_battery",
- "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "connection_point_id": "ae944f51-5a77-4711-9dcc-c522537596d9",
- "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
]
}
Gets a resource by its unique ID.
id required | string <uuid> Identifier of the resource. |
{- "name": "Home Battery",
- "type": "static_battery",
- "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "connection_point_id": "ae944f51-5a77-4711-9dcc-c522537596d9",
- "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Update a resource by its unique ID.
Only the properties you provide will be updated. Use null
to unset a property.
id required | string <uuid> Identifier of the resource you want to update. |
name | string non-empty Human-readable name for this resource. Useful for reporting, but not required. |
type | string Enum: "static_battery" "heat_pump" "electric_vehicle" "electric_vehicle_charging_point" "photovoltaic" "wind" "other" Type of energy resource (battery, heat pump, solar, etc.). |
object Power constraints for this resource. | |
object Capacity constraints for this resource (in kWh). This property is currently only required for battery resources. | |
object Webhooks related to this resource, for example to be notified about the acceptance of a bid for this resource. |
{- "name": "Home Battery",
- "type": "static_battery",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
},
}
{- "name": "Home Battery",
- "type": "static_battery",
- "capacity": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "connection_point_id": "ae944f51-5a77-4711-9dcc-c522537596d9",
- "site_id": "72771e6a-6f5e-4de4-a5b9-1266c4197811",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "power": {
- "active": {
- "minimum": "5.1",
- "maximum": "5.1"
}, - "reactive": {
- "minimum": "5.1",
- "maximum": "5.1"
}
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z",
- "last_seen_at": "2025-01-07T15:08:22Z"
}
Delete a resource
Imporant: This action is irreversible and will remove all associated bids.
id required | string <uuid> Identifier of the resource you want to delete. |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Gets the historical activations for a resource.
Results are ordered in descending order by actual start time. You can filter the activations by date range.
id required | string <uuid> Identifier of the resource you want to get activations for. |
page | number Page number |
page_size | number Page size |
start | string An optional date from which to start filtering activations (ISO 8601) |
end | string An optional date until which to filter activations (ISO 8601) |
{- "total": 0,
- "items": [
- {
- "start": "2024-03-15T10:30:00Z",
- "end": "2024-03-15T10:30:00Z",
- "value": "100",
- "energy": "100",
- "direction": "upward",
- "resource_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "resource_type": "static_battery",
- "site_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "bid_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
]
}
Markets are the electricity markets in which you can participate. Each market has a set of eligibility criteria, which you can query to see if you can participate in a certain market.
Read our guide for more information.
Retrieves the markets a connection point can have access to.
Whether a market is available or not depends on the combination of a few factors:
Whether or not the owner of the connection point is contractually connected to the market via its supplier
Whether or not the connection point is located in the market's service area (geographically)
Whether or not the connection point and its resources meet the market's eligibility criteria (technical requirements)
The result contains all contractually available markets, with a status
property indicating whether or not the connection point can access the market.
The different values of the market status of a connection point are:
active
- The connection point is active on this market.
ineligible
- The connection point is not eligible for this market (for example due to technical, or geographical reasons).
action_required
- Further action is required from the site to activate this market.
When the status is action_required
, further action is required to activate the market. Look at the action
property for more information.
id required | string <uuid> Identifier of the connection point you want to get markets for. |
[- {
- "name": "string",
- "status": "active"
}
]
Retrieves the markets a site can have access to.
Whether a market is available or not depends on the combination of a few factors:
Whether or not the owner of the site is contractually connected to the market via its supplier
Whether or not the site is located in the market's service area (geographically)
Whether or not the site and its resources meet the market's eligibility criteria (technical requirements)
The result contains all contractually available markets, with a status
property indicating whether or not the site can access the market.
The different values of the market status of a site are:
active
- The site is active on this market.
ineligible
- The site is not eligible for this market (for example due to technical, or geographical reasons).
action_required
- Further action is required from the site to activate this market.
When the status is action_required
, further action is required to activate the market. Look at the action
property for more information.
id required | string <uuid> Identifier of the site you want to get markets for. |
[- {
- "name": "string",
- "status": "active"
}
]
With baselining, you indicate your normal consumption/production behaviour.
This baseline is essential to provide flexibility, which is then defined as a deviation from this baseline. You can provide a baseline either for a site, or a resource.
See the guide for more information.
Retrieve baseline data for the connection point (active
power only).
id required | string <uuid> Identifier of the connection point you want to retrieve the baseline data for. |
amount required | number [ 1 .. 48 ] Number of timesteps to be included in the time window. |
start required | string Start of window (ISO 8601). Must be a perfect minute without seconds or milliseconds precision. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
granularity required | string The granularity to fetch the state for, i.e. the time length of each element. It cannot be smaller than 1 minute, and cannot contain sub-minute precision. The expected format is ISO8601. |
{- "items": [
- "string"
]
}
Add a baseline for a connection point.
This operation will override any existing baseline values that might overlap.
id required | string <uuid> Identifier of the connection point you want to add a baseline for. |
start required | string Start of window (ISO 8601). Must be a perfect quarter-hour. Constraints: This must be at least the current quarter-hour, and cannot be more than 96 quarter-hours in the future. Length: Each baseline value is for a period of a quarter-hour, so the length of this period is defined by the amount of elements in Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
type | string Deprecated Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to Note: This is deprecated and will be removed in a future version. Please use |
power_type | string Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to |
values required | Array of strings [ 1 .. 96 ] items The baseline values, starting from timestamp This is the active/reactive power that will be imported/exported (in Supports up to 96 elements. |
{- "start": "2024-07-01T14:00:00Z",
- "type": "active",
- "power_type": "active",
- "values": [
- "string"
]
}
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Retrieve baseline data for the site (active
power only).
id required | string <uuid> Identifier of the site you want to retrieve the baseline data for. |
amount required | number [ 1 .. 48 ] Number of timesteps to be included in the time window. |
start required | string Start of window (ISO 8601). Must be a perfect minute without seconds or milliseconds precision. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
granularity required | string The granularity to fetch the state for, i.e. the time length of each element. It cannot be smaller than 1 minute, and cannot contain sub-minute precision. The expected format is ISO8601. |
{- "items": [
- "string"
]
}
Add a baseline for a site.
This operation will override any existing baseline values that might overlap.
id required | string <uuid> Identifier of the site you want to add a baseline for. |
start required | string Start of window (ISO 8601). Must be a perfect quarter-hour. Constraints: This must be at least the current quarter-hour, and cannot be more than 96 quarter-hours in the future. Length: Each baseline value is for a period of a quarter-hour, so the length of this period is defined by the amount of elements in Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
type | string Deprecated Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to Note: This is deprecated and will be removed in a future version. Please use |
power_type | string Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to |
values required | Array of strings [ 1 .. 96 ] items The baseline values, starting from timestamp This is the active/reactive power that will be imported/exported (in Supports up to 96 elements. |
{- "start": "2024-07-01T14:00:00Z",
- "type": "active",
- "power_type": "active",
- "values": [
- "string"
]
}
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Add a baseline for a resource.
This operation will override any existing baseline values that might overlap.
id required | string <uuid> Identifier of the resource you want to add a baseline for. |
start required | string Start of window (ISO 8601). Must be a perfect quarter-hour. Constraints: This must be at least the current quarter-hour, and cannot be more than 96 quarter-hours in the future. Length: Each baseline value is for a period of a quarter-hour, so the length of this period is defined by the amount of elements in Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
type | string Deprecated Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to Note: This is deprecated and will be removed in a future version. Please use |
power_type | string Enum: "active" "reactive" Type of power for this baseline (active vs. reactive). Defaults to |
values required | Array of strings [ 1 .. 96 ] items The baseline values, starting from timestamp This is the active/reactive power that will be imported/exported (in Supports up to 96 elements. |
{- "start": "2024-07-01T14:00:00Z",
- "type": "active",
- "power_type": "active",
- "values": [
- "string"
]
}
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}
Add a bid for a resource.
id required | string <uuid> Identifier of the resource you want to add a bid for. |
required | object Time window when the power is available (e.g., 18:00-18:15). This must be a perfect quarter-hour in length. Only one bid per resource is allowed per time window. |
type | string Deprecated Enum: "active" "reactive" Type of power for this bid (active vs. reactive). Defaults to Note: This is deprecated and will be removed in a future version. Please use |
power_type | string Enum: "active" "reactive" Type of power for this bid (active vs. reactive). Defaults to |
required | Array of objects (PricePointDto) [ 1 .. 100 ] items The bid curve, see the guide for more information. |
expires_at | string <date-time> When this bid should expire (ISO 8601). This can be used to automatically expire bids at a certain time, e.g. when you need enough time to react on its acceptance. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
object Webhooks related to this bid, for example to be notified about a bid's acceptance. |
{- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
}
{- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
- "status": "open",
- "activation": {
- "value": "5.1",
- "price": "5.1",
- "created_at": "2024-07-01T14:00:00Z"
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z"
}
Retrieves the actual real-time data for this connection point
id required | string <uuid> Identifier of the connection point you want to get real-time data for. |
start required | string Start of window (ISO 8601). Must be a perfect minute without seconds or milliseconds precision. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
amount required | number [ 1 .. 48 ] Number of timesteps to be included in the time window. |
granularity required | string The granularity to fetch the state for, i.e. the time length of each element. It cannot be smaller than 1 minute, and cannot contain sub-minute precision. The expected format is ISO8601. |
{- "items": [
- "5100",
- "5200",
- "5300"
]
}
Retrieves the actual real-time data for this site
id required | string <uuid> Identifier of the site you want to get real-time data for. |
start required | string Start of window (ISO 8601). Must be a perfect minute without seconds or milliseconds precision. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
amount required | number [ 1 .. 48 ] Number of timesteps to be included in the time window. |
granularity required | string The granularity to fetch the state for, i.e. the time length of each element. It cannot be smaller than 1 minute, and cannot contain sub-minute precision. The expected format is ISO8601. |
{- "items": [
- "5100",
- "5200",
- "5300"
]
}
Bids get accepted when there's a need for them. You need to activate when they get accepted, i.e. act on the requested flexibility.
During bidding, you can set a webhook to receive activation events on.
To make webhooks easy to implement, while also being secure, a webhook contains only a single reference to the bid that was accepted. You should use this reference to fetch the activation details by looking up the accepted bid.
See this endpoint for details on how to look up activation details.
You should reply with a 2XX
status code, indicating you have successfully activated the asset.
You can also reply with a 406
status code if you notice that the activation cannot be delivered upon for some reason (e.g. a suddenly disconnected car).
We will retry your webhook up to 3 times in case you:
2XX
or 406
status code or,Our portal shows a log of both successful and failed webhook calls.
X-Powernaut-Webhook-Version | string Example: v1 A version indicator for this webhook, used to track changes to the webhook implementation. At the moment, this is always |
id required | string <uuid> Identifier for the bid that has been accepted. You can use this to look up the details of the activation. |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08"
}
Manage your bids. You can update, cancel and receive notifications about bids.
When a bid is accepted, you either get notified or you poll for status updates.
Read more here
Gets all accepted or open bids available to your current authorised scope.
Accepted bids need to be acted upon and the requested flexibility should be provided.
page | number >= 1 Default: 1 Page number |
page_size | number >= 1 Default: 10 Page size |
status | string Enum: "open" "accepted" Status of the bids (accepted or open). If not provided, all open & accepted bids will be returned. |
import requests url = "https://api.powernaut.io/v1/connect/bids?page=1&page_size=10&status=<string>" payload = {} headers = { 'Accept': 'application/json', 'Authorization': 'Bearer <token>' } response = requests.request("GET", url, headers=headers, data=payload) print(response.text)
{- "total": 0,
- "items": [
- {
- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
- "status": "open",
- "activation": {
- "value": "5.1",
- "price": "5.1",
- "created_at": "2024-07-01T14:00:00Z"
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z"
}
]
}
Gets a bid by its unique ID.
Can be used to look up a bid, and its activation after you've received a notification that it was accepted, see the activation
property in the response of this endpoint.
id required | string <uuid> Identifier of the bid. |
{- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
- "status": "open",
- "activation": {
- "value": "5.1",
- "price": "5.1",
- "created_at": "2024-07-01T14:00:00Z"
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z"
}
Update a bid by its unique ID.
Only open bids can be updated.
Only the properties you provide will be updated. Use null
to unset a property.
id required | string <uuid> Identifier of the bid you want to update. |
object Time window when the power is available (e.g., 18:00-18:15). This must be a perfect quarter-hour in length. Only one bid per resource is allowed per time window. | |
type | string Deprecated Enum: "active" "reactive" Type of power for this bid (active vs. reactive). Defaults to Note: This is deprecated and will be removed in a future version. Please use |
power_type | string Enum: "active" "reactive" Type of power for this bid (active vs. reactive). Defaults to |
Array of objects (PricePointDto) [ 1 .. 100 ] items The bid curve, see the guide for more information. | |
expires_at | string <date-time> When this bid should expire (ISO 8601). This can be used to automatically expire bids at a certain time, e.g. when you need enough time to react on its acceptance. Note: To avoid timezone issues, we perform an additional check for the presence of timezone information. You should always include either UTC with |
object Webhooks related to this bid, for example to be notified about a bid's acceptance. |
{- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
}
{- "timing": {
- "start": "2024-07-01T14:00:00Z",
- "end": "2024-07-01T14:15:00Z"
}, - "type": "active",
- "power_type": "active",
- "curve": [
- {
- "value": "5.1",
- "price": "5.1"
}
], - "expires_at": "2024-01-05T11:30:15Z",
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "resource_id": "4d5215ed-38bb-48ed-879a-fdb9ca58522f",
- "status": "open",
- "activation": {
- "value": "5.1",
- "price": "5.1",
- "created_at": "2024-07-01T14:00:00Z"
}, - "created_at": "2024-01-05T11:30:15Z",
- "modified_at": "2024-01-05T11:30:15Z"
}
Cancels a bid by its unique ID.
Only open bids can be canceled.
id required | string <uuid> Identifier of the bid you want to cancel. |
{- "message": [
- "Invalid datetime",
- "Invalid page size"
], - "error": "Bad Request",
- "status_code": 400
}