Autentifikatsiya
Har bir so'rov Authorization: Bearer headeridagi API kalit bilan autentifikatsiya qilinadi. Test va live kalitlar, rotatsiya va xavfsiz saqlash.
Bearer kalit#
Kalitni Authorization headerida yuboring. Barcha so'rovlar faqat HTTPS orqali.
GET /v1/me HTTP/1.1
Host: api.milliysavdo.uz
Authorization: Bearer ms_test_…Kalitni URL ga qo'ymang
?api_key=… kabi query parametrdagi kalitlar api_key_in_query xatosi bilan rad etiladi — URL lar loglarda, brauzer tarixida va Referer headerida saqlanib qoladi.Test va live kalitlar#
| Prefiks | Muhit | Pul | Kim oladi |
|---|---|---|---|
ms_test_… | Sandbox — simulyatsiya | Yechilmaydi | Har bir foydalanuvchi, darhol |
ms_live_… | Haqiqiy raqamlar | MilliySavdo balansidan | Production ruxsatidan keyin |
Javob va so'rov formatlari ikkala muhitda bir xil. Buyurtma ID lari: live ord_123, test ord_test_123.
Ruxsatlar (scopes)#
| Scope | Endpointlar |
|---|---|
catalog:read | GET /me, /countries, /services, /prices |
balance:read | GET /balance |
orders:read | GET /orders, GET /orders/{id} |
orders:write | POST /orders, POST /orders/{id}/cancel |
Kalitga faqat kerakli scope'larni bering. Yetishmasa — 403 insufficient_scope.
Autentifikatsiya xatolari#
{
"type": "https://api.milliysavdo.uz/docs/errors#authentication_required",
"title": "API kalit berilmagan",
"status": 401,
"detail": "API kalit berilmagan: `Authorization: Bearer <key>`",
"code": "authentication_required",
"request_id": "req_5393565545d9cd88db93af5e"
}{
"type": "https://api.milliysavdo.uz/docs/errors#invalid_api_key",
"title": "API kalit yaroqsiz",
"status": 401,
"detail": "API kalit yaroqsiz",
"code": "invalid_api_key",
"request_id": "req_6ce93e48484857655fdcdae7"
}Boshqa kodlar: api_key_expired, api_key_revoked, live_access_not_granted, client_suspended, ip_not_allowed — to'liq ro'yxat Xatolar sahifasida.
Kalit rotatsiyasi#
Kabinetda Rotatsiya tugmasi yangi maxfiy kalit yaratadi. Eski kalit tanlangan muddat (0–72 soat, standart 24 soat) davomida ishlashda davom etadi — shu vaqt ichida yangi kalitni deploy qiling. Kalit sizib chiqqan bo'lsa, darhol bekor qiling yoki grace = 0 bilan rotatsiya qiling.
Amal qilish muddati#
Kalit yaratishda muddatni tanlaysiz (7 kundan 2 yilgacha, tarifga bog'liq). Muddati tugashiga 7 kun qolganda kabinet ogohlantiradi.
Kalitni qayerda saqlash kerak#
- Faqat serverda: muhit o'zgaruvchisi yoki secret manager (Vault, AWS Secrets Manager, Doppler…).
- Hech qachon brauzer JavaScript, mobil ilova, Git repozitoriy yoki URL ichida emas.
- Har bir muhit/server uchun alohida kalit — bittasini bekor qilish boshqalariga ta'sir qilmaydi.
IP allowlist#
Live kalitlarni ma'lum server IP manzillari bilan cheklash mumkin. Ruxsat etilmagan IP dan kelgan so'rov 403 ip_not_allowed qaytaradi. IP ro'yxatini sozlash uchun qo'llab-quvvatlash xizmatiga yozing yoki production arizasidagi izohda ko'rsating.