Дедупликация запросов
Описание
Повторный запрос — это запрос к API, который содержит тот же заголовок и те же данные, что и первичный запрос. Повторный запрос может отправляться в том случае, если в момент получения данных произошёл сбой соединения. Платформа не будет воспринимать повторный запрос, если он приводит к изменению данных, чтобы исключить дублирование событий. Эта схема работает по умолчанию и не требует дополнительной настройки. По умолчанию платформа осуществляет дедупликацию в течение 1 дня с момента первого запроса.
Как понять, что запрос был воспринят как дублирующий?
Ответ на повторный запрос будет такой же, как и на первичный запрос. Однако повторный запрос будет содержать в себе дополнительные заголовки:
X-Duplicate-Key: NeOScRqBgsqj67CR5dYcqvcmPZA=
X-Duplicate-Request: true
Заголовок X-Duplicate-Key хранит в себе хешированные данные запроса.
Как послать запрос, чтобы он не воспринимался как дублирующий?
Рекомендуется маркировать каждый запрос уникальным идентификатором, тогда, изменяя этот идентификатор, вы сможете выполнять запросы, даже если они содержат одинаковые данные.
Сделать это можно одним из способов:
- Измените данные в теле запроса или URL, например,
&request_id=12345
- Добавьте заголовок с идентификатором запроса, в произвольной форме, например,
X-Request-ID: a0fe37f2-b4e0-4e28-a328-4ec7461604fc
API запросы, у которых работает дедупликация
На повторы проверяются все запросы, которые выполняют модификацию данных или активацию/запуск сущностей:
Категория | Запрос |
---|---|
Профили | /v1.0/lists/:list_id/lead/unconfirm /v1.0/lists/:list_id/lead/unsubscribe /v1.0/lists/:list_id/lead/tags_add /v1.0/lists/:list_id/lead/tags_remove /v1.0/lists/:list_id/lead/subscribe /v1.0/lists/:list_id/lead/complain /v1.0/lists/:list_id/suspend_all /v1.0/lists/:list_id/unsuspend_all /v1.0/lists/:list_id/import |
Интеграции | /integrations/lpgenerator/profile_import /integrations/tilda/profile_import /integrations/any/profile_import |
Стоп-список | /v1.1/suppresses/add /v1.1/suppresses/update /v1.1/suppresses/domain_add /v1.1/suppresses/domains_add /v1.1/suppresses/domain_remove /v1.1/suppresses/domains_remove /v1.1/suppresses/email_add /v1.1/suppresses/emails_add /v1.1/suppresses/email_remove /v1.1/suppresses/emails_remove /v1.1/suppresses/phone_add /v1.1/suppresses/phones_add /v1.1/suppresses/phone_remove /v1.1/suppresses/phones_remove |
Подписки | /v1.1/subscriptions/set /v1.1/subscriptions/suspend_all /v1.1/subscriptions/unsuspend_all /v1.1/subscribers/import /v1.1/subscribers/update |
Сегменты | /v1.1/segments/add /v1.1/segments/update /v1.1/segments/refresh_counters |
Кампании | /v1.1/campaigns/deactivate /v1.1/campaigns/activate /v1.1/campaigns/clone |
Триггерные кампании | /v1.1/campaigns/triggers/add /v1.1/campaigns/triggers/update /v1.1/campaigns/triggers/start /v1.1/campaigns/triggers/import_and_start /v1.1/campaigns/triggers/clone |
Броадкасты | /v1.1/campaigns/broadcasts/add /v1.1/campaigns/broadcasts/update /v1.1/campaigns/broadcasts/start |
Регулярные кампании | /v1.1/campaigns/regulars/add /v1.1/campaigns/regulars/update /v1.1/campaigns/regulars/start |
Сендеры | /v1.1/admin-guide/senders/queue/hold /v1.1/admin-guide/senders/queue/unhold /v1.1/admin-guide/senders/queue/purge /v1.1/admin-guide/senders/update /v1.1/admin-guide/senders/add_to_account /v1.1/admin-guide/senders/add /v1.1/admin-guide/vsenders/add /v1.1/admin-guide/vsenders/update /v1.1/admin-guide/vsenders/clone |
Ноды | /v1.1/admin-guide/nodes/mta/start /v1.1/admin-guide/nodes/mta/stop |
Статический сегмент | /v1.1/profiles/segstatic/add /v1.1/profiles/segstatic/remove |
Профили | /v1.1/profiles/add /v1.1/profiles/update /v1.1/profiles/import /v1.1/profiles/add_batch /v1.1/profiles/update_batch /v1.1/profiles/import_batch |
Промокоды | /v1.1/promocodes/attach /v1.1/promocodes/activate /v1.1/promocodes/import /v1.1/promocodes/detach /v1.1/promocodes/update |
Связи | /v1.1/relations/attach /v1.1/relations/detach /v1.1/relations/edit /v1.1/relations/strengthen |
Базы данных | /v1.1/databases/wipe /v1.1/databases/refresh_counters |
Вирутальные сендеры | /v1.1/vsenders/add /v1.1/vsenders/update /v1.1/vsenders/clone |
Сценарии | /v1.1/workflows/start /v1.1/workflows/import_and_start |
Регистрация событий пушей | /v1.1/pushes/post_events /v1.1/pushes/crypto_post_events |
Шаблоны | /v1.1/templates/add /v1.1/templates/update /v1.1/templates/delete |
Ресурсы | /v1.1/resources/push_subscribe /v1.1/resources/refresh_counters |
Таблицы данных | /v1.1/datatables/query_templates/update /v1.1/datatables/query_templates/delete /v1.1/datatables/query_templates/add /v1.1/datatables/query_segments/update /v1.1/datatables/query_segments/delete /v1.1/datatables/query_segments/add |