До вмісту
Як підключити

Як отримати дані про тривоги програмно

Три відповіді на три питання, які ставить розробник: як почати, як не опитувати щосекунди й де взяти історію.

Найкоротший шлях — один запит без ключа

Ключ не потрібен, реєстрація не потрібна. Ліміт без ключа — 60 запитів за хвилину з адреси; з безкоштовним ключем — 120.

curl -s https://map.megainet.art/api/alerts.php

У відповіді: regions — стан 25 областей, updated — коли знято, stale — чи мовчать джерела (тоді віддано останню відому копію). Поле changed_ts каже, КОЛИ стан змінився: за ним рахують тривалість тривоги.

import json, urllib.request

with urllib.request.urlopen("https://map.megainet.art/api/alerts.php") as r:
    data = json.load(r)

for iso, region in data["regions"].items():
    if region["alert"]:
        print(iso, "— тривога")

Як не опитувати щосекунди: вебхук замість опитування

Опитування раз на 15 секунд — це 5 760 запитів на добу заради десятка подій. Підписка присилає подію в момент, коли вона сталася.

$ts   = $_SERVER['HTTP_X_MAP_TIMESTAMP'] ?? '';
$sig  = $_SERVER['HTTP_X_MAP_SIGNATURE'] ?? '';
$body = file_get_contents('php://input');

// Перевіряємо підпис ДО того, як щось зробимо з подією.
if (!hash_equals(hash_hmac('sha256', $ts . "\n" . $body, $SECRET), $sig)) {
    http_response_code(401);
    exit;
}

$event = json_decode($body, true);   // alert.start | alert.end

Кожна доставка підписана: заголовки X-Map-Timestamp, X-Map-Signature (HMAC-SHA256 від «мітка \n тіло»), X-Map-Event і X-Map-Delivery. Перевіряйте підпис ДО обробки: адресу приймача рано чи пізно дізнаються, і без перевірки будь-хто надішле вам «тривогу» від нашого імені — а по ній, можливо, вмикається сирена на об`єкті.

Не відповіли 2xx — повторимо через 1, 5, 30 хвилин, 2 і 6 годин. Відповідайте 2xx ОДРАЗУ, а свою роботу робіть після: ми чекаємо 8 секунд.

Де взяти історію по областях

Скільки тривог було за добу й скільки годин область провела під тривогою:

curl -s "https://map.megainet.art/api/history.php?hours=24"
curl -s "https://map.megainet.art/api/analytics.php?hours=168"

Період — 24, 48 або 168 годин. Межа, про яку треба знати наперед: цілі зберігаються 24 години, стрічка моніторів — 72. Тижневої аналітики ПО ЦІЛЯХ не існує фізично, і жоден параметр її не поверне.

Скільки це коштує

Ядро безкоштовне назавжди. Платять лише за вищий ліміт і за те, щоб не ставити посилання-кредит; вебхуки — теж платні.

Готовий клієнт

Python-клієнт без залежностей (усі методи, перевірка підпису вебхука, готовий приймач) — попросіть посилання на пошті [email protected]: бібліотеку ще не викладено.

Повна довідка API Тарифи Отримати ключ

На які запити відповідає ця сторінка