curl --request GET \
--url https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions"
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/schedule-management/v1/schedules/{uid}/versions', 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/schedule-management/v1/schedules/{uid}/versions",
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/schedule-management/v1/schedules/{uid}/versions"
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/schedule-management/v1/schedules/{uid}/versions")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions")
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[
{
"acceptance_level": "cnf",
"created_ts": "2026-03-25T14:00:00+00:00",
"is_active": true,
"last_modified_ts": "2026-03-25T14:05:00+00:00",
"message_id": "MSG-20260325-001_v1",
"org_uid": "9b2e4d8f-1c3a-4f5e-8d7b-6a9e0f2c1b3d",
"schedule_uid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"spec": {
"market": "DE",
"receiver_id": "10XDE-VE-TRANSMK",
"sender_id": "11XDE-SENDER---A",
"series": [],
"tso": "50HERTZ_DE_TSO"
},
"status": "cnf",
"uid": "c8d7e6f5-4a3b-4c2d-9e1f-0a8b7c6d5e4f",
"version": 1
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}List Schedule Versions
List all Schedule Versions for a schedule, newest version first.
curl --request GET \
--url https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions"
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/schedule-management/v1/schedules/{uid}/versions', 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/schedule-management/v1/schedules/{uid}/versions",
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/schedule-management/v1/schedules/{uid}/versions"
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/schedule-management/v1/schedules/{uid}/versions")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/schedule-management/v1/schedules/{uid}/versions")
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[
{
"acceptance_level": "cnf",
"created_ts": "2026-03-25T14:00:00+00:00",
"is_active": true,
"last_modified_ts": "2026-03-25T14:05:00+00:00",
"message_id": "MSG-20260325-001_v1",
"org_uid": "9b2e4d8f-1c3a-4f5e-8d7b-6a9e0f2c1b3d",
"schedule_uid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"spec": {
"market": "DE",
"receiver_id": "10XDE-VE-TRANSMK",
"sender_id": "11XDE-SENDER---A",
"series": [],
"tso": "50HERTZ_DE_TSO"
},
"status": "cnf",
"uid": "c8d7e6f5-4a3b-4c2d-9e1f-0a8b7c6d5e4f",
"version": 1
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Path Parameters
Schedule unique identifier.
Response
Successful Response
Highest acceptance level reached: empty string, ack, ano, par, or cnf.
"cnf"
"ack"
""
ISO 8601 datetime when this version was created.
"2026-03-25T14:00:00+00:00"
ISO 8601 datetime of the most recent status change.
"2026-03-25T14:05:00+00:00"
Organization that owns this version.
"9b2e4d8f-1c3a-4f5e-8d7b-6a9e0f2c1b3d"
Full submission specification including market routing and series references.
Show child attributes
Show child attributes
Processing status. created before submission, then the verbatim market status: submitted, ack_positive, ack_negative, ack_partial, icnf, dacnf, cnf, cnf_partial, or fcnf.
"cnf"
"submitted"
"ack_negative"
Unique identifier for this version.
"c8d7e6f5-4a3b-4c2d-9e1f-0a8b7c6d5e4f"
Sequential version number (1-based). Increments with each re-submission.
1
2
3
Whether this is the active version: the latest version the TSO has accepted, the one it currently treats as binding. Rejected or not-yet-answered versions are not active, and a later rejected version never replaces an accepted earlier one.
TSO document identification assigned to this version's message.
"MSG-20260325-001_v1"
Whether a Non-Repudiation of Receipt (NRR) delivery confirmation has been received from the TSO.
Mako365/AS4 transmission report identifier for delivery tracking.
"TR-20260325-001"
TSO warnings from the ACK response, if any.
Show child attributes
Show child attributes
Was this page helpful?