API и интеграции
Контракт разделяет публичный мониторинг, read API и upload API для серверных плагинов. Ключи и лимиты выдаются отдельно в кабинете.
Read API мониторинга
Read API отдает готовую сводку по серверу: название, игру, карту, онлайн, игроков, события плагина и агрегированную статистику. Базовый лимит ключа - 2000 read-запросов в сутки.
GET /api/v1/servers/46.174.52.126:27015/summary
Authorization: Bearer ema_read_xxxДобавление сервера
Сайт сам определяет игру через query. Если сервер offline, он сохраняется как offline/checking и будет перепроверяться collector worker.
POST /api/v1/servers
Content-Type: application/json
{ "address": "46.174.52.126:27015" }Plugin upload API
Плагины CS 1.6 AMXX, GMod Lua и Minecraft Paper/Spigot шлют heartbeat, игроков, чат, убийства и кастомные события. Upload API не расходует read quota.
POST /api/v1/ingest/plugin-events
Content-Type: application/json
{
"serverAddress": "46.174.52.93:27015",
"pluginUploadKey": "ema_upload_xxx",
"events": [{ "type": "chat", "message": "hello" }]
}Ключи интеграций
Read-ключи подходят для получения сводки по серверу. Upload-ключи используются только серверными плагинами и не дают права читать или менять чужие данные.
read:server-summary
upload:plugin-events
server:analyticsJavaScript
Подходит для backend-виджетов и внутренних сервисов. Не кладите read key в публичный frontend-код.
const response = await fetch(
'https://monitoring.easy-api.ru/api/v1/servers/46.174.52.126:27015/summary',
{ headers: { authorization: 'Bearer ema_read_xxx' } }
);
const payload = await response.json();Python
Для backend-скриптов и cron-задач. Делайте timeout, чтобы внешний сервис не подвешивал обработчик.
import requests
response = requests.get(
'https://monitoring.easy-api.ru/api/v1/servers/46.174.52.126:27015/summary',
headers={'Authorization': 'Bearer ema_read_xxx'},
timeout=5,
)
print(response.json())PHP
Для сайтов, модулей и backend-интеграций. Upload API для плагинов отделен от read API и использует другой ключ.
$curl = curl_init('https://monitoring.easy-api.ru/api/v1/servers/46.174.52.126:27015/summary');
curl_setopt_array($curl, [
CURLOPT_HTTPHEADER => ['Authorization: Bearer ema_read_xxx'],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 5,
]);
$payload = json_decode(curl_exec($curl), true);