ДескусДескус · Документация
Все разделыОсновы

Повторы без дублей: Idempotency-Key

Сеть рвётся: запрос ушёл, а ответа нет. Повтор без защиты создаст второй тикет. Передайте у POST заголовок Idempotency-Key — повтор с тем же ключом вернёт первый ответ, а запрос не выполнится второй раз.

curl https://app.deskus.ru/api/v1/tickets \
  -H "Authorization: Bearer $DESKUS_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: form-7f3a9c21" \
  -d '{ "message": "Нужна консультация по помолу", "client": { "email": "maria@example.com" } }'

Как это работает

Повтор

Ответ

Тот же ключ, то же тело, тот же адрес

Первый ответ целиком, с заголовком Idempotent-Replayed: true

Тот же ключ, другое тело

422 idempotency_key_reused — для нового запроса нужен новый ключ

Первый запрос ещё выполняется

409 idempotency_in_progress — повторите через несколько секунд

Первый закончился ошибкой 5xx

Ключ свободен — повтор выполнится заново

Первый закончился ошибкой 4xx

Та же ошибка: исправьте запрос и возьмите новый ключ

Какой ключ брать

  • Строка от 1 до 255 печатных символов ASCII: UUID, номер заказа, id заявки формы.

  • Один ключ — одно действие. Хороший ключ рождается вместе с событием в вашей системе: order-4821, lead-90155.

  • Ключ помнится сутки. Ключи разных ключей API и приложений не пересекаются.

  • Без заголовка каждый POST выполняется заново. У GET, PATCH и DELETE заголовок не нужен.

Не нашли ответ? Напишите нам
Поддержка ответит в рабочее время.
Вы сотрудник «Дескус»?Изменить статью в Дескусе