Idempotentlik
Idempotency-Key headeri bilan POST /v1/orders ni xavfsiz qayta yuboring — tarmoq uzilsa ham ikkinchi raqam olinmaydi.
Nega kerak#
Buyurtma yaratish so'rovi serverga yetib borib, javob yo'lda yo'qolishi mumkin. Oddiy qayta yuborish ikkinchi raqamni oladi va pul ikki marta yechiladi.Idempotency-Key bilan server takroriy so'rovni taniydi va o'sha buyurtmani qaytaradi.
Ishlatish#
- Har bir yangi buyurtma uchun yangi tasodifiy kalit yarating (UUID v4), maksimal 80 belgi.
- Qayta urinishlarda aynan o'sha kalit va o'sha body ni yuboring.
- Kalitni buyurtma yozuvi bilan birga bazangizda saqlang — jarayon qayta ishga tushsa ham takrorlay olasiz.
curl -X POST 'https://api.milliysavdo.uz/v1/orders' \
-H "Authorization: Bearer $MILLIYSAVDO_API_KEY" \
-H 'Idempotency-Key: 8f14e45f-ceea-4e1a-9b2c-0d3c5e7a1b20' \
-H "Content-Type: application/json" \
-d '{"country_id":6,"service_code":"907"}'Birinchi so'rov — 201
{
"id": "ord_test_14",
"object": "order",
"mode": "test",
"status": "waiting_sms",
"phone": "+1888582997",
"sms_code": null,
"country": {
"id": 6,
"name": "United States",
"iso_code": null
},
"service": {
"code": "907",
"title": "Telegram"
},
"price": {
"amount": "3842.44",
"amount_cents": 384244,
"retail_amount": "4269.38",
"retail_amount_cents": 426938,
"discount_percent": "10.00",
"currency": "UZS"
},
"created_at": "2026-10-16T02:13:52.251868Z",
"expires_at": "2026-10-16T02:33:52.251868Z",
"completed_at": null
}Takroriy javob#
O'sha kalit bilan qayta yuborilganda 200 OK va Idempotent-Replayed: true headeri qaytadi — body asl buyurtma.
Takror — 200
{
"id": "ord_test_14",
"object": "order",
"mode": "test",
"status": "waiting_sms",
"phone": "+1888582997",
"sms_code": null,
"country": {
"id": 6,
"name": "United States",
"iso_code": null
},
"service": {
"code": "907",
"title": "Telegram"
},
"price": {
"amount": "3842.44",
"amount_cents": 384244,
"retail_amount": "4269.38",
"retail_amount_cents": 426938,
"discount_percent": "10.00",
"currency": "UZS"
},
"created_at": "2026-10-16T02:13:52.251868Z",
"expires_at": "2026-10-16T02:33:52.251868Z",
"completed_at": null
}Xatolar#
| Holat | Javob |
|---|---|
| O'sha kalit, boshqa body | 422 idempotency_key_reused |
| Birinchi so'rov hali bajarilmoqda | 409 idempotency_in_progress — biroz kutib qayta yuboring |
Ma'lumot
Idempotentlik faqat
POST /v1/orders uchun. GET so'rovlari tabiatan xavfsiz, cancel esa takrorlanganda 409 qaytaradi va pulni ikki marta qaytarmaydi.