| Holat | Misol |
|---|---|
| O'z interfeysingizda identifikatsiya | Bank o'z ilovasida selfi oladi va uni reyestrdagi pasport fotosurati bilan solishtiradi. |
| Filial / kiosk / call-markazdagi tekshiruvlar | Operator tizimi filial yoki kioskda olingan fotosuratni yuboradi. |
| Selfini hujjat fotosurati bilan solishtirish | Foydalanuvchi selfisini skanerlangan ID-karta fotosurati bilan taqqoslash. |
| Ikki fotosuratni solishtirish | Ikki fotosuratda bir xil odam ekanini tekshirish, masalan yangi selfi va ro'yxatdan o'tishda saqlangan selfi. |
| Paketli / bek-ofis tekshiruvlari | Mavjud mijozlarni o'z tizimingizdan qayta tekshirish. |
| Atama | Kim |
|---|---|
| Mijoz (Client) | RS-ID'ni integratsiya qilayotgan kompaniya (siz). RS-ID'da ro'yxatdan o'tgan va Backend API uchun client_id / client_secret olgan. RS-ID'ga faqat mijoz backendi murojaat qiladi. |
| Foydalanuvchi | Yuzi tekshirilayotgan inson — sizning mijozingiz, O'zbekiston fuqarosi. |
| Server | RS-ID serveri: Backend API (<rsid_base_url>). |
| Sessiya | Bitta taqqoslash so'rovi. Har bir taqqoslash chaqiruvi yangi sessiya yaratadi va uning session_id (UUID) qiymatini qaytaradi. Natija shu orqali olinadi. |
| Asl / taqqoslanadigan fotosurat | 2- va 3-variantlarda taqqoslanadigan ikki fotosurat: foydalanuvchi fotosurati va u bilan solishtiriladigan fotosurat. |
| JSHSHIR (PINFL) | Jismoniy shaxsning shaxsiy identifikatsiya raqami — 14 ta raqam. |
Hujjat raqami (id_number) | Pasport yoki ID-karta seriyasi va raqami, masalan AA1234567. |
session_id qaytaradi; natija har doim 7.6 Natijani olish orqali olinadi.| Variant | Endpoint | Nima taqqoslanadi | user_info | Natijada fuqaro profili |
|---|---|---|---|---|
| 1-variant | POST /v1/authentication/async/compare | Foydalanuvchining bitta fotosurati ↔ reyestrdagi fuqaroning pasport fotosurati | Majburiy | Ha |
| 2-variant | POST /v1/authentication/async/compare-images | Mijoz yuborgan ikkita fotosurat | Majburiy | Ha |
| 3-variant | POST /v1/face/async/compare-images | Mijoz yuborgan ikkita fotosurat | Ishlatilmaydi | Yo'q — faqat baho |
code = 0. Aks holda code = -200 (hali ishlanmoqda). Ikkala holatda ham data maydonida session_id qaytariladi.GET /v1/user/{session_id} orqali oladi (7.6).| Muhit | API bazaviy URL |
|---|---|
| Stage (test) | https://stage.rsid.uz/backend/api |
| Production | https://rsid.uz/backend/api |
client_id / client_secret ishlatiladi. Backend API hisob ma'lumotlari Web va Mobile SDK hisob ma'lumotlaridan farq qiladi — SDK mijozi taqqoslash metodlarini chaqira olmaydi (-1002).{ "data": { }, "code": 0, "message": "Success" }| Maydon | Turi | Tavsif |
|---|---|---|
code | integer | 0 — muvaffaqiyat. Boshqa har qanday qiymat — xato yoki holat (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 |
Idempotency-Key | UUID, har bir so'rov uchun yangi | Taqqoslash metodlari uchun majburiy (7.3–7.5) |
Accept-Language | uz / ru / en | Ixtiyoriy — message tili |
Idempotency-Key. Har bir taqqoslash so'rovi uchun yangi UUID yarating. Agar so'rov 5 daqiqa ichida xuddi shu kalit bilan takrorlansa, RS-ID yangi taqqoslashni ishga tushirmasdan birinchi so'rovning saqlangan javobini qaytaradi — bu tarmoq xatosidan keyin so'rovni xavfsiz takrorlash imkonini beradi. Birinchi so'rov hali bajarilayotganda takrorlansa, HTTP 409qaytariladi. Kalit yuborilmasa, HTTP400qaytariladi.
data:image/...;base64, prefiksisiz base64 satr ko'rinishida yuboring.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 Backend API mijoz identifikatori. |
client_secret | string | Ha | Bo'sh emas | RS-ID bergan mijoz siri. |
{
"client_id": "backend-api-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 Backend API mijoz identifikatori. |
client_secret | string | Ha | Bo'sh emas | RS-ID bergan mijoz siri. |
{
"client_id": "backend-api-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"
}user_info bo'yicha topadi, uning pasport fotosurati va ma'lumotlarini oladi va yuzlarni taqqoslaydi.POST{base_url}/v1/authentication/async/compareBearer {access_token}{uuid}application/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
photo | string | Ha | Base64 | Foydalanuvchi fotosurati (selfi). |
is_spoofing_required | boolean | Yo'q | true / false | Fotosuratni "tiriklik" (anti-spufing) tekshiruvidan o'tkazish. Standart qiymat false. Jonli selfi uchun true tavsiya etiladi. |
user_info | object | Ha | — | Pasport fotosuratini topish uchun fuqaro ma'lumotlari. |
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. |
threshold | number | Yo'q | 0.0 – 1.0 | O'tish uchun yuzlar o'xshashligining minimal chegarasi. Standart qiymat 0.5. Quyidagi izohga qarang. |
external_id | string | Yo'q | — | So'rovni o'z ma'lumotlaringiz bilan bog'lash uchun o'z identifikatoringiz. Tasodifiy uuid tavsiya etiladi. |
locale | string (enum) | Yo'q | UZ, RU, EN | Standart qiymat UZ. |
Chegara (threshold). threshold— taqqoslash muvaffaqiyatli hisoblanishi uchun yuzlar o'xshashligining minimal 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 foydalanuvchilar tekshiruvdan tez-tez o'tolmasligi mumkin.
{
"photo": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U...",
"is_spoofing_required": true,
"user_info": {
"pinfl": "12345678901234",
"birth_date": "01.01.1990"
},
"threshold": 0.7,
"external_id": "9b1d2c7e-4f3a-4b8e-a1c5-6d2f0e9a7b31",
"locale": "UZ"
}"user_info": { "id_number": "AA1234567", "birth_date": "01.01.1990" }| Maydon | Turi | Uzunlik / format | Tavsif |
|---|---|---|---|
data | string | UUID, 36 belgi | Ushbu taqqoslashning session_id qiymati. Uni 7.6 da ishlating. |
code | integer | 0 — yakunlandi; -200 — hali ishlanmoqda. Boshqa har qanday qiymat — xato. | |
message | string | Natija matni. |
{
"data": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"code": 0,
"message": "Success"
}{
"data": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"code": -200,
"message": "Waiting for async process"
}Javob — bu hukm emas. code=0taqqoslash yakunlanganini bildiradi, yuzlar mos kelgani yoki fotosurat jonli ekanini emas. Natijani har doim 7.6 orqali oling vacomparison_valuehamdanoteni tekshiring.
| Kod | Sabab |
|---|---|
-1000 | Noto'g'ri so'rov — masalan, user_info yo'q, pinfl / id_number ikkalasi ham yuborilgan yoki hech biri yuborilmagan; fuqaro reyestrda topilmadi. |
-1002 | Hisob ma'lumotlari Backend API mijoziga tegishli emas. |
-1024 | id_number formati noto'g'ri. |
-1025 | pinfl formati noto'g'ri. |
-1026 | birth_date yuborilmagan. |
-1052 | threshold 0–1 oralig'idan tashqarida. |
-1090 | Foydalanuvchi 16 yoshga to'lmagan. |
-2001 | Yuzni aniqlash servisida xato. |
400 | Maydon validatsiyasi xatosi (masalan, photo cannot be blank) yoki Idempotency-Key sarlavhasi yuborilmagan. |
409 (HTTP) | Xuddi shu Idempotency-Key bilan so'rov hali bajarilmoqda. |
user_info bo'yicha aniqlanadi, shuning uchun natijada reyestrdan tasdiqlangan fuqaro profili ham bo'ladi.POST{base_url}/v1/authentication/async/compare-imagesBearer {access_token}{uuid}application/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
original_photo | object | Ha | — | Birinchi fotosurat, masalan foydalanuvchining jonli selfisi. |
original_photo.photo | string | Ha | Base64 | Fotosurat ma'lumotlari. |
original_photo.is_spoofing_required | boolean | Yo'q | true / false | Ushbu fotosuratni "tiriklik" tekshiruvidan o'tkazish. Standart qiymat false. Jonli selfi uchun true tavsiya etiladi. |
original_photo.order | integer | Yo'q | — | Fotosurat tartib raqami. |
reference_photo | object | Ha | — | Taqqoslash uchun ikkinchi fotosurat, masalan hujjat fotosurati yoki saqlangan selfi. |
reference_photo.photo | string | Ha | Base64 | Fotosurat ma'lumotlari. |
reference_photo.is_spoofing_required | boolean | Yo'q | true / false | Ushbu fotosuratni "tiriklik" tekshiruvidan o'tkazish. Standart qiymat false. Hujjat fotosurati uchun false qoldiring. |
reference_photo.order | integer | Yo'q | — | Fotosurat tartib raqami. |
user_info | object | Ha | — | Fuqaro ma'lumotlari. Qoidalar 7.3 dagi bilan bir xil. |
user_info.pinfl | string | Shartli | Aniq 14 ta raqam | JSHSHIR. Yoki pinfl, yoki id_number yuboring. |
user_info.id_number | string | Shartli | 9 belgi: 2 ta harf + 7 ta raqam | Pasport / ID-karta raqami. |
user_info.birth_date | string | user_info yuborilsa, ha | dd.MM.yyyy | Tug'ilgan sana. Foydalanuvchi kamida 16 yoshda bo'lishi kerak. |
threshold | number | Yo'q | 0.0 – 1.0 | Standart qiymat 0.5. 0.5 dan yuqori, qat'iy taqqoslash uchun 0.7 dan yuqori tavsiya etiladi. |
external_id | string | Yo'q | — | O'z identifikatoringiz. Tasodifiy uuid tavsiya etiladi. |
locale | string (enum) | Yo'q | UZ, RU, EN | Standart qiymat UZ. |
{
"original_photo": {
"order": 1,
"is_spoofing_required": true,
"photo": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."
},
"reference_photo": {
"order": 2,
"is_spoofing_required": false,
"photo": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAGQCAYAAACAvzbMAAAACXBIWXMAAAsTAAALEwEAmpwY..."
},
"user_info": {
"pinfl": "12345678901234",
"birth_date": "01.01.1990"
},
"threshold": 0.7,
"external_id": "c4e8a1f2-7b3d-4e6a-9f0c-2b5d8e1a4c77"
}data = session_id, code = 0 (yakunlandi) yoki -200 (hali ishlanmoqda). Natijani 7.6 orqali oling.{
"data": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
"code": 0,
"message": "Success"
}| Kod | Sabab |
|---|---|
400 | original_photo yoki reference_photo yuborilmagan (original photo should be exist, reference photo should be exist). |
POST{base_url}/v1/face/async/compare-imagesBearer {access_token}{uuid}application/json| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
original_photo | object | Ha | — | Birinchi fotosurat. |
original_photo.photo | string | Ha | Base64 | Fotosurat ma'lumotlari. |
original_photo.is_spoofing_required | boolean | Yo'q | true / false | Ushbu fotosuratni "tiriklik" tekshiruvidan o'tkazish. Standart qiymat false. |
original_photo.order | integer | Yo'q | — | Fotosurat tartib raqami. |
reference_photo | object | Ha | — | Ikkinchi fotosurat. |
reference_photo.photo | string | Ha | Base64 | Fotosurat ma'lumotlari. |
reference_photo.is_spoofing_required | boolean | Yo'q | true / false | Ushbu fotosuratni "tiriklik" tekshiruvidan o'tkazish. Standart qiymat false. |
reference_photo.order | integer | Yo'q | — | Fotosurat tartib raqami. |
threshold | number | Yo'q | 0.0 – 1.0 | Standart qiymat 0.5. 0.5 dan yuqori, qat'iy taqqoslash uchun 0.7 dan yuqori tavsiya etiladi. |
external_id | string | Yo'q | — | O'z identifikatoringiz. Tasodifiy uuid tavsiya etiladi. |
locale | string (enum) | Yo'q | UZ, RU, EN | Standart qiymat UZ. |
{
"original_photo": {
"order": 1,
"is_spoofing_required": true,
"photo": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."
},
"reference_photo": {
"order": 2,
"is_spoofing_required": false,
"photo": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODww..."
},
"threshold": 0.7,
"external_id": "e2a7c9d4-1b6f-4a3e-8c5d-7f0b2e9a6d18"
}data = session_id, code = 0 (yakunlandi) yoki -200 (hali ishlanmoqda). Natijani 7.6 orqali oling.{
"data": "b7c2e1f0-9a8d-4c6b-b5e4-3d2c1b0a9f8e",
"code": 0,
"message": "Success"
}| Kod | Sabab |
|---|---|
-1002 | Hisob ma'lumotlari Backend API mijoziga tegishli emas. |
-1052 | threshold 0–1 oralig'idan tashqarida. |
-2001 | Yuzni aniqlash servisida xato. |
400 | Fotosurat yuborilmagan yoki base64 formatida emas, yoxud Idempotency-Key sarlavhasi yuborilmagan. |
409 (HTTP) | Xuddi shu Idempotency-Key bilan so'rov hali bajarilmoqda. |
session_id qiymati bo'yicha oladi — uchala variant uchun ham.GET{base_url}/v1/user/{session_id}Bearer {access_token}| Maydon | Turi | Majburiy | Uzunlik / format | Tavsif |
|---|---|---|---|---|
session_id | string | Ha | UUID, 36 belgi | Taqqoslash javobidagi data (7.3–7.5). |
| Maydon | Ma'nosi |
|---|---|
comparison_value | Yuzlar o'xshashligi bahosi, 0–1. Uni o'z threshold qiymatingiz bilan solishtiring. |
note | Toza o'tganda bo'sh. Aks holda sabab ko'rsatiladi — masalan Spoofed file detected ("tiriklik" tasdiqlanmadi) yoki Face match failed (baho chegaradan past). |
profile | Tasdiqlangan fuqaro profili. Faqat 1- va 2-variantlar uchun va faqat comparison_value ≥ threshold bo'lganda qaytariladi. 3-variant uchun hech qachon qaytarilmaydi. |
O'tish qoidasi. Tekshiruvni faqat comparison_value≥ sizningthresholdqiymatingiz vanotebo'sh bo'lganda o'tgan deb hisoblang.is_spoofing_required: truebo'lganda soxta fotosurat taqqoslash metodida xato qaytarmaydi — u shu yerda,notemaydonida ko'rsatiladi.
| Maydon | Turi | Tavsif |
|---|---|---|
data.session_id | string | Sessiya identifikatori. |
data.comparison_value | number | Yuzlar o'xshashligi bahosi, 0–1. |
data.note | string | Muvaffaqiyatsizlik sababi, 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. |
| Kod | Sabab |
|---|---|
-1002 | Sessiya boshqa mijozga tegishli. |
-1005 | Taqqoslash muvaffaqiyatli yakunlanmadi. Agar taqqoslash metodi hozirgina -200 qaytargan bo'lsa, 1–2 soniya kuting va so'rovni takrorlang. |
-1027 | Sessiya muddati tugagan — natijani taqqoslashdan so'ng darhol so'rang. |
-1029 | Sessiya topilmadi. |
| 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. |
-200 | WAITING_ASYNC_PROCESS | Hali ishlanmoqda — natijani 7.6 orqali oling. |
-1000 | BAD_REQUEST | Noto'g'ri so'rov. |
-1002 | CLIENT_NOT_PERMITTED | Bu mijoz uchun ruxsat yo'q. |
-1005 | UNSUCCESS_JOB | Taqqoslash muvaffaqiyatli yakunlanmadi. |
-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. |
-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. |