Идемпотентные запросы
Идемпотентные запросы
Как использовать ключи идемпотентности для надёжных интеграций с API.
Идемпотентные запросы
Как использовать ключи идемпотентности для надёжных интеграций с API.
В контексте API идемпотентность значит: повтор одного и того же запроса даёт тот же эффект, что и один вызов. Если идемпотентный POST на создание ресурса отправить пять раз, ресурс создаётся только при первом успешном ответе; остальные четыре не создают новых сущностей, а возвращают результат первого.
Это важно для устойчивых систем: сетевые сбои, таймауты и повторы на клиенте неизбежны. Без идемпотентности можно получить дубликаты — несколько одинаковых inbox или вебхуков.
Для всех операций create поддерживается необязательный параметр client_id.
Если в запросе на create передан client_id, платформа проверяет, был ли уже успешно выполнен запрос с таким же client_id.
client_id → идентификатор ресурса сохраняется.client_id уже был — запрос не выполняется повторно; сразу возвращается 200 OK с данными первого успешного ответа.Так можно безопасно повторять запросы без риска дубликатов.
client_idclient_id должен быть уникальным для создаваемой сущности и детерминированным для одной и той же логической сущности у вас.
client_id, например inbox-for-user-{{USER_ID}} для основного ящика пользователя.client_id для разных типов ресурсов. Тот же ключ, что для inbox, не подходит для вебхука.Надёжный приём: сгенерировать на клиенте UUID (например v4) для создаваемого ресурса, сохранить его у себя в БД и передать как client_id в API — тогда при любых повторах ключ стабилен.