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

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

Описание

Повторный запрос — это запрос к API, который содержит тот же заголовок и те же данные, что и первичный запрос. Повторный запрос может отправляться в том случае, если в момент получения данных произошёл сбой соединения. Платформа не будет воспринимать повторный запрос, если он приводит к изменению данных, чтобы исключить дублирование событий. Эта схема работает по умолчанию и не требует дополнительной настройки. По умолчанию платформа осуществляет дедупликацию в течение 1 дня с момента первого запроса.

Платформа осуществляет дедупликацию по следующему алгоритму:

  • Проверка наличия заголовка Request-ID
  • Если Request-ID не указан, то проверяется контрольная сумма тела и заголовков запроса

Следует отметить, что не все запросы поддерживают дедупликацию по контрольной сумме, и если в таких запросах не указан Request-ID, то проверка на дублирование проводиться не будет. Список таких запросов вы можете найти в таблице ниже.

к сведению

Различные клиенты отправки запросов могут добавлять в запрос свои собственные системные заголовки или другую информацию. Это может привести к несрабатыванию дедупликации запроса.

Как понять, что запрос был воспринят как дублирующий?

Ответ на повторный запрос будет такой же, как и на первичный запрос. Однако повторный запрос будет содержать в себе дополнительные заголовки:

Duplicate-Key: NeOScRqBgsqj67CR5dYcqvcmPZA=
Duplicate-Request: true

Заголовок Duplicate-Key состоит из Request-ID запроса и токена отправителя. Если же Request-ID не передан, то заголовок будет хранить в себе хешированные данные запроса.

Как послать запрос, чтобы он не воспринимался как дублирующий?

Рекомендуется маркировать каждый запрос уникальным идентификатором, тогда, изменяя этот идентификатор, вы сможете выполнять запросы, даже если они содержат одинаковые данные.

Сделать это можно одним из способов:

  • Измените данные в теле запроса или URL, например, &request_id=12345
  • Добавьте заголовок Request-ID с идентификатором запроса

API запросы, у которых работает дедупликация

На повторы проверяются все запросы, которые выполняют модификацию данных или активацию/запуск сущностей:

КатегорияЗапрос
Профили (устаревшие 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/triggers/start_batch (только с Request-ID)
/v1.1/triggers/start_batch_task (только с Request-ID)
/v1.1/triggers/import_and_start_batch (только с Request-ID)
/v1.1/triggers/import_and_start_batch_task (только с Request-ID)
Броадкасты/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/workflows/import_and_start_batch (только с Request-ID)
/v1.1/workflows/import_and_start_batch_task (только с Request-ID)
Регистрация событий пушей/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