Справочник API

Лента изменений: опрос, веб-сокет, вебхуки


Лента событий своего отдела

GET
https://partners.zvezdnyy-burabai.edu.kz/ext/v1
/events

Опрос и догоняние после сбоя. Храните номер последнего обработанного события и передавайте его в after.

Лента событий своего отдела › query Parameters

after
​string

Номер последнего обработанного события; 0 — с начала (90 дней)

limit
​integer · int64 · min: 1 · max: 500

Сколько событий вернуть, 1–500, по умолчанию 100. Больше 100 — «тяжёлый» запрос (1 в секунду)

Default: 100

Лента событий своего отдела › Responses

Порция событий

has_more
​boolean · required

Есть ещё события после этой порции — запросите сразу, не дожидаясь

​Event[] · required
next_after
​string · required

Передать в after следующего запроса. Совпадает с последним номером в items; если событий не было — с вашим after


Веб-сокет ленты событий

GET
https://partners.zvezdnyy-burabai.edu.kz/ext/v1
/stream

События сразу, как случились, с догонянием пропущенного. Адрес wss://…/ext/v1/stream, ключ — в заголовке Authorization запроса на соединение (как у остальных ручек). Право read. Одновременно — не больше 3 сокетов на подключение; четвёртый получает 429 ещё до соединения.

Обмен — текстовые кадры JSON:

  1. Сервер сразу шлёт {"type":"hello","last_event_id":"1042"} — номер последнего события вашего отдела.
  2. Клиент шлёт {"type":"subscribe","after":"1000","types":["booking.created"]}. after обязателен: номер последнего обработанного события ("0" — с начала, 90 дней). types — по желанию, только эти типы.
  3. Сервер досылает всё после after порциями до 500, затем шлёт новые события по мере появления: {"type":"event","event":{…событие, как в GET /events…}}. Повторный subscribe начинает отдачу заново с нового after. Каждая порция догоняния считается «тяжёлым» запросом (1 в секунду, общий ковш с отчётами): кончились жетоны — отдача ждёт, а не рвётся.
  4. Неразборчивое сообщение — ответ {"type":"error","code":"bad_message","message":"…"}, соединение остаётся.

Соединение:

  • сервер шлёт ping каждые 30 с; нет ответа 90 с — закрывает;
  • раз в минуту сервер перепроверяет ключ: отозван, истёк, подключение отключено — {"type":"error","code":"unauthorized"} и закрытие с кодом 1008;
  • клиент, который не забирает данные 30 с, отключается — сервер не копит для него события в памяти;
  • доставка «хотя бы один раз»: после переподключения события после вашего after придут снова — узнавайте повтор по номеру.

Схемы сообщений: StreamHello, StreamSubscribe, StreamEvent, StreamError.

Веб-сокет ленты событий › Responses

Соединение открыто, дальше — обмен сообщениями

No data returned