Повторы запросов
Как повторить запись после обрыва связи и не создать дубль.
Зачем
Сеть ненадёжна. Вы отправили запрос на создание контакта, ответ не дошёл — и вы не знаете, создался контакт или нет. Повторить страшно: можно получить два одинаковых контакта.
Для этого есть заголовок Idempotency-Key.
Как пользоваться
Придумайте уникальную строку на каждую логическую операцию (подойдёт UUID) и приложите её к запросу:
curl -X POST "https://api.tygy.ru/v1/contacts" \
-H "Authorization: Bearer $TYGY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 2f1c8e40-1f2a-4b6d-9d3e-7a5c1b2d3e4f" \
-d '{"name": "Иван Петров", "email": "ivan@example.com"}'Если ответ не дошёл — повторите запрос с тем же ключом и тем же телом. Мы вернём сохранённый ответ первого запроса, а не выполним операцию заново. В повторном ответе будет заголовок:
Idempotency-Replayed: trueПравила
- Ключ работает для всех изменяющих методов:
POST,PATCH,PUT,DELETE. - Ключ живёт 24 часа, потом забывается.
- Ключ действует внутри вашего проекта.
- Длина — не больше 255 символов.
- Тот же ключ с другим телом — ошибка. Ответ 422 с кодом
idempotency_mismatch. Это защита от случайного повторного использования ключа: иначе вы бы молча получили ответ на совсем другую операцию. - Неудачные запросы не запоминаются. Если первый запрос упал с ошибкой 500, повтор с тем же ключом выполнится честно заново — так и задумано.
Когда можно не пользоваться
Часть операций безопасна сама по себе. Поставить тег, который уже стоит, или закрыть закрытый диалог — ничего не изменится и ничего не сломается. Ключ нужен там, где повтор создаёт новую сущность: контакт, компанию, сообщение, подписку на вебхук.
← Назад: Лимиты запросов
Дальше: Вебхуки →