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:analytics

JavaScript

Подходит для 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);