curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Webhooks.Retrieve(ctx, "22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().webhooks().retrieve("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->webhooks->retrieve('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.Webhooks.RetrieveAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
"request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-15T09:21:18.412345Z"
}الحصول على تسليم webhook للجلسة | واجهة Didit API
استرجع تسليم webhook واحدًا لجلسة في Didit، ويشمل عنوان URL واستجابة نقطة النهاية HTTP وترويسات التوقيع وجسم JSON الذي أرسلته Didit بالضبط.
curl -X GET 'https://verification.didit.me/v3/session/22222222-3333-4444-5555-666666666666/webhook/66666666-7777-8888-9999-000000000001' \
-H 'x-api-key: YOUR_API_KEY'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001",
);
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Sessions.Webhooks.Retrieve(ctx, "22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.sessions().webhooks().retrieve("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->sessions->webhooks->retrieve('22222222-3333-4444-5555-666666666666', '66666666-7777-8888-9999-000000000001');
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.sessions.webhooks.retrieve(
"22222222-3333-4444-5555-666666666666",
"66666666-7777-8888-9999-000000000001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Sessions.Webhooks.RetrieveAsync("22222222-3333-4444-5555-666666666666", "66666666-7777-8888-9999-000000000001");
Console.WriteLine(JsonSerializer.Serialize(result));{
"uuid": "66666666-7777-8888-9999-000000000001",
"session_id": "22222222-3333-4444-5555-666666666666",
"request_url": "https://yourapp.com/webhooks/didit",
"response_status": 503,
"status": "In Progress",
"webhook_type": "status.updated",
"request_header": "{\"Content-Type\": \"application/json\", \"X-Signature\": \"a5e02a03404e1337a0198e6be15d34abbd053c658a0e51e5d0e78554213ef29b\", \"X-Signature-V2\": \"927e7cb770c94ce745939bff73f04aa200015f3bc64795ba46c2aaf78a6cedc5\", \"X-Signature-Simple\": \"e37b0d4c716c72bb5ae7127b9cc455d28ab4686e9e22312b4ec2327409a73302\", \"X-Timestamp\": \"1792056078\", \"User-Agent\": \"DiditWebhook/2.0 +https://didit.me\"}",
"request_body": "{\"application_id\":\"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee\",\"created_at\":1792056057,\"environment\":\"live\",\"event_id\":\"33333333-4444-5555-6666-777777777777\",\"sandbox_scenario\":null,\"session_id\":\"22222222-3333-4444-5555-666666666666\",\"status\":\"In Progress\",\"timestamp\":1792056078,\"vendor_data\":\"user-123\",\"webhook_type\":\"status.updated\",\"workflow_id\":\"44444444-5555-6666-7777-888888888888\",\"workflow_version\":3}",
"created_at": "2026-10-15T09:21:18.412345Z"
}request_body هو نفسه المذكور في webhook، والرؤوس هي نفسها التي يغطيها التحقق من التوقيع. لإعادة إرسال التسليم، استخدم إعادة إرسال تسليم webhook للجلسة.التفويضات
مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console. يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير 404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع https://docs.didit.me/console/api-keys.
معلمات المسار
معرّف UUID لجلسة التحقق، للمستخدمين (KYC) أو للشركات (KYB): session_id الذي تم إرجاعه بواسطة POST /v3/session/. يطابق الخادم المعرّف عبر كلا نوعي الجلسات.
يجب أن يكون UUID صالحًا. يطابق المسار قيم UUID صالحة البنية فقط، لذا يتم رفض أي قيمة غير صالحة البنية بواسطة موجه URL قبل تشغيل أي كود برمجي للتطبيق وتكون الاستجابة صفحة HTML برمز 404 بدلاً من تنسيق JSON لـ {"detail": ...} الموضح أدناه.
معرّف UUID لعملية التسليم: وهو الـ uuid لمدخل تم إرجاعه بواسطة GET /v3/session/{sessionId}/webhooks/. يجب أن ينتمي إلى الجلسة الموجودة في المسار.
الاستجابة
التسليم، مع رؤوس الطلب ونصه.
محاولة تسليم webhook واحدة مسجلة لجلسة تحقق، مع رؤوس الطلب ومتنه الدقيقة التي أرسلتها Didit.
معرّف التسليم. استخدمه كـ {webhook_uuid} للحصول على عملية التسليم هذه أو إعادة إرسالها.
الجلسة التي تنتمي إليها عملية التسليم (الجلسة الموجودة في المسار).
رابط URL الذي أُرسل إليه التسليم.
حالة HTTP التي أرجعها الـ endpoint الخاص بك. null طالما أن التسليم في قائمة الانتظار ولم تتم محاولته بعد. عندما لا يتم تلقي أي استجابة HTTP، تسجل Didit حالة خاصة بها: 504 عندما لم يُجب الـ endpoint الخاص بك في غضون 5 ثوانٍ، و503 لفشل الاتصال، و400 عندما تم رفض عنوان URL لعدم أمانه (على سبيل المثال عنوان خاص أو داخلي)، و404 لأي خطأ آخر في الطلب. يُعتبر الرمز 400 أو أعلى تسليمًا فاشلاً.
حالة الجلسة عند إنشاء الحدث، على سبيل المثال In Progress أو Approved أو Declined.
اسم حدث webhook المدعوم. استخدم هذه النصوص بدقة في subscribed_events؛ حيث يتم رفض القيم غير المدعومة.
status.updated, data.updated, user.status.updated, user.data.updated, business.status.updated, business.data.updated, activity.created, transaction.created, transaction.status.updated, travel_rule.status.updated, workflow.compliance_changed, transaction_rule_suggestions.created, auth.signup, auth.login, auth.login_failed, auth.password_reset_requested, auth.password_reset_completed, auth.mfa_changed, auth.new_device, auth.account_locked, investigator.report.ready, investigator.decision.automated, investigator.decision.overridden, investigator.decision.contested, investigator.question.raised, investigator.automation.paused, investigator.rfi.answered, investigator.rfi.overdue, investigator.drift.detected, investigator.sla.breached, investigator.qa.failed, investigator.external.report.ready نص JSON (سلسلة نصية) لرؤوس الطلب التي أرسلتها Didit: وهي Content-Type وX-Signature وX-Signature-V2 وX-Signature-Simple وX-Timestamp وUser-Agent. قم بتحليله باستخدام محلل JSON. يحتوي على التوقيعات، ولا يحتوي أبداً على سر التوقيع.
نص JSON (سلسلة نصية) للـ payload الدقيق الذي أرسلته Didit، مع فرز المفاتيح، بما في ذلك event_id وtimestamp. قم بتحليله باستخدام محلل JSON؛ راجع شكل الـ Payload. بالنسبة لمفتاح محدد النطاق بدون media: read، تكون عناوين URL للوسائط بداخله null؛ وبدون sessions: write، تكون رموز الجلسات وروابط التحقق المستضافة null. محتوى الطلب الذي تم تغييره بهذه الطريقة لا يعود مطابقاً لتوقيعاته. لا تسجل Didit محتوى الاستجابة الذي أرجعه الـ endpoint الخاص بك.
وقت إنشاء التسليم.