curl --request GET \
--url https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"aggregator": "grid_operator",
"allocation_basis": "metered",
"area_code": "10YDE-RWENET---I",
"area_kind": "metering_grid_area",
"balance_group": "11XBILANZKREIS-X",
"external_id": "<string>",
"flow_direction": "consumption",
"market_dimensions": {
"series_type": "SLS"
},
"market_meta": {
"summed_series": "Z97"
},
"supplier": "9900000000001"
}
],
"limit": 123,
"offset": 123,
"total": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}List Aggregate Allocation Series
Show the series of the aggregate allocations that agree with the filters.
Each series is one aggregate allocation, with the aggregation dimensions that the market gave for it. Each aggregate allocation record has the external_id of its aggregate allocation. Use this external_id to find the values of an aggregate allocation in List Aggregate Allocations. The list also includes the aggregate allocations that have no values.
If the supplier or the balance group is null, the aggregate allocation includes the accounting points of all suppliers or all balance groups. If a key is not in the market dimensions, the aggregate allocation includes the accounting points of all values of that aggregation dimension. A supplier or balance_group filter does not select an aggregate allocation in which that value is null.
The list shows the aggregate allocations in the sequence of external_id, then flow_direction. To read the full list, use offset and limit to get one page at a time. total is the number of aggregate allocations that agree with the filters, on all pages.
The API gives the status code 422 in these conditions:
-
An
areafilter is not in the formatkind:code, or it has an unknown area kind. -
A
market_dimensionfilter is not in the formatkey:value. -
A
market_dimensionfilter has one key two times. -
A
flow_direction,aggregatororallocation_basisfilter has an unknown value. -
An
area,balance_group,supplierormarket_dimensionfilter has more values than its maximum. -
offsetis less than 0, orlimitis less than 1 or more than its maximum.
curl --request GET \
--url https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/market-access/v1alpha1/timeseries/series/aggregate-allocations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"aggregator": "grid_operator",
"allocation_basis": "metered",
"area_code": "10YDE-RWENET---I",
"area_kind": "metering_grid_area",
"balance_group": "11XBILANZKREIS-X",
"external_id": "<string>",
"flow_direction": "consumption",
"market_dimensions": {
"series_type": "SLS"
},
"market_meta": {
"summed_series": "Z97"
},
"supplier": "9900000000001"
}
],
"limit": 123,
"offset": 123,
"total": 123
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Query Parameters
Areas to read, each one as kind:code, where kind is one of metering_grid_area, control_area or scheduling_area, for example scheduling_area:10YDE-RWENET---I. Omit this parameter to read every area.
500Flow directions to read. Omit to read both.
consumption, production Balance groups to read. Omit to read every group.
500Suppliers to read. Omit to read every supplier.
500Aggregator roles to read. Omit to read every role.
Available aggregator roles
-
grid_operator — Indicates the source of the aggregation is a grid operator.
-
transmission_operator — Indicates the source of the aggregation is a transmission system operator.
grid_operator, transmission_operator Allocation bases to read. Omit to read every basis.
The basis tells you where the energy data for an aggregation is coming from: Is it directly metered values from smart meters, or is it something calculated from some standard profile?
Available allocation basises
-
metered — Indicates this aggregation's data comes from directly metered energy, like from smart meters.
-
profiled — Indicates this aggregation's data is coming from a 'profile' of some kind, a pre-determined shape of consumption or production, usually coupled with some adjustment calculations, like adjusting for daily temperature or past annual metered consumption.
metered, profiled Market dimensions to filter by, as key:value. A market dimension is the market's own key and code on which it divides accounting points, for example series_type:SLS. An aggregate allocation matches when it carries every pair.
500The position of the first aggregate allocation of the page in the list. The first aggregate allocation in the list has the position 0.
x >= 0The maximum number of aggregate allocations on the page.
1 <= x <= 1000Was this page helpful?