استرداد عملية موجودة بواسطة معرّفها. وفقاً لتعاقد API، يتم بالفعل إرجاع النتيجة بشكل متزامن عند إنشاء العملية — استخدم نقطة النهاية هذه لإعادة الاستعلام والتدقيق والدعم.
قبل استرداد العملية، راجع إعداد webhook والاستراتيجيات الاحتياطية — انقر هنا.
نقطة النهاية
| البيئة | الرابط |
|---|---|
| الإنتاج | GET https://api.idcloud.unico.app/client/v1/process/{processId} |
| Sandbox | GET https://api.idcloud.uat.unico.app/client/v1/process/{processId} |
الطلب
| الترويسة | القيمة |
|---|---|
Authorization | Bearer <access_token> |
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
processId | string (UUID) | نعم | معرّف العملية الذي تم إرجاعه بواسطة إنشاء عملية. |
مثال
- cURL
- Node.js
curl -X GET https://api.idcloud.unico.app/client/v1/process/$PROCESS_ID \
-H "Authorization: Bearer $TOKEN"
import fetch from 'node-fetch';
const res = await fetch(
`https://api.idcloud.unico.app/client/v1/process/${processId}`,
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
const { process: proc } = await res.json();
الاستجابات
{
"process": {
"id": "226fd950-4b80-4da6-a476-ba9d397ddc91",
"flow": "id_r2",
"callbackUri": "/",
"userRedirectUrl": "https://cadastro.uat.unico.app/flow?collect-data=true&dynamic-wrapper=true&id=226fd950-4b80-4da6-a476-ba9d397ddc91",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_APPROVED",
"createdAt": "2026-08-06T01:42:21.693615Z",
"finishedAt": "2026-08-06T01:43:03.080508Z",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "40*******50",
"friendlyName": "teste",
"email": "",
"phone": "5511999999999",
"notifications": [
{ "notificationChannel": "NOTIFICATION_CHANNEL_WHATSAPP" }
],
"phoneCountryCodeAlpha3": ""
},
"purpose": "personAuthentication",
"services": [],
"authenticationInfo": { "authenticationId": "55cba227-9828-49df-a16f-bcdaa7bdaa4d" },
"capacities": ["PROCESS_CAPACITY_IDCLOUDONE"],
"expiresAt": "2026-08-13T01:42:21.536500Z",
"token": "",
"companyData": { "branchId": "", "countryCode": "BRA" },
"simulated": false
}
}
| الحقل | المعنى |
|---|---|
id | معرّف العملية الفريد (UUID)؛ المفتاح المستخدم للاستعلام عن التدفق وتتبعه. |
flow | نوع الرحلة المنفَّذة (مثلاً id_r2، idlivetrust_r2، idtrust_r2، إلخ). |
callbackUri | عنوان URL للاستدعاء الذي يُعاد توجيه تطبيق العميل إليه في نهاية التدفق. |
userRedirectUrl | عنوان URL الكامل لصفحة CbU التي يفتحها المستخدم لتنفيذ الرحلة (يحمل id وعلامات السلوك). |
state | حالة دورة حياة العملية. قيم PROCESS_STATE_* (مثلاً CREATED، FAILED، FINISHED، AWAITING_FOR_DOCUMENT، UNSPECIFIED). |
result | الحكم النهائي للتقييم. قيم PROCESS_RESULT_* (مثلاً APPROVED، AUTHENTICATED، NOT_APPROVED، إلخ). قاطع فقط عندما تكون state = PROCESS_STATE_FINISHED. |
createdAt | الطابع الزمني لإنشاء العملية (UTC). |
finishedAt | الطابع الزمني لاكتمال العملية (UTC). |
person | كائن فرعي يحتوي على بيانات الشخص الجاري التحقق منه. |
purpose | الغرض من العملية (مثلاً personAuthentication، تسجيل الشخص). |
services | قائمة الخدمات الإضافية المرتبطة بالعملية؛ تكون فارغة عند عدم وجودها. |
authenticationInfo.authenticationId | معرّف حدث مصادقة الهوية الذي أنتجه التدفق. |
capacities | الإمكانيات/المنتجات المستخدمة. قيم PROCESS_CAPACITY_* (مثلاً IDCLOUDONE). |
expiresAt | الطابع الزمني لانتهاء صلاحية العملية/الرابط (UTC). |
token | رمز الجلسة/الوصول المرتبط بالعملية (قد يكون فارغاً). |
companyData | كائن فرعي يحتوي على بيانات الشركة/المستأجر الما لك للعملية. |
simulated | قيمة منطقية؛ ما إذا كانت هذه عملية محاكاة/sandbox (true) أو عملية حقيقية (false). |
| الحقل | المعنى |
|---|---|
duiType | نوع وثيقة التعريف الفريدة. قيم DUI_TYPE_* (مثلاً BR_CPF). |
duiValue | قيمة الوثيقة (مثلاً رقم CPF). |
friendlyName | اسم ودّي/لقب للشخص (نص حر، غير مُتحقَّق منه). |
email | البريد الإلكتروني للشخص؛ قد يكون فارغاً. |
phone | رقم الهاتف بصيغة E.164 (رمز الدولة + رمز المنطقة + الرقم). |
notifications | قائمة قنوات الإشعارات. يحمل كل عنصر notificationChannel بقيم NOTIFICATION_CHANNEL_* (مثلاً WHATSAPP، SMS، EMAIL). |
phoneCountryCodeAlpha3 | رمز الدولة ISO alpha-3 لرقم الهاتف (مثلاً BRA)؛ قد يكون فارغاً. |
| الحقل | المعنى |
|---|---|
branchId | معرّف فرع المستأجر؛ يكون فارغاً عند عدم التجزئة حسب الفرع. |
countryCode | دولة الشركة بصيغة ISO alpha-3 (مثلاً BRA). |
يُبلغ process.services[].documents[].doc.code عن نوع المستند كرمز قصير بأحرف كبيرة. فتصبح unico.moja.dictionary.br.cnh.v2.Cnh هي CNH.
لا يحمل الرمز الدولة ولا إصدار المخطط؛ ويُعاد الإصدار بشكل منفصل في doc.version.
أنواع المستندات التي تستخدم المخطط الموحّد — unified_schema في مرجع الحقول — يتم الإبلاغ عنها بالنوع الذي تم تحديده أثناء الالتقاط بأحرف كبيرة: IDCARD أو DRIVERLICENSE أو PASSPORT أو VOTERID.
تحتفظ جوازات السفر الأمريكية بنوعها الفرعي بدلاً من دمجها في PASSPORT، لذا تُعاد أيضاً قيم مثل POLYCARBONATEPASSPORT وPASSPORTCARD وPAPERPASSPORT.
على سبيل المثال، يتم الإبلاغ عن unico.moja.dictionary.ar.generic.v1.IdCard وunico.moja.dictionary.us.generic.v1.PolycarbonatePassport بالقيمتين IDCARD وPOLYCARBONATEPASSPORT.
أنواع المستندات التي تستخدم مخطط حقول خاصاً بها — المدرجة تحت specific_document_schemas في م رجع الحقول — معروضة في الجدول أدناه. استخدم نوع القاموس للبحث عن كل مخطط في ذلك الملف.
| الدولة | doc.code | نوع القاموس | المستند |
|---|---|---|---|
| BR | RG | unico.moja.dictionary.br.rg.v2.Rg | RG |
| BR | CNH | unico.moja.dictionary.br.cnh.v2.Cnh | CNH (رخصة القيادة) |
| BR | CIN | unico.moja.dictionary.br.cin.v1.Cin | CIN |
| BR | PASSAPORTE | unico.moja.dictionary.br.passaporte.v1.Passaporte | جواز السفر |
| MX | INE | unico.moja.dictionary.mx.ine.v1.Ine | بطاقة الناخب INE |
| MX | LPC | unico.moja.dictionary.mx.lpc.v1.Lpc | Licencia para conducir (رخصة القيادة) |
| MX | PASAPORTE | unico.moja.dictionary.mx.pasaporte.v1.Pasaporte | جواز السفر |
| — | UNKNOWN | unico.moja.dictionary.other.unknown.v1.Unknown | لم يتمكن النظام من تحديد النوع — doc.data فارغ |
PASSAPORTE وPASAPORTE مستندان مختلفانجواز السفر البرازيلي هو PASSAPORTE (بحرف S مزدوج) والمكسيكي هو PASAPORTE (بحرف S واحد)، ويعكس كل منهما طريقة الكتابة في قاموسه الخاص. هذا ليس خطأً مطبعياً — لا تتعامل مع القيمتين على أنهما متكافئتان.
لا يتم إجراء أي استخراج OCR ولا يتم الإبلاغ عن أي حقل في doc.data عندما تكون قيمة doc.code هي UNKNOWN.
قد يتلقى العملاء في البرازيل حمولة العملية الكاملةيظل الهيكل العام للاستجابة كما هو — النتيجة الواحدة هي الافتراضية.

