Create an unavailability for a producer plant.
Creates an availability limitation (unavailability) for the plant tied to the producer contract. The plant reference is enforced by the API based on contract context.
curl --request POST \
--url https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/ \
--header 'Content-Type: application/json' \
--data '
{
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"value": 123,
"reason_description": "<string>"
}
'import requests
url = "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
payload = {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"value": 123,
"reason_description": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
start: '2023-11-07T05:31:56Z',
end: '2023-11-07T05:31:56Z',
value: 123,
reason_description: '<string>'
})
};
fetch('https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/', 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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'start' => '2023-11-07T05:31:56Z',
'end' => '2023-11-07T05:31:56Z',
'value' => 123,
'reason_description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
payload := strings.NewReader("{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
.header("Content-Type", "application/json")
.body("{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"limitation_id": 42,
"start": "2026-01-01T00:00:00Z",
"end": "2026-01-01T12:00:00Z",
"availability_type": "cap",
"value": 5000,
"unit": "W",
"reason_type": "technical",
"reason_description": "maintenance due broken solar panel"
}Body
The timestamp when the feed limitation begins
The timestamp when the feed limitation ends
Is the feed capped (cannot feed more than) or scaled (a part of the plant is not available)?
cap- capscale- scale
cap, scale value of the feed limitation, for unit % between 0-100, for unit W up to plant capacity
% for scaled feed limitation, W for capped feed limitation
%- %W- W
%, W classification on limitation reason
technical- technicalweather-dependent- weather-dependentother- other
technical, weather-dependent, other short description to clarify limitation
Response
The timestamp when the feed limitation begins
The timestamp when the feed limitation ends
Is the feed capped (cannot feed more than) or scaled (a part of the plant is not available)?
cap- capscale- scale
cap, scale value of the feed limitation, for unit % between 0-100, for unit W up to plant capacity
% for scaled feed limitation, W for capped feed limitation
%- %W- W
%, W classification on limitation reason
technical- technicaleconomic- economicredispatch- redispatchweather-dependent- weather-dependentother- other
technical, economic, redispatch, weather-dependent, other short description to clarify limitation
curl --request POST \
--url https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/ \
--header 'Content-Type: application/json' \
--data '
{
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"value": 123,
"reason_description": "<string>"
}
'import requests
url = "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
payload = {
"start": "2023-11-07T05:31:56Z",
"end": "2023-11-07T05:31:56Z",
"value": 123,
"reason_description": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
start: '2023-11-07T05:31:56Z',
end: '2023-11-07T05:31:56Z',
value: 123,
reason_description: '<string>'
})
};
fetch('https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/', 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.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'start' => '2023-11-07T05:31:56Z',
'end' => '2023-11-07T05:31:56Z',
'value' => 123,
'reason_description' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/"
payload := strings.NewReader("{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
.header("Content-Type", "application/json")
.body("{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lumenaza.de/v3/producers/{userID}/contracts/{contractID}/feed_limitations/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"start\": \"2023-11-07T05:31:56Z\",\n \"end\": \"2023-11-07T05:31:56Z\",\n \"value\": 123,\n \"reason_description\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"limitation_id": 42,
"start": "2026-01-01T00:00:00Z",
"end": "2026-01-01T12:00:00Z",
"availability_type": "cap",
"value": 5000,
"unit": "W",
"reason_type": "technical",
"reason_description": "maintenance due broken solar panel"
}
