Skip to content

Tokenlar bilan ishlash ​

Har bir oqim bir xil natijaga olib keladi: har murojaatda yuboradigan access_token va muddati tugaganda yangi juftlik olish uchun refresh_token.

Avtorizatsiya kodini almashtirish ​

Flow A va Flow B uchun bir xil.

So'rov

http
POST /auth/oauth/token
Content-Type: application/json

{
    "grant_type": "authorization_code",
    "code": "abc123def456",
    "client_id": "69c50a2d50f7b939923a469b",
    "client_secret": "4f3c1a9e8b27d605f1ac93e7d284b6510ff7a3c9e15d8b2470a6cd91e83f4b27"
}
MaydonTurMajburiyTavsif
grant_typestringHaDoim "authorization_code"
codestringHaBito bergan avtorizatsiya kodi
client_idstringHaSizning OAuth client id
client_secretstringHaMijoz siringiz

Javob

json
{
    "code": 0,
    "message": "Success",
    "data": {
        "access_token": "eyJhbGciOiJIUzI1NiIs...",
        "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
        "expires_in": 86400,
        "token_type": "Bearer",
        "scope": "read write"
    }
}

expires_in — berilgan paytdan boshlab soniyalarda.

WARNING

Avtorizatsiya kodi bir martalik va 20 daqiqadan keyin o'ladi. Ikkinchi marta almashtirishga urinish Invalid credentials qaytaradi, ikkinchi token juftligini emas.

Tokenlarni yangilash ​

So'rov

http
POST /auth/oauth/token
Content-Type: application/json

{
    "grant_type": "refresh_token",
    "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
    "client_id": "69c50a2d50f7b939923a469b",
    "client_secret": "4f3c1a9e8b27d605f1ac93e7d284b6510ff7a3c9e15d8b2470a6cd91e83f4b27"
}

Javob shakli kodni almashtirish bilan bir xil.

WARNING

Har bir yangilashda ikkala token ham almashadi. Ishlatilgan refresh token ishlamay qoladi — yangi juftlikni atomar saqlang, aks holda keyingi yangilash muvaffaqiyatsiz bo'ladi va mijoz integratsiyani qayta o'rnatishga majbur bo'ladi.

Yangilash o'chirilgan integratsiyani qaytarmaydi. Mijoz sizni o'chirsa, refresh o'rnatilmagan yozuv bilan ishlashda davom etadi, shuning uchun haqiqiy signal deb o'chirish hookini hisoblang.

Client credentials ​

Foydalanuvchi ishtirokisiz server vazifalari uchun. Boshqa endpointga boradi — /auth/oauth/token emas, /auth/oauth/auth — va oraliq kodsiz, darhol token qaytaradi.

WARNING

Shart: mijoz integratsiyangizni allaqachon o'rnatgan bo'lishi kerak. Bu usul aynan o'rnatma sirini tekshiradi, shuning uchun birinchi o'rnatishgacha solishtiradigan narsa yo'q.

So'rov

http
POST /auth/oauth/auth
Content-Type: application/json

{
    "response_type": "client_credentials",
    "client_id": "69c50a2d50f7b939923a469b",
    "client_secret": "4f3c1a9e8b27d605f1ac93e7d284b6510ff7a3c9e15d8b2470a6cd91e83f4b27",
    "redirect_uri": "https://example-app.com/callback",
    "scope": ["read", "write"],
    "state": "optional_state"
}
MaydonTurMajburiyTavsif
response_typestringHaDoim "client_credentials"
client_idstringHaSizning OAuth client id
client_secretstringHaO'rnatilgan integratsiyaning siri
redirect_uristringHaTo'g'ri URL bo'lishi shart. Bu yerda redirect bo'lmasa ham tekshiriladi — ro'yxatdan o'tgan manzilingizni yuboring.
scopestring[]HaSo'ralayotgan huquqlar, massiv ko'rinishida
statestringYo'qIxtiyoriy qiymat, o'zgarishsiz qaytariladi

Javob

json
{
    "code": 0,
    "message": "Success",
    "data": {
        "access_token": "eyJhbGciOiJIUzI1NiIs...",
        "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
        "expires_in": 86400,
        "token_type": "Bearer",
        "scope": "read write"
    }
}

Access tokendan foydalanish ​

Tokenni har bir so'rovda Authorization sarlavhasida yuboring.

http
POST /integration/api/v2/product/get-paging
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
Accept-Language: uz

{
    "limit": 20,
    "page": 1
}
SarlavhaMajburiyTavsif
AuthorizationHaBearer <access_token>
Accept-LanguageYo'qJavob tili: uz, uz_cyrillic, ru, en, kk, tg, ky. Standart — uz.
organization_idYo'qAkkaunt ichidagi tashkilot. Faqat integratsiya sozlamalarida (fields) organization_id maydoni bo'lsa ishlatiladi — aks holda sarlavha e'tiborga olinmaydi. Yuborilmasa, o'sha maydon qiymati olinadi.
warehouse_idYo'qOmbor. Faqat integratsiya sozlamalarida (fields) warehouse_id maydoni bo'lsa ishlatiladi — aks holda sarlavha e'tiborga olinmaydi. Yuborilmasa, o'sha maydon qiymati olinadi.
price_idYo'qNarxlar olinadigan narx ro'yxati. Faqat integratsiya sozlamalarida (fields) price_id maydoni bo'lsa ishlatiladi — aks holda sarlavha e'tiborga olinmaydi. Yuborilmasa, o'sha maydon qiymati olinadi.
role_idYo'qSo'rov bajariladigan rol. Faqat integratsiya sozlamalarida (fields) role_id maydoni bo'lsa ishlatiladi — aks holda sarlavha e'tiborga olinmaydi. Yuborilmasa, o'sha maydon qiymati olinadi.
user_idYo'qSo'rovni shu foydalanuvchi nomidan bajarish. Foydalanuvchi shu akkauntga tegishli va bloklanmagan bo'lishi shart, aks holda so'rov rad etiladi. Yuborilmasa — akkaunt egasi nomidan.

Akkaunt identifikatorini yubormaysiz — u tokenning ichida.

Tokenlarning amal qilish muddati ​

TokenMuddatIzoh
Avtorizatsiya kodi20 daqiqaBir martalik, shu oraliqda almashtirilishi kerak
Access token24 soatAuthorization sarlavhasida yuboriladi
Refresh token90 kunYangi juftlikka almashtiriladi; har ishlatishda almashadi
Bir martalik token24 soatBir martalik, mijoz siri bilan imzolangan — Bir martalik tokenlar

WARNING

Mijoz sirini yangilash eski sir ostida berilgan barcha access va refresh tokenlarni barcha mijoz akkauntlarida bir vaqtda o'ldiradi.

So'rovlar chegarasi ​

/auth/oauth/auth va /auth/oauth/token bitta IP uchun daqiqasiga 20 so'rov qabul qiladi. Tokenni muddati tugaganda yangilang, taymer bo'yicha yoki har so'rov oldidan emas.

Bito 2.0 Integration API