Отправьте событие из своей системы
Сервер, скрипт или обработчик мониторинга отправляет JSON в проект. Ontik сохраняет событие и ставит уведомления в очередь.
https://app.ontik.ru указан для будущего публичного запуска. В тестовой установке замените его на адрес своего backend. Для знакомства сейчас используйте демонстрацию.Windows, Linux, macOS: источник и устройство получения →
Перед подключением
- Создайте проект в доступной вам установке Ontik.
- Во вкладке «API и интеграция» скопируйте публичный ключ
pk_live_…. - Для Web Push нажмите «Включить уведомления» и разрешите их в браузере.
- Подставьте ключ в пример ниже и проверьте ленту.
Контракт
POST https://app.ontik.ru/v1/events
X-Ontik-Key: pk_live_ВАШ_КЛЮЧ
Content-Type: application/json
{"event":"Сервис недоступен","meta":{"host":"web-01","severity":"critical"}}event — непустой заголовок до 120 символов. meta — необязательный плоский объект до 20 полей. Ограничения данных.
Команда для вашей платформы
Windows: откройте PowerShell. Linux или macOS: откройте терминал. Замените ключ проекта и, для тестовой установки, адрес API.
Windows · PowerShell
$body = @{ event = "Проверка подключения"; meta = @{ source = "quick-start" } } | ConvertTo-Json
Invoke-RestMethod -Uri "https://app.ontik.ru/v1/events" -Method Post -Headers @{"X-Ontik-Key"="pk_live_ВАШ_КЛЮЧ"} -ContentType "application/json; charset=utf-8" -Body ([Text.Encoding]::UTF8.GetBytes($body))Linux · Bash
curl --fail-with-body --max-time 10 'https://app.ontik.ru/v1/events' \
-H 'X-Ontik-Key: pk_live_ВАШ_КЛЮЧ' \
-H 'Content-Type: application/json' \
-d '{"event":"Проверка подключения","meta":{"source":"quick-start"}}'macOS · Zsh / Bash
curl --fail-with-body --max-time 10 'https://app.ontik.ru/v1/events' \
-H 'X-Ontik-Key: pk_live_ВАШ_КЛЮЧ' \
-H 'Content-Type: application/json' \
-d '{"event":"Проверка подключения","meta":{"source":"quick-start"}}'Python — без внешних пакетов
Сохраните в send_event.py, замените ключ и запустите python send_event.py в Windows или python3 send_event.py в Linux/macOS. Если в Windows установлен только launcher, используйте py -3 send_event.py.
import json, urllib.request
body = json.dumps({"event": "Резервная копия завершена",
"meta": {"server": "prod-01", "result": "success"}},
ensure_ascii=False).encode("utf-8")
request = urllib.request.Request("https://app.ontik.ru/v1/events", data=body,
headers={"X-Ontik-Key": "pk_live_ВАШ_КЛЮЧ",
"Content-Type": "application/json; charset=utf-8"})
with urllib.request.urlopen(request, timeout=10) as response:
print(response.status, response.read().decode("utf-8"))Node.js
Нужен Node.js 18+. Сохраните в send_event.mjs и запустите node send_event.mjs.
const response = await fetch("https://app.ontik.ru/v1/events", {
method: "POST",
headers: {"Content-Type": "application/json", "X-Ontik-Key": "pk_live_ВАШ_КЛЮЧ"},
body: JSON.stringify({event: "Деплой завершён", meta: {branch: "main"}}),
signal: AbortSignal.timeout(10000)
});
if (!response.ok) throw new Error(await response.text());
console.log(response.status, await response.json());Мониторинг и внешние сервисы
В скрипте или действии вашей системы настройте URL, метод POST, заголовки и тело по контракту выше. Имя проблемы передайте в event, узел, важность и ссылку — в meta. Если сервис отправляет только свой фиксированный формат, нужен промежуточный обработчик для преобразования JSON. Готового универсального адаптера для любого сервиса в MVP нет.
Успешный ответ
HTTP 202 Accepted
{
"id": "a730caf5-2c37-4191-a232-7b2a12789869",
"event": "Сервис недоступен",
"status": "new",
"created_at": "2026-10-22T00:00:00+00:00"
}202 означает, что событие сохранено и задачи поставлены в очередь. Этот ответ не подтверждает получение Web Push на устройстве или выполнение Webhook.
Ошибки и повторная отправка
| Код | Что проверить |
|---|---|
| 401 | Недействительный или отозванный ключ. |
| 403 | Origin запроса не входит в разрешённые Origins проекта. |
| 422 | Отсутствующий заголовок X-Ontik-Key, неверный JSON, пустой event или ограничения meta. |
| 429 | Частота запросов: учитывайте Retry-After. По умолчанию 100 запросов в минуту на ключ и 300 на IP; оператор может изменить лимиты. |
API приёма пока не поддерживает ключ идемпотентности: повтор POST создаст новое событие. После неопределённого сетевого сбоя учитывайте возможность дубля; передавайте свой идентификатор источника в meta для сопоставления.
