Идемпотентность
Идемпотентность позволяет безопасно повторять запись: если запрос не дошёл или ответ потерялся из-за сбоя сети, можно повторить его тем же ключом, не боясь записать данные дважды.
Как это работает
Передайте в запросе на запись заголовок Idempotency-Key с уникальным значением
(например, UUID):
curl -X POST "https://app.coverse.team/api/v1/documents/$DOCUMENT_ID/values/append" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9a1c2d3e-4f5a-6b7c-8d9e-0f1a2b3c4d5e" \
-d '{"range":"A1","values":[["Заявка",1500]]}'
Если запрос с этим ключом уже был выполнен, сервер вернёт исходный результат и не станет записывать данные повторно.
Что важно знать
- Ключ хранится 24 часа. После этого запрос с тем же ключом выполнится заново.
- Ключ действует в пределах пользователя: один и тот же ключ в разных токенах одного пользователя считается одним ключом.
- Длина ключа — до 255 символов, иначе вернётся
422. - Повторный ответ помечен заголовком
Idempotency-Replayed: true. - Сохраняется любой завершённый ответ, включая ошибки
4xx: повтор с тем же ключом вернёт ту же ошибку. Ответы5xxне сохраняются — такой запрос можно повторять тем же ключом. - Если запрос с тем же ключом ещё выполняется, параллельный повтор получит
409. - Тело запроса не сравнивается: тот же ключ с другими данными вернёт прежний ответ, новые данные записаны не будут. Не используйте один ключ для разных операций.
Где применяется
Заголовок поддерживают операции записи:
PUT /api/v1/documents/{document}/values/{range}POST .../values/batchUpdatePOST .../values/appendPOST .../values/clearPOST .../documents/{document}/sheets(создание листа)
Рекомендации
- Генерируйте новый ключ на каждую логическую операцию (например, на каждую заявку из бота).
- При повторе после сбоя используйте тот же ключ, что и в исходной попытке.
- Ключ должен быть уникальным и труднопредсказуемым — подойдёт UUID.