Идемпотентность
Как повторить создание заказа и не получить дубль.
POST /api/v1/orders требует externalId, ваш идентификатор заказа во
внешней системе. Он же служит ключом идемпотентности.
| Запрос | Ответ |
|---|---|
первый POST с externalId: "A-1001" | 201, новый заказ |
повторный POST с тем же externalId | 200, тот же заказ без изменений |
два одновременных POST с одним externalId | один 201, другой 200, заказ один |
externalId совпал с номером заказа из Тильды или созданного вручную | 409, код conflict |
Поэтому запрос безопасно повторять после таймаута или обрыва связи: если
первая попытка дошла, вторая вернёт уже созданный заказ. Тело повтора API не
сравнивает с оригиналом, изменения шлите через PATCH.
Поиск по своему идентификатору
Заказ можно получить по externalId без хранения нашего id:
curl "https://refsales.ru/api/v1/orders/A-1001?by=externalId" \
-H "Authorization: Bearer rsk_live_xxx"После создания externalId не меняется: PATCH с этим полем вернёт 400.
Номера заказов
Заказы из Тильды и созданные вручную получают 10-значные номера в том же поле.
Чтобы не пересечься с ними, добавьте к своему идентификатору префикс, например
MS-1001. Ответ 409 значит, что номер уже занят: такой заказ создать нельзя,
возьмите другой externalId.