| Holat | Misol |
|---|---|
| Masofadan mijozni identifikatsiya qilish (KYC) | Bank, mikromoliya yoki sug'urta ilovasi ofisga kelmasdan hisob ochadi. |
| Muhim amal oldidan shaxsni tasdiqlash | Yirik o'tkazma, parolni tiklash yoki telefon raqamini almashtirishdan oldin akkaunt egasini tasdiqlash. |
| Onlayn shartnoma imzolash | Ilovada kredit yoki ijara shartnomasini aynan shu fuqaro imzolayotganini tekshirish. |
| Yosh / shaxsni tekshirish | Yoshni yoki haqiqiy shaxsni tasdiqlashi kerak bo'lgan marketpleys, telekom, o'yin yoki yetkazib berish ilovalari. |
| Ro'yxatdan o'tishni avtomatik to'ldirish | Foydalanuvchi faqat selfi oladi; ro'yxatdan o'tish formasi tasdiqlangan F.I.Sh., hujjat va tug'ilgan sana bilan to'ldiriladi. |
| Qayta tekshirish | Qaytgan foydalanuvchi oldingi sessiyasidagi ma'lumotlar bo'yicha, ularni qayta kiritmasdan, yana tekshiriladi. |
| Atama | Kim |
|---|---|
| Mijoz (Client) | RS-ID'ni integratsiya qilayotgan kompaniya (siz). RS-ID'da ro'yxatdan o'tgan va Mobile SDK uchun client_id / client_secret olgan. Mijoz backendi (RS-ID API ni chaqiradi) va mijoz ilovasini (ichida RS-ID SDK bo'lgan Android / iOS ilovangiz) o'z ichiga oladi. |
| Foydalanuvchi | Identifikatsiya qilinayotgan inson — sizning mijozingiz, O'zbekiston fuqarosi. |
| Server | RS-ID serveri: Mobile SDK API (<rsid_base_url>). |
| RS-ID SDK | Mijoz ilovasiga qo'shilgan nativ RS-ID kutubxonasi. RS-ID ekranlarini (ma'lumot kiritish, kamera) ko'rsatadi va selfini serverga yuboradi. |
| Sessiya | Mijoz backendi yaratgan bitta identifikatsiya urinishi. session_id (UUID) bilan aniqlanadi. Amal qilish muddati va urinishlar soni cheklangan. |
| JSHSHIR (PINFL) | Jismoniy shaxsning shaxsiy identifikatsiya raqami — 14 ta raqam. |
Hujjat raqami (id_number) | Pasport yoki ID-karta seriyasi va raqami, masalan AA1234567. |
AndroidManifest.xml da android.permission.CAMERA;Info.plist da NSCameraUsageDescription (kamera so'ralganda foydalanuvchiga ko'rsatiladigan matn).session_id bilan (7.4).GET /v1/user/{session_id} orqali (7.7).Web SDK dan farqli ravishda, Mobile SDK sessiyalari IP manzilga bog'lanmaydi va redirect_urlyo'q — natija SDK dan ilovangizga qaytadi.
| Muhit | API bazaviy URL |
|---|---|
| Stage (test) | https://sdk.stage.rsid.uz/mobile/api |
| Production | https://sdk.rsid.uz/mobile/api |
client_id / client_secret ishlatiladi. Mobile SDK hisob ma'lumotlari Web SDK hisob ma'lumotlaridan farq qiladi — Web SDK mijozi mobil sessiyalar yarata olmaydi (-1002).{ "data": { }, "code": 0, "message": "Success" }| Maydon | Turi | Tavsif |
|---|---|---|
code | integer | 0 — muvaffaqiyat. Boshqa har qanday qiymat — xato (xatolar jadvaliga qarang). Faqat HTTP-statusni emas, har doim code ni tekshiring. |
message | string | So'rov tilidagi matn (uz / ru / en). Uni dasturiy tahlil qilmang. |
data | any | Javob ma'lumotlari. Xato bo'lganda yo'q. |
| Sarlavha | Qiymat | Qayerda ishlatiladi |
|---|---|---|
Content-Type | application/json | Barcha POST so'rovlar |
Authorization | Bearer {access_token} | sign-in va refresh dan tashqari barcha so'rovlar |
Accept-Language | uz / ru / en | Ixtiyoriy — message tili |
Xavfsizlik. client_secretfaqat mijoz backendida saqlanishi kerak. Uni hech qachon ilovaga qo'ymang — ilova fayllarini ajratib olish mumkin. sign-in va sessiya yaratish ni faqat backendingizdan chaqiring.
POST{base_url}/v1/auth/sign-in — Authorization sarlavhasisizapplication/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
client_id | string | Ha | Bo'sh emas; raqam bilan boshlanmaydi | RS-ID bergan Mobile SDK mijoz identifikatori. |
client_secret | string | Ha | Bo'sh emas | RS-ID bergan mijoz siri. |
{
"client_id": "mobile-sdk-client",
"client_secret": "s3cr3t-value"
}| Maydon | Turi | Tavsif |
|---|---|---|
data.access_token | string (JWT) | Authorization: Bearer sarlavhasi uchun token. |
data.token_type | string | Har doim Bearer. |
data.expires_in | integer | Tokenning amal qilish muddati, soniyalarda. |
data.scope | string | Berilgan huquqlar, bo'sh joy bilan ajratilgan. |
data.refresh_token | string (JWT) | Hisob ma'lumotlarini qayta yubormasdan yangi access_token olish uchun token. |
code | integer | Muvaffaqiyatda 0. |
message | string | Natija matni. |
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read write",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
"code": 0,
"message": "Success"
}access_token muddati tugaguncha undan qayta foydalaning.refresh_token orqali qayta avtorizatsiyasiz yangi access_token beradi. access_token muddati tugaganda (expires_in soniyadan keyin) chaqiring.POST{base_url}/v1/auth/refresh?token={refresh_token} — Authorization sarlavhasisiz.application/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
token | string | Ha | JWT | Avtorizatsiyadan (7.1) yoki oldingi yangilash javobidan olingan refresh_token. |
| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
client_id | string | Ha | Bo'sh emas; raqam bilan boshlanmaydi | RS-ID bergan Mobile SDK mijoz identifikatori. |
client_secret | string | Ha | Bo'sh emas | RS-ID bergan mijoz siri. |
{
"client_id": "mobile-sdk-client",
"client_secret": "s3cr3t-value"
}| Maydon | Turi | Tavsif |
|---|---|---|
data.access_token | string (JWT) | Authorization: Bearer sarlavhasi uchun yangi token. |
data.token_type | string | Har doim Bearer. |
data.expires_in | integer | Tokenning amal qilish muddati, soniyalarda. |
data.scope | string | Berilgan huquqlar, bo'sh joy bilan ajratilgan. |
data.refresh_token | string (JWT) | Keyingi yangilash uchun yangi refresh-token. |
code | integer | Muvaffaqiyatda 0. |
message | string | Natija matni. |
{
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"scope": "read write",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
},
"code": 0,
"message": "Success"
}POST{base_url}/v1/sessionsBearer {access_token}application/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
client_type | string (enum) | Ha | MOBILE | Integratsiya kanali. Mobile SDK uchun har doim MOBILE. |
user_info | object | Yo'q | — | Fuqaro ma'lumotlari. user_info bilan sessiya yaratish uchun yuboring; user_info siz sessiya uchun yubormang. |
user_info.pinfl | string | Shartli | Aniq 14 ta raqam | JSHSHIR. Yoki pinfl, yoki id_number yuboring, ikkalasini emas. |
user_info.id_number | string | Shartli | 9 belgi: 2 ta harf + 7 ta raqam, masalan AA1234567 | Pasport / ID-karta raqami. Yoki pinfl, yoki id_number yuboring, ikkalasini emas. |
user_info.birth_date | string | user_info yuborilsa, ha | dd.MM.yyyy | Tug'ilgan sana. Foydalanuvchi kamida 16 yoshda bo'lishi kerak. |
session_id | string | Yo'q | UUID, 36 belgi | Xuddi shu foydalanuvchi uchun mijozingizning oldingi sessiyasi. Yangi sessiya fuqaro ma'lumotlarini undan oladi, foydalanuvchi ularni qayta kiritmaydi. user_info yuborilsa, e'tiborga olinmaydi. |
external_id | string | Yo'q | — | Sessiyani o'z ma'lumotlaringiz bilan bog'lash uchun o'z identifikatoringiz (buyurtma, ariza yoki mijoz). Tasodifiy uuid tavsiya etiladi. |
retry_count | integer | Yo'q | > 0 | Maksimal urinishlar soni. Yuborilmasa, 0 yoki tizim maksimumidan katta bo'lsa, tizim maksimumi ishlatiladi. |
threshold | number | Yo'q | 0.0 – 1.0 | O'tish uchun yuzlar o'xshashligining minimal chegarasi. Standart qiymat 0.5. Quyidagi izohga qarang. |
locale | string (enum) | Yo'q | UZ, RU, EN | Standart qiymat UZ. |
additional_params | object | Yo'q | Faqat quyidagi kalitlar | RS-ID SDK ekranlari sozlamalari. Boshqa har qanday kalit rad etiladi. |
additional_params.lang | string | Yo'q | uz, ru, en | SDK ekranlari tili. |
additional_params.theme | string | Yo'q | masalan light, dark | SDK ekranlari mavzusi. |
additional_params.primary_color | string | Yo'q | HEX rang, masalan #1A73E8 | SDK ekranlarining asosiy rangi. |
Chegara (threshold). threshold— identifikatsiyadan o'tish uchun selfi pasport fotosurati bilan taqqoslanganda olishi kerak bo'lgan minimal o'xshashlik bahosi (0.0dan1.0gacha). Parametr yuborilmasa, standart qiymat0.5ishlatiladi. Agar o'zingiz yuborsangiz,0.5dan yuqori qiymat tavsiya etiladi. Yuqori aniqlikdagi (qat'iy) identifikatsiya uchun0.7dan yuqori qiymat yuboring. Qiymat qanchalik yuqori bo'lsa, tekshiruv shunchalik qat'iy va boshqa odamning o'tib ketish xavfi past bo'ladi, lekin haqiqiy foydalanuvchilarga ko'proq urinish kerak bo'lishi mumkin.
IP ga bog'lanish va yo'naltirish yo'q. Mobil sessiyalar ip_addressvaredirect_urldan foydalanmaydi. Natija SDK tomonidan ilovangizga qaytariladi (7.6).
| Maydon | Turi | Uzunlik / format | Tavsif |
|---|---|---|---|
data | string | UUID, 36 belgi | Yangi sessiyaning session_id qiymati. Uni RS-ID SDK ga uzating va natijani olish uchun ishlating. |
code | integer | Muvaffaqiyatda 0. | |
message | string | Natija matni. |
{
"data": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"code": 0,
"message": "Success"
}| Kod | Sabab |
|---|---|
-1000 | Noto'g'ri so'rov — masalan, user_info da pinfl / id_number ikkalasi ham yuborilgan yoki hech biri yuborilmagan. |
-1002 | Hisob ma'lumotlari Mobile SDK mijoziga tegishli emas yoki session_id boshqa mijozga tegishli. |
-1024 | id_number formati noto'g'ri. |
-1025 | pinfl formati noto'g'ri. |
-1026 | birth_date yuborilmagan. |
-1029 | session_id topilmadi. |
-1034 | additional_params da noma'lum kalit. |
-1052 | threshold 0–1 oralig'idan tashqarida. |
-1090 | Foydalanuvchi 16 yoshga to'lmagan. |
400 | Maydon validatsiyasi xatosi yoki client_type yuborilmagan. |
session_id bilan mijoz ilovasi RS-ID SDK ni ishga tushiradi.session_id ni ilovaga qaytaradi.| Parametr | Tavsif |
|---|---|
session_id | 7.3 dan. |
access_token | Mobile SDK mijozingizning amal qilayotgan kirish tokeni. SDK undan RS-ID serveriga murojaat qilish uchun foydalanadi; server sessiya bo'yicha so'rovlarni faqat uni yaratgan mijoz tokeni bilan qabul qiladi. |
| Muhit | Stage yoki production — sessiya yaratilgan muhit bilan mos kelishi kerak. |
| SDK rejimi | Qachon ko'rsatiladi | Foydalanuvchi nima qiladi |
|---|---|---|
| with_info | Sessiya user_info siz va session_id siz yaratilgan (2-variant) | Ma'lumotlarini kiritadi, so'ng selfi oladi |
| without_info | Sessiya user_info bilan (1-variant) yoki oldingi session_id bilan (3-variant) yaratilgan | Faqat selfi oladi |
DD.MM.YYYY) kiritadi.retry_count), qayta urinish imkonini beradi. Urinishlar tugaganda yoki sessiya muddati o'tganda SDK muvaffaqiyatsizlik qaytaradi va mijoz yangi sessiya yaratishi kerak.| Natija | Nima qilish kerak |
|---|---|
| Muvaffaqiyat | Backendingizga sessiya yakunlanganini xabar qiling; backend profilni oladi (7.7). |
| Muvaffaqiyatsizlik | Urinishlar tugagan yoki sessiya muddati o'tgan. Foydalanuvchi qayta urinmoqchi bo'lsa, yangi sessiya yarating (7.3). |
| Bekor qilindi | Foydalanuvchi SDK ni yopdi. Sessiya faol ekan, SDK ni xuddi shu session_id bilan qayta ishga tushirish mumkin. |
Ilovadagi natijaning o'zini identifikatsiya tasdig'i deb hisoblamang — ilova foydalanuvchi qurilmasida ishlaydi va o'zgartirilishi mumkin. Natijani har doim backendingizdan 7.7 orqali tasdiqlang.
GET{base_url}/v1/user/{session_id}Bearer {access_token}| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
session_id | string | Ha | UUID, 36 belgi | 7.3 dan. |
| Maydon | Turi | Tavsif |
|---|---|---|
data.session_id | string | Sessiya identifikatori. |
data.comparison_value | number | Yuzlar o'xshashligi bahosi, 0–1. |
data.note | string | Xato haqida izoh, agar bo'lsa. |
data.profile.user_info.first_name | string | Ism. |
data.profile.user_info.last_name | string | Familiya. |
data.profile.user_info.middle_name | string | Otasining ismi. |
data.profile.user_info.pinfl | string | JSHSHIR, 14 ta raqam. |
data.profile.user_info.gender | string | Jinsi. |
data.profile.user_info.birth_date | string | yyyy-MM-dd. |
data.profile.user_info.birth_place | string | Tug'ilgan joyi. |
data.profile.user_info.birth_country | string | Tug'ilgan mamlakati. |
data.profile.user_info.nationality | string | Millati. |
data.profile.user_info.citizenship | string | Fuqaroligi. |
data.profile.document_info.document | string | Hujjat seriyasi va raqami. |
data.profile.document_info.type | string | Hujjat turi. |
data.profile.document_info.issued_by | string | Kim tomonidan berilgan. |
data.profile.document_info.issued_at | string | Berilgan sana, yyyy-MM-dd. |
data.profile.document_info.expiry_at | string | Amal qilish muddati, yyyy-MM-dd. |
data.profile.permanent_address | object | country, country_id, region_id, district_id, address. |
data.profile.temporary_address | object | null bo'lishi mumkin. |
{
"data": {
"session_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"comparison_value": 0.93,
"profile": {
"user_info": {
"first_name": "ALISHER",
"last_name": "KARIMOV",
"middle_name": "BAXTIYOROVICH",
"pinfl": "12345678901234",
"gender": "MALE",
"birth_date": "1990-01-01",
"birth_place": "TOSHKENT",
"birth_country": "UZBEKISTAN",
"nationality": "UZBEK",
"citizenship": "UZBEKISTAN"
},
"document_info": {
"document": "AA1234567",
"type": "PASSPORT",
"issued_by": "IIV 26283",
"issued_at": "2018-05-10",
"expiry_at": "2028-05-09"
},
"contact_info": {},
"permanent_address": {
"country": "UZBEKISTAN",
"country_id": 182,
"region_id": 26,
"district_id": 2603,
"address": "..."
},
"temporary_address": null
}
},
"code": 0,
"message": "Success"
}| Kod | Sabab |
|---|---|
-1005 | Identifikatsiya muvaffaqiyatsiz. |
-1027 | Sessiya muddati tugagan — natijani SDK muvaffaqiyat qaytargach darhol so'rang. |
-1029 | Sessiya topilmadi. |
-1002 | Sessiya boshqa mijozga tegishli. |
| Kod | Nomi | Ma'nosi |
|---|---|---|
0 | SUCCESS | Muvaffaqiyat. |
-5 | BAD_CREDENTIALS | Hisob ma'lumotlari noto'g'ri yoki token foydalanuvchisi topilmadi. |
-9 | SYSTEM_ERROR | Kutilmagan server xatosi. |
-1000 | BAD_REQUEST | Noto'g'ri so'rov. |
-1002 | CLIENT_NOT_PERMITTED | Bu mijoz uchun ruxsat yo'q. |
-1005 | UNSUCCESS_JOB | Identifikatsiya muvaffaqiyatsiz. |
-1008 | IDENTIFICATION_FAILED | Yuz mos kelmadi. |
-1024 | INVALID_ID_NUMBER | Hujjat raqami noto'g'ri. |
-1025 | INVALID_PINFL | JSHSHIR noto'g'ri. |
-1026 | BIRTH_DATE_NOT_NULL | Tug'ilgan sana talab qilinadi. |
-1027 | SESSION_EXPIRED | Sessiya muddati tugagan. |
-1029 | JOB_SESSION_NOT_FOUND | Sessiya topilmadi. |
-1031 | RETRY_COUNT_EXPIRED | Urinishlar tugadi. |
-1032 | SUCCESS_JOB_EXISTS_FOR_SESSION | Sessiya allaqachon muvaffaqiyatli o'tilgan. |
-1033 | SPOOFED_FILE_DETECTED | "Tiriklik" tekshiruvidan o'tilmadi. |
-1034 | ADDITIONAL_PARAMS_INVALID | additional_params da noma'lum kalit. |
-1052 | INVALID_THRESHOLD_LIMIT | threshold 0–1 oralig'idan tashqarida. |
-1090 | USER_AGE_OLDER_THAN_16 | Foydalanuvchi kamida 16 yoshda bo'lishi kerak. |
-2001 | AI_ERROR | Yuzni aniqlash servisida xato. |