يظل الهيكل العام للاستجابة كما هو — النتيجة الواحدة هي الافتراضية.
قد تتلقى عمليات التكامل في البرازيل كائن العملية الكامل أدناه، مع نتائج لكل إمكانية في authenticationInfo.
{
"process": {
"id": "53060f52-f146-4c12-a234-5bb5031f6f5b",
"flow": "idchecktrust",
"callbackUri": "https://example.com/callback",
"userRedirectUrl": "https://example.com/redirect",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_OK",
"createdAt": "2024-01-01T10:00:00Z",
"finishedAt": "2024-01-01T10:15:00Z",
"expiresAt": "2024-01-08T10:00:00Z",
"purpose": "VERIFICATION",
"clientReference": "client-ref-abc",
"useCase": "smart_revalidation",
"capacities": ["liveness", "face_match"],
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"person": {
"duiType": "DUI_TYPE_BR_CPF",
"duiValue": "12345678909",
"friendlyName": "Luke Skywalker",
"notifications": [
{
"notificationChannel": "email"
}
]
},
"authenticationInfo": {
"authenticationId": "auth-123",
"livenessResult": "LIVENESS_RESULT_LIVE",
"authenticationResult": "AUTHENTICATION_RESULT_INCONCLUSIVE",
"identityFraudstersResult": "TRUST_RESULT_INCONCLUSIVE",
"bioTokenEngineResult": "BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED",
"smartRevalidationResult": "SMART_REVALIDATION_RESULT_UNSPECIFIED",
"idAgeResult": "ID_AGE_RESULT_UNSPECIFIED",
"scoreEngineResult": {
"scoreEnabled": "SCORE_ENABLED_TRUE",
"score": 85.5
}
},
"companyData": {
"branchId": "branch-123",
"countryCode": "BR"
},
"bioTokenData": {
"referenceProcessId": "ref-proc-123",
"authenticationId": "auth-ref-123"
},
"services": [
{
"envelopeId": "4d4f3d90-04a3-4259-b63b-930ab10d2e47",
"documentIds": ["doc-abc-123"],
"consent_granted": true,
"documents": [
{
"doc_id": "doc-abc-123",
"typified": true,
"cpf_match": true,
"face_match": true,
"validate_doc": true,
"reused_doc": false,
"signed_url": "https://example.com/doc?token=xyz",
"doc": {
"version": 1,
"code": "CNH",
"data": {
"numero": "044589731564",
"cpfNumero": "12345678909",
"nomeCivil": "Luke Skywalker",
"dataNascimento": "1990-05-12T00:00:00Z",
"dataExpiracao": "2027-12-07T00:00:00Z",
"categoria": "B"
}
}
}
]
}
]
}
}
| الحقل | النوع | الوصف |
|---|---|---|
process.id | string (UUID) | معرّف العملية. |
process.flow | string | معرّف التدفق المرسل عند الإنشاء. |
process.callbackUri | string | عنوان URL للاستدعاء المكوّن لأحداث العملية. |
process.userRedirectUrl | string | عنوان URL لإعادة توجيه المستخدم بعد اكتمال الرحلة. |
process.state | enum | حالة العملية الحالية. انظر القيم أدناه. |
process.result | enum | نتيجة التحقق. موجودة فقط عندما تكون state = PROCESS_STATE_FINISHED. |
process.createdAt | string (datetime) | طابع زمني ISO 8601 لوقت إنشاء العملية. |
process.finishedAt | string (datetime) | طابع زمني ISO 8601 لوقت انتهاء العملية. موجود فقط عندما تكون state = PROCESS_STATE_FINISHED. |
process.expiresAt | string (datetime) | طابع زمني ISO 8601 لوقت انتهاء صلاحية العملية. |
process.purpose | string | غرض العملية كما تم تكوينه في التدفق. |
process.clientReference | string | مرجع اختياري من جانب العميل للفهرسة في البوابة. |
process.useCase | string | معرّف السيناريو المرتبط بالتدفق. |
process.capacities | array of strings | قائمة الإمكانيات المفعّلة في هذه العملية. |
process.token | string | JWT موقّع لتكامل SDK. |
process.person | object | بيانات التعريف المقدمة عند الإنشاء. |
process.person.notifications | array | قنوات الإشعارات المكوّنة للرحلة (مثلاً email). |
process.authenticationInfo | object | نتائج لكل إمكانية. انظر أدناه. |
process.companyData | object | سياق الشركة والفرع. |
process.companyData.branchId | string | معرّف الفرع. |
process.companyData.countryCode | string | رمز الدولة ISO 3166-1 alpha-2. |
process.bioTokenData | object | معلومات العملية المرجعية — موجودة فقط في تدفقات التحقق 1:1 وإعادة التحقق الذكية. |
process.services | array | المظاريف الموقّعة والمستندات الملتقطة ومخرجات الخدمات الأخرى. انظر أدناه. |
| القيمة | المعنى |
|---|---|
PROCESS_STATE_CREATED | تم إنشاء العملية؛ لم يكمل المستخدم الرحلة بعد. |
AWAITING_FOR_DOCUMENT | تم إنشاء العملية بدون مستند تعريف؛ في انتظار تعيينه عبر تعيين مستند العملية. موجود فقط عندما يسمح التدفق المخصص بمستند اختياري. |
PROCESS_STATE_FINISHED | اكتملت الرحلة. تحقق من result وauthenticationInfo. |
PROCESS_STATE_FAILED | خطأ في المعالجة. |
AWAITING_FOR_DOCUMENT لا يتبع اصطلاح البادئة PROCESS_STATE_* المستخدم في الحالات الأخرى. هذا عدم اتساق معروف في التسمية في API الحالي.
| القيمة | المعنى |
|---|---|
PROCESS_RESULT_OK | جميع الإمكانيات أرجعت نتائج إيجابية. |
PROCESS_RESULT_INVALID_IDENTITY | أرجعت إمكانية واحدة على الأقل نتيجة سلبية قاطعة (مثلاً فشل لايفنس، عدم تطابق الهوية). |
PROCESS_RESULT_ERROR | خطأ أثناء معالجة النتيجة. |
PROCESS_RESULT_EXPIRED | انتهت صلاحية العملية قبل اكتمال الرحلة. |
PROCESS_RESULT_UNSPECIFIED | لم تنته العملية بعد. |
يتم دائماً إرجاع جميع الحقول بغض النظر عن التدفق. الحقول الخاصة بالإمكانيات غير المستخدمة في التدفق تُرجع *_UNSPECIFIED.
القيم المختصرة (مثلاً livenessResult = LIVE، authenticationResult = INCONCLUSIVE) تتوافق مباشرة مع قيم التعداد الكاملة الموثقة هنا (LIVENESS_RESULT_LIVE، AUTHENTICATION_RESULT_INCONCLUSIVE، إلخ.) — تم حذف البادئة للاختصار.
| الحقل | الإمكانية | القيم الممكنة |
|---|---|---|
authenticationId | — | معرّف فريد لمحاولة المصادقة هذه. |
livenessResult | لايفنس | LIVENESS_RESULT_LIVE، LIVENESS_RESULT_NOT_LIVE، LIVENESS_RESULT_UNSPECIFIED |
authenticationResult | التحقق من الهوية | AUTHENTICATION_RESULT_POSITIVE، AUTHENTICATION_RESULT_NEGATIVE، AUTHENTICATION_RESULT_INCONCLUSIVE، AUTHENTICATION_RESULT_UNSPECIFIED |
identityFraudstersResult | تصنيف مخاطر الاحتيال | TRUST_RESULT_YES، TRUST_RESULT_INCONCLUSIVE، TRUST_RESULT_UNSPECIFIED |
bioTokenEngineResult | التحقق 1:1 | BIO_TOKEN_ENGINE_RESULT_POSITIVE، BIO_TOKEN_ENGINE_RESULT_NEGATIVE، BIO_TOKEN_ENGINE_RESULT_UNSPECIFIED |
smartRevalidationResult | إعادة التحقق الذكية | SMART_REVALIDATION_RESULT_POSITIVE، SMART_REVALIDATION_RESULT_NEGATIVE، SMART_REVALIDATION_RESULT_UNSPECIFIED |
idAgeResult | التحقق من العمر | ID_AGE_RESULT_POSITIVE، ID_AGE_RESULT_NEGATIVE، ID_AGE_RESULT_INCONCLUSIVE، ID_AGE_RESULT_UNSPECIFIED |
scoreEngineResult.scoreEnabled | درجة المخاطر | SCORE_ENABLED_TRUE، SCORE_ENABLED_FALSE، SCORE_ENABLED_UNSPECIFIED |
scoreEngineResult.score | درجة المخاطر | رقم من -100 إلى +100. موجود عندما يكون authenticationResult = AUTHENTICATION_RESULT_INCONCLUSIVE ودرجة المخاطر مفعّلة. |
serproResult.score | عائد تشابه Serpro | 0–100 (التشابه)؛ -1 (لا يوجد وجه مسجل لهذا CPF)؛ -2 (خطأ في التكامل). |
servicesتستخدم مصفوفة services camelCase لحقول مستوى المغلف (envelopeId، documentIds) وsnake_case لحقول مستوى المستند (doc_id، consent_granted، face_match، إلخ). يعكس هذا استجابة API الفعلية — كلا الاصطلاحين مقصودان وليسا خطأ في التوثيق.
| الحقل | النوع | الوصف |
|---|---|---|
envelopeId | string (UUID) | معرّف المظروف الموقّع. |
documentIds | array of strings | معرّفات المستندات الملتقطة في هذه الخدمة. |
consent_granted | boolean | ما إذا كان المستخدم قد من ح موافقة مشاركة البيانات. |
documents | array | المستندات الملتقطة مع بيانات OCR ونتائج التحقق. |
documents[].doc_id | string | معرّف المستند. |
documents[].typified | boolean | ما إذا تم تحديد نوع المستند بنجاح. |
documents[].cpf_match | boolean | ما إذا كان CPF الموجود في المستند يتطابق مع CPF المقدم (البرازيل فقط). |
documents[].face_match | boolean | ما إذا كانت صورة السيلفي تتطابق مع الصورة الموجودة في المستند. |
documents[].validate_doc | boolean | ما إذا اجتاز المستند التحقق من الأصالة. |
documents[].reused_doc | boolean | ما إذا كان هذا المستند قد أُعيد استخدامه من عملية سابقة. |
documents[].signed_url | string | عنوان URL موقّع مسبقاً لتنزيل ملف PDF للمستند (صالح لمدة 5 دقائق — أعد الجلب للتجديد). |
documents[].doc.version | integer | إصدار مخطط OCR. |
documents[].doc.code | string | رمز قصير لنوع المستند (مثلاً CNH). راجع أنواع المستندات وحقول OCR للاطلاع على جميع القيم وكيفية اشتقاق الرمز. |
documents[].doc.data | object | حقول OCR المستخرجة. يختلف المحتوى حسب نوع المستند — انظر المرجع الكامل للحقول للاطلاع على الكتالوج الكامل. تُعاد أسماء الحقول داخل doc.data (مثلاً nomeCivil، dataNascimento) باللغة البرتغالية — وهذه هي القيم الفعلية التي ينتجها محرك OCR. |
قد يتلقى العملاء في المكسيك كتلة التحقق من RENAPOتحتفظ الاستجابة بالهيكل نفسه وتضيف كتلة idGov.

