الانتقال إلى المحتوى الرئيسي

نظرة عامة

يتبع كل تقرير خاص بميزة شكل المُسلسِل V3 المعرَّف في service-didit-verification. يظهر الكائن نفسه في ثلاثة مواضع، لذلك فإن المخطط الموجود هنا هو المصدر المرجعي الوحيد لجميع هذه المواضع:
  • GET /v3/session/{sessionId}/decision/: تُعاد كل ميزة في مصفوفة بصيغة الجمع (id_verifications[]، nfc_verifications[]، liveness_checks[]، face_matches[]، poa_verifications[]، phone_verifications[]، email_verifications[]، aml_screenings[]، ip_analyses[]، database_validations[]، questionnaire_responses[]، signatures[]، bank_verifications[] (راجع طرق التحقق البنكي)، والمكافئات الخاصة بـ KYB وهي registry_checks[] وdocument_verifications[] وkey_people_checks[]).
  • حمولات webhook (status.updated وdata.updated): الشكل نفسه داخل الغلاف decision.
  • واجهات برمجة التطبيقات المستقلة: تعيد الاستجابات ككائن واحد (البحث بالوجه وتقدير العمر والمصادقة البيومترية) وتستخدم مجموعة الحقول نفسها.
قدّم V3 سير العمل متعدد المثيلات: يحمل كل كائن ميزة الحقل node_id الذي يربط التقرير بعقدة الرسم البياني لسير العمل التي أنتجته. أما endpoints V2 (بصيغة المفرد، مثل kyc وface وaml)، فما زالت متوافقة مع الإصدارات السابقة، لكنها تعيد أول مثيل فقط.

الحقول المشتركة

يعرض كل كائن تقرير الحقول التالية: حقول الوسائط (portrait_image وfront_image وdocument_file و…) روابط موقعة مسبقاً بنافذة صلاحية محدودة، لذا نزّلها فوراً بدلاً من تخزين الرابط. تُعرض الأمثلة بالصيغة https://<media-host>/....

كائن التحذير

يُعاد في كل مصفوفة warnings[]. المخطط من logs/serializers/log.py:8-65 (LogV3Serializer).

كائنات التقارير

تتناول بقية الأقسام كل كائن تقرير خاص بكل ميزة على حدة. نص عنوان H3 ثابت عمدًا حتى تتمكن الوثائق الأخرى من إنشاء روابط عميقة إليه مباشرةً.

التحقق من الهوية

تُعاد لكل مستند KYC/الهوية يقدّمه المستخدم. يظهر كعنصر في id_verifications[] ضمن GET /v3/session/{sessionId}/decision/ وداخل الحقل kyc في استجابات الإصدار V2. المصدر: kyc/serializers/kyc.py:383-414 (IDVerificationV3Serializer، ويمتد من IDVerificationV2Serializer في kyc/serializers/kyc.py:320-380).
الكائن نفسه مع طريقة لا تعتمد على المستند. تتغير المفاتيح الخاصة بالطريقة فقط: كل ما تملؤه قراءة المستند يُعبَّأ بدلاً منه من سجل الجهة أو من سمات المحفظة، وتكون المفاتيح غير المنطبقة null.

التحقق عبر NFC

تُعاد لكل قراءة لشريحة في مستند هوية: شريحة ePassport وفق ICAO 9303 أو شريحة eID، أو قراءة بطاقة My Number Card اليابانية عبر JPKI (chip_protocol: "jpki"). تظهر كعنصر nfc_verifications[] في GET /v3/session/{sessionId}/decision/ (واحد لكل سجل KYC رئيسي). المصدر: kyc/serializers/epassport.py:121-139 (NFCV3Serializer، ويمتد NFCV2Serializer في kyc/serializers/epassport.py:83-118).

فحص الحيوية

تُعاد لكل جلسة فحص حيوية. تظهر كعنصر liveness_checks[] في GET /v3/session/{sessionId}/decision/. المصدر: face/serializers/face.py:301-320 (LivenessV3Serializer، يمتد من LivenessV2Serializer في face/serializers/face.py:216-298).

مطابقة الوجه

تُعاد لكل مقارنة مطابقة وجه (عادةً بين وجه المستخدم في فحص الحيوية وصورة المستند الشخصية). تظهر كعنصر face_matches[] في GET /v3/session/{sessionId}/decision/. المصدر: face/serializers/face.py:367-389 (FaceMatchV3Serializer، يمتد من FaceMatchV2Serializer في face/serializers/face.py:323-364).

البحث بالوجه

