События доставки с подписью
Проверка подлинности уведомлений и безопасная обработка повторных доставок.
Укажите HTTPS-адрес получателя в профиле, создайте секрет callback и выберите нужные уведомления аккаунта. События завершения собственных асинхронных заданий используют настроенного получателя. Доставка идёт из устойчивой очереди повторных попыток, а не из вкладки браузера, отправившей запрос.
Структура запроса
POST /b2b/events HTTP/1.1
Content-Type: application/json
X-Callback-Event-ID: EVENT_PUBLIC_ID
X-Callback-Signature: t=1788950400,v1=HEX_DIGEST
{"event_id":"EVENT_PUBLIC_ID","event":"account.balance_low","occurred_at":"2026-09-09T12:00:00Z","data":{"balance":"9.5000000000","threshold":"20.0000000000","currency":"USD"}}
Эта версия отправляет нейтральные псевдонимы X-Callback-*. Подпись — HMAC-SHA256 от <timestamp>.<raw_body> с секретом из профиля. Проверяйте исходные байты до разбора или повторной сериализации JSON; сравнивайте хеши за постоянное время и ограничивайте допустимый возраст повтора в соответствии с требованиями получателя.
Ответ
HTTP/1.1 200 OK
Content-Length: 0
Любой 2xx подтверждает доставку. До подтверждения сохраните событие и исключите дубликаты по event_id, затем выполняйте длительную работу в собственной очереди приложения. Повторная доставка имеет тот же идентификатор события, но может иметь новую временную метку подписи. Игнорируйте дополнительные поля, которые приложение пока не использует.
Доступные данные событий
key.spend_limit_threshold_reached определяет ключ и содержит точные usage, spend_limit, порог в процентах и валюту. group.spend_limit_threshold_reached содержит соответствующие поля проекта. account.balance_low содержит текущий баланс и настроенный порог. request.completed содержит идентификатор запроса, конечный статус, допускающий null статус поставщика и сохранённый ответ или ошибку. Сохраняйте точность денежных строк.
Пороговые условия проверяются примерно раз в минуту; после исчезновения условия уведомление снова готово к срабатыванию. Это рабочие уведомления, а не мгновенное резервирование бюджета.
Ограничения доставки
Получатель должен быть доступен публично; приватные, loopback и другие запрещённые диапазоны адресов отклоняются, в том числе при перенаправлении на них. Проверка TLS остаётся включённой. Каждая попытка ограничена 15 секундами. Всего шесть попыток; после последовательных ошибок паузы составляют 5 секунд, 30 секунд, 2 минуты, 10 минут и 1 час. Ответы не-2xx, транспортные ошибки и тайм-ауты означают неуспех попытки. После шестой ошибки доставка прекращается.
Не публикуйте секрет callback или полные заголовки Authorization в диагностике. При пропущенных событиях проверьте состояние доставки и выполните сверку через соответствующие эндпоинты чтения Partner API.