تحتفظ الاستجابة بالهيكل نفسه وتضيف كتلة idGov.
تتلقى عمليات التكامل في المكسيك التي فُعّل فيها التحقق من RENAPO كتلة idGov إضافية تحت authenticationInfo، تتضمن السجل الذي تحتفظ به RENAPO لـ CURP الخاص بالمستخدم. وهي إجابة منفصلة عن نتيجة الهوية.
{
"process": {
"id": "11111111-2222-3333-4444-555555555555",
"state": "PROCESS_STATE_FINISHED",
"result": "PROCESS_RESULT_APPROVED",
"person": {
"duiType": "DUI_TYPE_MX_CURP",
"duiValue": "PUEA880304MDFRJN04"
},
"authenticationInfo": {
"authenticationId": "22222222-3333-4444-5555-666666666666",
"idGov": {
"government_valid": true,
"curp": "PUEA880304MDFRJN04",
"government_name": "ANA PRUEBA EJEMPLO"
}
},
"companyData": { "countryCode": "MEX" }
}
}
الحقول الأخرى ومفاتيح idGov المتبقية محذوفة للاختصار. للاطلاع على الجدول الكامل لحقول idGov، راجع التحقق من RENAPO.
| الحقل | النوع | الوصف |
|---|---|---|
authenticationInfo.idGov | object | سجل RENAPO لـ CURP. غائب عندما لا تكون القدرة مفعّلة. {} عندما لا تستجيب RENAPO. المكسيك فقط. انظر التحقق من RENAPO. |
رموز الخطأ
- 400 Bad Request
- 401 Unauthorized
- 404 Not Found
- 429 Too Many Requests
- 500 Internal Server Error
| الرمز | الرسالة | الوصف |
|---|---|---|
3 | process id is invalid | عندما يكون معرّف العملية غير صالح. |
| الرمز | الرسالة | الوصف |
|---|---|---|
| — | Jwt header is an invalid JSON | عندما يحتوي رمز الوصول المستخدم على أحرف غير صحيحة. |
| — | Jwt is expired | عندما تنتهي صلاحية رمز الوصول المستخدم. |
| الرمز | الرسالة | الوصف |
|---|---|---|
5 | error getting process: rpc error: code = NotFound desc = process not found | عندما لا يتم العثور على معرّف العملية. |
تم الوصول إلى حد المعدل. عندما يتلقى نظامك خطأ HTTP 429، يجب عليك تطبيق آليات لمنع حالات الفشل المتتالية وتجنب تفاقم القيود.
أفضل الممارسات:
- فترة التهدئة (backoff): أوقف أو قلل الطلبات اللاحقة من نظامك فورًا. لا تعد محاولة الطلبات الفاشلة باستمرار في حلقة متكررة سريعة.
- الطابور والتحكم بمعدل الإرسال (Queueing & throttling): قم بتخزين الطلبات الصادرة مؤقتًا أو وضعها في طابور من جانبك للتحكم في تدفق حركة المرور قبل إعادة إرسالها.
- التراجع الأسي مع التذبذب العشوائي (Exponential backoff with jitter): عند إعادة المحاولة، قم بزيادة وقت الانتظار بشكل أسي بين المحاولات (مثال: 1 ثانية، 2 ثانية، 4 ثوانٍ، 8 ثوانٍ) وأضف تأخيرًا عشوائيًا صغيرًا ("jitter") لمنع تأثير القطيع حيث تعيد جميع الطلبات المنتظرة المحاولة في نفس الميلي ثانية بالضبط.
الاستمرار في إرسال الطلبات إلى نقطة نهاية محدودة المعدل دون تراجع يمكن أن يُطيل فترة التقييد ويؤثر بشكل كبير على معدل النقل التشغيلي لنظامك. التحكم السليم في معدل الطلبات من جانبك يضمن تكاملاً أكثر سلاسة ومرونة.
للاطلاع على الحدود الافتراضية وزيادة الطلبات والتفاصيل الإضافية، راجع حدود المعدل.
| الرمز | الرسالة | الوصف |
|---|---|---|
99999 | Internal failure! Try again later | عند حدوث خطأ داخلي. |
الاستقصاء مقابل webhook
يمكنك استقصاء نقطة النهاية هذه للتحقق من التقدم، لكن النمط الموصى به هو الاشتراك في webhook واستخدام نقطة النهاية هذه كاحتياطي فقط. انظر Webhooks والأحداث.
ما التالي
- للحصول على صورة السيلفي الملتقطة، انظر الحصول على السيلفي.
- لحزمة التدقيق الإثباتية، انظر الحصول على مجموعة الأدلة.