Skip to content

Idempotency

Идемпотентность нужна, чтобы при сетевых сбоях и ретраях вы могли спокойно повторять запрос — мы вернём тот же результат, что и в первый раз, не создавая новый лид.

Заголовок

http
Idempotency-Key: <ваш-уникальный-id>
  • Длина: 1–80 байт.
  • Уникальность: в пределах вашего партнёра (мы изолируем ключи по affiliate_id).
  • Время жизни: 24 часа. После — ключ можно переиспользовать.

Что положить в ключ

Самое простое — <ваш partner_slug>-<external_id>-<retry_attempt>, например aff42-lead-001-r0. Главное — детерминированно на стороне отправителя.

Поведение

Первый запрос с ключом K:

  • Обрабатываем как обычно (валидация / дедуп / сохранение).
  • Запоминаем результат на 24 часа.
  • Возвращаем стандартный ответ.

Повторный запрос с тем же K (в окне 24 часов):

  • Не вызываем бизнес-логику повторно.
  • Возвращаем сохранённый результат с дополнительным полем replay: true.
json
{
  "id": "le-12345",
  "status": "accepted",
  "reason": null,
  "replay": true
}

Что считается «тем же ключом»

  • Сравнение строгое, byte-equal.
  • Тело запроса при повторе не сверяется с оригинальным — мы доверяем ключу. Это значит: если вы случайно отправили два разных payload с одним ключом, второй будет проигнорирован. Используйте уникальные ключи для уникальных лидов.

Без Idempotency-Key

Запрос отработает без идемпотентного слоя. Сетевые ретраи могут создать дубликаты — их поймает дедупликация по phone/email, но это не гарантировано (например, если лид прислан с разными телефонами по ошибке вашей системы).

Очень рекомендуем всегда отправлять Idempotency-Key

Это самый надёжный способ исключить race-condition'ы и двойные отправки. Минимальная цена интеграции — большая защита.

Совместная работа с дедупликацией

СценарийЧто вернётся
Идемпотентный повтор, лид принятпрежний accepted ответ
Идемпотентный повтор, лид был дубликатпрежний duplicate ответ
Новый ключ, но phone совпал с прежним лидомduplicate (новый ответ)
Новый ключ, новый лидaccepted

То есть idempotency защищает от ретраев одного и того же запроса, а дедупликация защищает от двух разных запросов с одним телефоном/email.

Закрытая партнёрская документация. Не для публичного распространения.