Asosiy kontentga o'tish
MilliySavdo

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.

HTTP
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#

PrefiksMuhitPulKim oladi
ms_test_…Sandbox — simulyatsiyaYechilmaydiHar bir foydalanuvchi, darhol
ms_live_…Haqiqiy raqamlarMilliySavdo balansidanProduction ruxsatidan keyin

Javob va so'rov formatlari ikkala muhitda bir xil. Buyurtma ID lari: live ord_123, test ord_test_123.

Ruxsatlar (scopes)#

ScopeEndpointlar
catalog:readGET /me, /countries, /services, /prices
balance:readGET /balance
orders:readGET /orders, GET /orders/{id}
orders:writePOST /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.