Источник → Ontik

Отправьте событие из своей системы

Сервер, скрипт или обработчик мониторинга отправляет JSON в проект. Ontik сохраняет событие и ставит уведомления в очередь.

Регистрация пока закрыта. Адрес https://app.ontik.ru указан для будущего публичного запуска. В тестовой установке замените его на адрес своего backend. Для знакомства сейчас используйте демонстрацию.

Перед подключением

  1. Создайте проект в доступной вам установке Ontik.
  2. Во вкладке «API и интеграция» скопируйте публичный ключ pk_live_….
  3. Для Web Push нажмите «Включить уведомления» и разрешите их в браузере.
  4. Подставьте ключ в пример ниже и проверьте ленту.

Контракт

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Недействительный или отозванный ключ.
403Origin запроса не входит в разрешённые Origins проекта.
422Отсутствующий заголовок X-Ontik-Key, неверный JSON, пустой event или ограничения meta.
429Частота запросов: учитывайте Retry-After. По умолчанию 100 запросов в минуту на ключ и 300 на IP; оператор может изменить лимиты.

API приёма пока не поддерживает ключ идемпотентности: повтор POST создаст новое событие. После неопределённого сетевого сбоя учитывайте возможность дубля; передавайте свой идентификатор источника в meta для сопоставления.

Безопасность: ключ проекта разрешает отправку событий. Он публичный, но его публикация может облегчить нежелательные запросы. Не передавайте пароли, секреты или ненужные персональные данные. Origin — браузерная проверка, он не заменяет авторизацию сервера.