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

ماذا يفعل هذا

تتكون جلسة التحقق من ميزات فردية (خطوات)، مثل ID/OCR والكشف عن الحيوية ومطابقة الوجه وAML وإثبات العنوان والهاتف وغيرها. يتيح لك هذا endpoint تعيين حالة خطوة واحدة من هذه الخطوات إلى Approved أو Declined أو In Review. استخدم update-status عندما تريد الموافقة على الجلسة بأكملها أو رفضها أو إعادة فتحها. استخدم هذا endpoint عندما تريد تسجيل قرار على خطوة واحدة فقط، مثل وضع خطوة مطابقة الوجه كـ Declined ضمن سير المراجعة الخاص بك. تحتفظ الجلسة التي لها قرار بالفعل بقرارها، ولا يتغير سوى الخطوة. إذا لم يكن للجلسة قرار بعد، وكان سير العمل ينتظر هذه الخطوة بالتحديد، فإن تطبيق التجاوز يُكمل الخطوة كما تفعل عند إنهائها بشكل طبيعي. يتقدم سير العمل بعد ذلك، وتُنفَّذ الخطوات اللاحقة، ويمكن لعقدة الحالة أن تحدد قرار الجلسة وأن تُطلق webhook بحدث status.updated.

الاستهداف لخطوة باستخدام node_id

في سير العمل القائم على المخططات، لكل خطوة node_id خاص بها (مثل feature_ocr_1 وfeature_liveness_1 وfeature_aml_1). يمكنك العثور عليها في قرار الجلسة، إذ تحمل كل ميزة في قرار V3 الخاص بها node_id. أما في سير العمل غير القائم على المخططات (الخطوة الواحدة)، فليس للميزة الأساسية أي معرّف عقدة. مرّر القيمة الحرفية default باعتبارها nodeId لاستهدافها. ولأن أياً من خطوات هذا النوع من سير العمل لا يملك معرّف عقدة، مرّر أيضاً feature_type (مثل LIVENESS أو AML أو FACE_MATCH) لتحديد الخطوة المقصودة. تؤدي قيمة feature_type غير المعروفة إلى استجابة 400.

الانتظار حتى ينهي الشخص الإجراء

يُطبَّق التجاوز فوراً بشكل افتراضي. إذا كان الشخص ما زال يمرّ بالإجراء، فهذا يغيّر خطوة ضمن إجراء لا يزال قيد التشغيل، وعندها يُسجَّل التجاوز مع forced: true. اضبط defer_until_flow_finishes: true إذا أردت الانتظار. بينما تكون الجلسة في حالة Not Started أو In Progress أو Resubmitted، ولم ينهِ الشخص الإجراء، يُخزَّن التجاوز بوصفه pending_until_flow_finishes. يُطبَّق عندما ينهي الشخص الإجراء، بعد أن يصل الإجراء إلى قراره الخاص. أما الجلسة التي انتهى إجراؤها بالفعل، فيُطبَّق عليها التجاوز فوراً في كل الأحوال. يُلغى التجاوز المنتظر بدلاً من تطبيقه في الحالات التالية:
  • أعاد الشخص تنفيذ الخطوة قبل إنهاء الإجراء (check_changed)،
  • حلّ تجاوز أحدث محل التجاوز المنتظر على الخطوة نفسها (replaced)،
  • خرجت الجلسة من سير العمل قبل اكتماله: متروكة أو منتهية الصلاحية أو مُقررة في منتصف الإجراء (session_closed)،
  • ألغيته باستخدام إلغاء تجاوز الميزة (cancelled_by_reviewer).
يخبرك override في الاستجابة بما حدث: state هو applied أو pending_until_flow_finishes، ويُعيَّن applied_at بمجرد تطبيق التجاوز. يبقى new_status على المستوى الأعلى هو الحالة المخزنة للخطوة، لذا لا يتغير أثناء انتظار التجاوز. استخدم سرد تجاوزات الميزات لعرض كل تجاوز في الجلسة ومعرفة ما إذا كان الشخص ما زال في الإجراء.

دعم KYC وKYB

يعمل بالطريقة نفسها مع جلسات التحقق من المستخدمين (KYC) والتحقق من الشركات (KYB)، إذ يحدد Didit الـ sessionId عبر النوعين. تشمل أنواع الخطوات المدعومة ID/OCR والكشف عن الحيوية ومطابقة الوجه وNFC وAML وإثبات العنوان والهاتف والبريد الإلكتروني والتحقق من قواعد البيانات والاستبيانات، بالإضافة إلى فحوصات سجل الشركات والمستندات والأشخاص الرئيسيين في KYB.
لا يمكن تغيير حالات الميزات الفردية في الجلسات المستقلة للواجهة البرمجية (تلك التي أُنشئت عبر واجهات التحقق المستقلة، أي session_type = API)، ويُعيد endpoint الاستجابة 400.

أمثلة

