Перейти к основному содержимому

Дедупликация запросов

Описание

Повторный запрос — это запрос к 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