Золотенков

Повторы и идемпотентность

Любая ручка записи требует заголовок Idempotency-Key. Он превращает повтор запроса в безопасное действие.

Значение ключа выбирает клиент: подойдет UUID, длина — до 200 символов. Повтор запроса с тем же ключом возвращает исходный ответ и второй документ не создает.

Если оборвалась связь и судьба запроса неизвестна, его повторяют с тем же значением ключа. Новое значение в такой ситуации создаст дубль.

Тот же ключ с другим телом запроса — ошибка 409: так ловится случайное переиспользование значения.

Создание с ключом идемпотентности
curl --request POST \
  --url 'https://mrp.zolotenkov.ru/api/external/v1/sales-orders' \
  --header 'Authorization: Bearer zol_pat_live_ВАШ_КЛЮЧ' \
  --header 'Idempotency-Key: 6f1c4c1b-9a2f-3f7d1c9b8a21' \
  --header 'Content-Type: application/json' \
  --data '{"customer_id": 42, "items": [{"item_variant_id": 7, "quantity": "10.000"}]}'