ما الذي يحدث بعد التحديث

  • webhook: يُطلق حدث data.updated عند تطبيق التجاوز، سواء فوراً أو عند انتهاء الإجراء. لا يُرسل أي شيء أثناء الانتظار أو عند الإلغاء.
  • النشاط: يُسجَّل كل تجاوز في نشاط الجلسة بالحالة FEATURE_OVERRIDE_PENDING أو FEATURE_OVERRIDE_APPLIED أو FEATURE_OVERRIDE_CANCELLED، مع الجهة الفاعلة (مفتاح API أو مستخدم، أو النظام عندما يُطبَّق تجاوز منتظر). يحمل سجل الطلب comment الخاص بك بوصفه السبب. تظهر هذه السجلات في المصفوفة reviews ضمن قرار الجلسة بقيمة new_status: null، ويحمل سجل الطلب سببك في comment.
  • قرار الجلسة: تحتفظ الجلسة التي لها قرار بالفعل بقرارها. لتغيير القرار النهائي، استدعِ update-status بشكل منفصل.

الإذن

يتطلب الصلاحية write:sessions، مع مفتاح API للعميل (x-api-key) أو ترويسة تفويض للمستخدم. يحتاج مفتاح API المقيّد إلى صلاحية الكتابة على القرارات.

ذو صلة

التفويضات

x-api-key
string
header
مطلوب

مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.

معلمات المسار

sessionId
string<uuid>
مطلوب

معرّف UUID لجلسة التحقق. يقبل معرّفات جلسات المستخدمين (KYC) والشركات (KYB) — يطابق الخادم المعرّف عبر كلا نوعي الجلسات.

مثال:

"11111111-2222-3333-4444-555555555555"

nodeId
string
مطلوب

معرّف عقدة مخطط سير العمل للميزة المراد تحديثها (على سبيل المثال feature_ocr_1). استخدم القيمة الحرفية default لمهام سير العمل غير المعتمدة على المخطط (ذات الخطوة الواحدة) حيث لا تحتوي الميزة على معرّف عقدة.

مثال:

"feature_ocr_1"

الجسم

application/json
new_status
enum<string>
مطلوب

الحالة المستهدفة لهذه الميزة. يجب أن تختلف عن القيمة الحالية.

الخيارات المتاحة:
Approved,
Declined,
In Review
مثال:

"Approved"

comment
string

ملاحظة اختيارية بنص حر تُسجَّل في مسار مراجعة الجلسة لهذا التغيير في الميزة.

مثال:

"Document manually verified by compliance."

feature_type
enum<string>

أي نوع من الخطوات سيتم استهدافه. مطلوب في مسارات سير العمل غير القائمة على المخطط (nodeId = default)، حيث لا تشترك أي خطوة في عقدة؛ واختياري في الحالات الأخرى. تُرجع القيمة غير المعروفة 400.

الخيارات المتاحة:
ID_VERIFICATION,
OCR,
OCR_BACK,
NFC,
LIVENESS,
FACE,
AGE_ESTIMATION,
AGE_VERIFICATION,
FACE_SEARCH,
FACE_MATCH,
IP_ANALYSIS,
AML,
PHONE,
PHONE_VERIFICATION,
EMAIL,
EMAIL_VERIFICATION,
POA,
PROOF_OF_ADDRESS,
DATABASE_VALIDATION,
DATA_VALIDATION,
QUESTIONNAIRE,
DOCUMENT_AI,
KYB_REGISTRY,
KYB_DOCUMENTS,
KYB_KEY_PEOPLE,
BANK_VERIFICATION,
GEOLOCATION
مثال:

"LIVENESS"

defer_until_flow_finishes
boolean
افتراضي:false

بينما لا يزال الشخص داخل سير العمل، قم بتخزين التجاوز كـ pending_until_flow_finishes وتطبيقه عند انتهاء سير العمل، بدلاً من تطبيقه على الفور. إذا أُغفل هذا الحقل أو عُيّن على false، فسيتم تطبيق التجاوز على الفور. وفي الجلسة التي انتهى سير عملها بالفعل، يتم تطبيقه على الفور في كلتا الحالتين.

مثال:

false

الاستجابة

تم تسجيل التجاوز. تشير new_status إلى حالة الفحص كما تم تخزينها: الحالة المطلوبة بمجرد تطبيق التجاوز، أو الحالة بدون تغيير أثناء انتظار اكتمال سير العمل. وتوضح override أيهما حدث.

session_id
string<uuid>
مطلوب
node_id
string | null
مطلوب

عقدة سير العمل للخطوة المحدثة، أو null لخطوة بدون عقدة (مسار default في سير عمل لا يعتمد على المخطط).

مثال:

"feature_ocr_1"

feature_type
string
مطلوب

اسم نموذج الميزة المحدّثة (مثل KYC و Face و FaceMatch و AML و POA).

مثال:

"KYC"

new_status
string
مطلوب

حالة الفحص المخزنة: الحالة المطلوبة بمجرد تطبيق التجاوز، أو الحالة غير المعدلة بينما ينتظر التجاوز انتهاء سير العمل.

مثال:

"Approved"

override
object
مطلوب

تجاوز واحد لحالة فحص (ميزة) تم إجراؤه باستخدام PATCH /v3/session/{sessionId}/features/{nodeId}/update-status/: ما يغيّره، وما إذا كان قد طُبّق أم لا يزال بانتظار إنهاء الشخص لسير العمل، ومن طلبه وسبب ذلك.

آخر تعديل في ٧ نوفمبر ٢٠٢٦