Skip to main content
POST
/
v1
/
alarms
/
forecasts
/
page
List registrations (paged)
curl --request POST \
  --url https://api.iklim.co/v1/alarms/forecasts/page \
  --header 'Content-Type: application/json' \
  --data '
{
  "pageNumber": 0,
  "pageSize": 20,
  "filterByRecipientIds": [
    "customer-system-001",
    "customer-system-002"
  ],
  "filterByBoundary": {
    "cityId": 6,
    "districtId": 557
  },
  "accountId": "2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1"
}
'
import requests

url = "https://api.iklim.co/v1/alarms/forecasts/page"

payload = {
"pageNumber": 0,
"pageSize": 20,
"filterByRecipientIds": ["customer-system-001", "customer-system-002"],
"filterByBoundary": {
"cityId": 6,
"districtId": 557
},
"accountId": "2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1"
}
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({
pageNumber: 0,
pageSize: 20,
filterByRecipientIds: ['customer-system-001', 'customer-system-002'],
filterByBoundary: {cityId: 6, districtId: 557},
accountId: '2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1'
})
};

fetch('https://api.iklim.co/v1/alarms/forecasts/page', 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.iklim.co/v1/alarms/forecasts/page",
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([
'pageNumber' => 0,
'pageSize' => 20,
'filterByRecipientIds' => [
'customer-system-001',
'customer-system-002'
],
'filterByBoundary' => [
'cityId' => 6,
'districtId' => 557
],
'accountId' => '2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1'
]),
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.iklim.co/v1/alarms/forecasts/page"

payload := strings.NewReader("{\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"filterByRecipientIds\": [\n \"customer-system-001\",\n \"customer-system-002\"\n ],\n \"filterByBoundary\": {\n \"cityId\": 6,\n \"districtId\": 557\n },\n \"accountId\": \"2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1\"\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.iklim.co/v1/alarms/forecasts/page")
.header("Content-Type", "application/json")
.body("{\n \"pageNumber\": 0,\n \"pageSize\": 20,\n \"filterByRecipientIds\": [\n \"customer-system-001\",\n \"customer-system-002\"\n ],\n \"filterByBoundary\": {\n \"cityId\": 6,\n \"districtId\": 557\n },\n \"accountId\": \"2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.iklim.co/v1/alarms/forecasts/page")

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 \"pageNumber\": 0,\n \"pageSize\": 20,\n \"filterByRecipientIds\": [\n \"customer-system-001\",\n \"customer-system-002\"\n ],\n \"filterByBoundary\": {\n \"cityId\": 6,\n \"districtId\": 557\n },\n \"accountId\": \"2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1\"\n}"

response = http.request(request)
puts response.read_body
{
  "registrations": [
    {
      "registrationId": "f7587d9e-2481-4b4c-818d-c8d1946851b7",
      "recipientId": "customer-system-001",
      "boundary": {
        "cityId": 6,
        "districtId": 557
      },
      "forecastDays": 3,
      "forecastAlarmDelivery": [
        "MORNING",
        "EVENING"
      ],
      "webhook": {
        "accountId": "2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1",
        "url": "https://api.customer.com/alerts/forecast-callback",
        "httpMethod": "POST",
        "contentType": "application/json",
        "authentication": {
          "username": "alert-user",
          "password": "******"
        },
        "requestHeaders": {
          "source": "iklim.co",
          "custom-header": "value"
        },
        "deliveryPolicy": {
          "timeout": 60,
          "maxRetries": 3,
          "retryDelay": 10
        }
      },
      "filter": {
        "precipitationThreshold": "MODERATE",
        "snowFallThreshold": "LIGHT",
        "windGustThreshold": "STRONG_WIND",
        "hotTemperatureThreshold": "HOT_SNAP",
        "coldTemperatureThreshold": "COLD_SNAP"
      }
    }
  ],
  "totalRecords": 42,
  "pageNumber": 0,
  "pageSize": 20
}
{
"timestamp": "YYYY-mm-DDTHH:MM:SS.nnnnnnnnn",
"status": "XXX",
"error": "Error Name",
"message": "Error Message",
"path": "/endpoint/uri/here",
"messages": [
"<string>"
]
}
{
"timestamp": "YYYY-mm-DDTHH:MM:SS.nnnnnnnnn",
"status": "XXX",
"error": "Error Name",
"message": "Error Message",
"path": "/endpoint/uri/here",
"messages": [
"<string>"
]
}
{
"timestamp": "YYYY-mm-DDTHH:MM:SS.nnnnnnnnn",
"status": "XXX",
"error": "Error Name",
"message": "Error Message",
"path": "/endpoint/uri/here",
"messages": [
"<string>"
]
}
{
"timestamp": "YYYY-mm-DDTHH:MM:SS.nnnnnnnnn",
"status": "XXX",
"error": "Error Name",
"message": "Error Message",
"path": "/endpoint/uri/here",
"messages": [
"<string>"
]
}

Body

application/json

Paginated listing request for forecast alarm registrations.

pageNumber
integer<int32>

Zero-based page index.

Required range: x >= 0
Example:

0

pageSize
integer<int32>

Maximum number of registrations to return per page (1–100).

Required range: 1 <= x <= 100
Example:

20

filterByRecipientIds
string[]

Restrict results to registrations with one of the given recipient identifiers.

Example:
[
"customer-system-001",
"customer-system-002"
]
filterByBoundary
object

Alarm registration boundary

Defines the geographic scope to monitor for forecast alarm conditions. The concrete boundary type is selected via the type discriminator field; supply only the fields that belong to the chosen subtype.

  • ADMINISTRATIVE – boundary identified by a city (cityId) and a district (districtId); both fields are required.
  • POINT – boundary defined by a single longitude/latitude coordinate (point). The alarm evaluates forecast data for the nearest forecast grid cell to that coordinate.
accountId
string<uuid>

Target account UUID; users with ADMIN or POWER_USER role may query registrations of other accounts.

Example:

"2f04f1b5-1c0a-4c4e-b0a7-0ba6e9b7f2e1"

Response

OK

Paginated result set of forecast alarm registrations.

registrations
object[]

List of forecast alarm registrations on the current page.

totalRecords
integer<int32>

Total number of matching registrations across all pages.

Example:

42

pageNumber
integer<int32>

Zero-based index of the returned page.

Example:

0

pageSize
integer<int32>

Maximum number of registrations per page as originally requested.

Example:

20