Уведомление об изменении
Чтобы метка появилась сразу, а не по ttl, сервер сайта сообщает чату, какие ключи нужно перепроверить. Данных в уведомлении нет — чат сам вызовет эндпоинт проверки.
POST https://app.direct-dialog.ru/api/sites/<код сайта>/marks/changed
Content-Type: application/json
X-DD-Timestamp: 1789401600
X-DD-Signature: sha256=<HMAC-SHA256(серверный секрет, "timestamp.тело")>
{ "keys": ["user:98765"] }
Подпись — та же схема и тот же серверный секрет, что в канале 2; подписывается ровно та строка тела, которая уходит в запрос. Вместо списка можно прислать { "all": true } — «перепроверь всех посетителей сайта» (не чаще 12 раз в час, после массовых изменений в базе).
| Код | Значение |
|---|---|
202 | Принято. Возвращается и тогда, когда ключ ни одному посетителю не соответствует — это нормально |
400 | Тело не в формате {"keys": [...]} / {"all": true} или больше 1000 ключей |
401 | Неверная подпись, timestamp старше 5 минут или неизвестный код сайта |
429 | Слишком часто: больше 300 уведомлений в минуту на сайт |
- Когда слать: оплата, возврат, смена тарифа, ручная правка статуса — всё, что меняет решение вашего эндпоинта. При переносе статуса между аккаунтами — оба ключа, старый и новый.
- Отправка не должна влиять на основной сценарий: таймаут 3 секунды, ошибку записать в лог и продолжить. Лучше слать после ответа платёжной системе.
- Повторы при сбое не обязательны — изменение догонит плановая проверка по
ttl. - Посетитель, который сейчас на сайте, обновится в течение ~30 секунд (в фоновой вкладке — до 2 минут), отсутствующий — при следующем заходе.