تُرجَع بواسطة واجهة برمجة تطبيقات البحث بالوجه المستقلة (POST /v3/face-search/). لا يظهر البحث بالوجه أبدًا كمصفوفة بصيغة الجمع في /v3/session/{sessionId}/decision/. عند حفظه باستخدام save_api_request=true، تظهر الجلسة هناك كعنصر FACE_SEARCH ضمن features[]، مع عنصر في liveness_checks[] يحمل matches المخزنة. المصادر: apis/serializers/face_search.py:8-79 (FaceSearchResponseSerializer الذي يغلّف FaceSearchDetailsSerializer)؛ وتُبنى قواميس المطابقة في face/utils/utils.py:869-884. الاستجابة ذات المستوى الأعلى: كائن face_search:

كائن مطابقة البحث بالوجه

فحص AML

يُرجَع لكل كيان يخضع للفحص. يظهر كعنصر aml_screenings[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وجلسات KYB على حد سواء. المصدر: aml/serializers/aml.py:63-85 (AMLV3Serializer، ويمتد من AMLV2Serializer في aml/serializers/aml.py:28-60).

تحليل عنوان IP

تُعاد لكل موقع شبكة يتم التقاطه. يظهر كـ ip_analyses[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وKYB على حد سواء. المصدر: kyc/serializers/location.py:196-243 (IPAnalysisSerializerV3).

التحقق من الموقع

تُعاد لكل خطوة التحقق من الموقع. تظهر كـ geolocation_checks[] في GET /v3/session/{sessionId}/decision/: عنصر واحد لكل خطوة، وهو محاولتها المقبولة. يسرد geolocation_attempts[] كل محاولة لكل خطوة، من الأقدم إلى الأحدث. يكون كلاهما null لسير العمل الذي لا يتضمن هذه الخطوة. المصدر: GeolocationDecisionSerializer. ترد كل الحقول والأمثلة في تقرير التحقق من الموقع.

إثبات العنوان

يُعاد لكل مستند عنوان مقدَّم. يظهر بوصفه poa_verifications[] في GET /v3/session/{sessionId}/decision/. المصدر: poa/serializers/poa.py:212-227 (POAV3Serializer، يمتد من POAV2Serializer في poa/serializers/poa.py:173-209).

التحقق من رقم الهاتف

يُعاد لكل محاولة تحقق من رقم الهاتف. يظهر كـ phone_verifications[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وKYB على حد سواء. المصدر: phone/serializers/phone.py:251-266 (PhoneV3Serializer، ويمتد من PhoneV2Serializer في phone/serializers/phone.py:103-248).

التحقق من البريد الإلكتروني

يُعاد لكل محاولة تحقق من البريد الإلكتروني. يظهر كـ email_verifications[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وKYB على حد سواء. المصدر: email_verification/serializers/email.py:149-164 (EmailV3Serializer، ويمتد من EmailV2Serializer في email_verification/serializers/email.py:38-146).

التحقق من قواعد البيانات

يُعاد لكل عملية بحث في قاعدة البيانات تُجرى على البيانات التي قدّمها المستخدم. يظهر كـ database_validations[] في GET /v3/session/{sessionId}/decision/. المصدر: database_validation/serializers/database_validation.py:21-142 (DatabaseValidationV3Serializer، ويمتد من DatabaseValidationV2Serializer).

استجابة الاستبيان

تُعاد لكل إرسال استبيان. تظهر كـ questionnaire_responses[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وKYB على حد سواء. المصدر: questionnaires/serializers/questionnaire.py:591-597 (QuestionnaireResponseV3Serializer، ويمتد من QuestionnaireResponseSerializer في questionnaires/serializers/questionnaire.py:520-588).

التوقيع الإلكتروني

تُعاد لكل موقّع في خطوة التوقيع الإلكتروني. تظهر كـ signatures[] في GET /v3/session/{sessionId}/decision/ لجلسات KYC وKYB على حد سواء، وذلك فقط عندما يتضمن سير العمل هذه الخطوة. على عكس كائنات التقارير الأخرى، فإن status فيها هو مرحلة التوقيع، ونتيجته موجودة في verdict، وعناصر warnings[] فيها هي { code, node_id } وليست كائنات التحذير. يتضمن تقرير التوقيع الإلكتروني مثالًا كاملًا وكل الحقول المتداخلة.

تقدير العمر

تُرجَع من واجهة برمجة التطبيقات المستقلة لتقدير العمر (POST /v3/age-estimation/). تتضمن الاستجابة جزءًا من بنية Liveness check ضمن الغلاف age_estimation، وهو يشمل status وmethod وscore وage_estimation وwarnings، إضافةً إلى كتلة user_image الخاصة باكتشاف الوجه والمتاحة في الواجهة المستقلة فقط. ولا تتضمن أيًا من reference_image أو video_url أو matches أو face_quality أو face_luminance. أما في جلسات سير العمل فلا توجد مصفوفة منفصلة، إذ يظهر العمر المقدَّر على أنه liveness_checks[].age_estimation في GET /v3/session/{sessionId}/decision/. المصدر: apis/serializers/age_estimation.py:50-55 (AgeEstimationResponseSerializer)، ويُجمَّع الغلاف في apis/views/age_estimation.py:138-174.

المصادقة البيومترية

تعمل المصادقة البيومترية بمسار كشف الحيوية + مطابقة الوجه نفسه المستخدم في KYC القياسي، لكنها مُعدّة لمقارنة الوجه الملتقط بصورة المرجع الموجودة للمستخدم، بدلًا من صورة الوجه من المستند التي تُستخرج حديثًا بتقنية OCR. لا يوجد مُسلسِل مخصص لها، إذ يُرجع GET /v3/session/{sessionId}/decision/ كائنات Liveness check وFace match القياسية ضمن liveness_checks[] وface_matches[]. ويُضبط سير عمل الجلسة بالقيمة workflow_type = "biometric_authentication" (WorkflowTypeChoices، common/config/choices.py:636).

سجل KYB

يُرجَع لكل شركة مؤكَّدة من السجل في سير عمل KYB. يظهر كعنصر registry_checks[] في GET /v3/session/{sessionId}/decision/ لجلسات الشركات. المصدر: kyb/serializers/kyb.py:939-964 (RegistryCheckV3Serializer).

كائن الشركة

من kyb/serializers/kyb.py:220-321 (KYBCompanyResponseSerializer).

مستند KYB

يُرجَع لكل عقدة تجمع مستندات دعم KYB. يظهر كعنصر document_verifications[] في GET /v3/session/{sessionId}/decision/ لجلسات الشركات، بعنصر واحد لكل node_id، ويسرد items[] كل مستند مرفوع. المصدر: kyb/serializers/kyb.py:1053-1068 (DocumentVerificationV3Serializer)، وكل عنصر يتبع kyb/serializers/kyb.py:811-851 (KYBDocumentResponseSerializer).

كائن عنصر مستند KYB

شخص رئيسي في KYB

يُعاد لكل عقدة من عقد الأشخاص الرئيسيين في سير عمل KYB. يظهر كـ key_people_checks[] في GET /v3/session/{sessionId}/decision/ لجلسات الشركات. المصدر: kyb/serializers/kyb.py:967-1050 (KeyPeopleCheckV3Serializer).

الحقول على مستوى القرار

تقع هذه المفاتيح بجوار مصفوفات الميزات في GET /v3/session/{sessionId}/decision/ وداخل حقل decision في webhook. راجع استرجاع الجلسة لمعرفة كيفية قراءتها.

الموافقة البيومترية

يحمل كل قرار تحقق من المستخدمين وكل webhook للجلسة كائن biometric_consent واحدًا (وليس مصفوفة): ما إذا كانت الجلسة تتطلب موافقة بيومترية صريحة، والسبب، وأدلة الإجابة. يكون null عندما لم تُقيَّم الجلسة قط، مثل سير عمل بلا التقاط للوجه. المصدر: BiometricConsentDecisionSerializer (sessions/serializers/biometric_consent.py). تُشرح الخطوة ومتى تظهر وما تعنيه كل حالة في الموافقة البيومترية. الحقول التي لا توجد لها قيمة مسجلة تكون null، وليس نصًا فارغًا أبدًا. جلسة في إلينوي عالجها SDK أصلي بإصدار أقل من 4.10.0، والتقط السيلفي دون الخطوة:
شخص يستخدم VPN يتصل عبر خادم خارج الولايات المتحدة، ووافق في الصفحة المستضافة للتحقق:

مرجع قيم الحالة

تشترك مجموعتا قيم مترابطتان في اسم الحقل status. تستخدم كل كائنات التقارير الخاصة بالميزات على هذه الصفحة تعداد مستوى الميزة، بينما يستخدم status ذو المستوى الأعلى للجلسة الأم تعداد الجلسة الأوسع.

حالات مستوى الميزة

تُستخدم في حقل status لكل كائن تقرير. المصدر: common/config/choices.py:343-348 (FeatureStatusChoices). يمكن أن تظهر حالة Expired أيضًا في التحقق من رقم الهاتف والبريد الإلكتروني والهوية عندما تنتهي مهلة خطوتها (PhoneStatusChoices في common/config/choices.py:377-382، وEmailStatusChoices في common/config/choices.py:434-439).

حالات مستوى الجلسة

تُستخدم في حقل status ذي المستوى الأعلى للجلسة الأم. المصدر: common/config/choices.py:106-117 (StatusChoices).
القيم النهائية للجلسة هي Approved وDeclined وIn Review وExpired وKyc Expired وAbandoned. يمكن أن تصل الجلسة إلى قرارها الإجمالي بينما تبقى ميزة فردية في حالة In Review.
آخر تعديل في ٧ نوفمبر ٢٠٢٦