الانتقال إلى المحتوى الرئيسي
POST
curl
استيعاب الأحداث اختياري. فعّله من Transactions > Settings > Event monitoring قبل إرسال أي حدث، وإلى ذلك الحين ترد نقطة النهاية هذه بالرمز 403 مع "code": "event_monitoring_disabled".
يشرح استيعاب الأحداث الإطار العام للحدث، والفئات العشر، ومفاتيح الحمولة المطلوبة، وفئات الاحتفاظ بالبيانات. ويوضح القواعد المطبقة على الأحداث القواعد التي تُنفَّذ ضمن الطلب والقواعد التي تُنفَّذ بشكل غير متزامن. وإذا أردت إرسال الأحداث من المتصفح أو من التطبيق بدلاً من الخادم الخلفي، فاستخدم إرسال الأحداث عبر SDK.

التفويضات

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.

الجسم

application/json

غلاف الحدث (envelope)، وهو متطابق لكل فئة. تُقبل الأسماء البديلة بصيغة camelCase: eventId، وeventCategory (أو category)، وactionType، وoccurredAt، وtimeZone (أو zoneId)، وdeviceContext (أو device)، وtransactionContext، وcustomValues (أو props)؛ وداخل subject: vendorData، وentityType، وfullName؛ وداخل session: sessionId، وpageUrl؛ وداخل transaction_context: paymentReferenceId.

event_id
string
مطلوب

المعرّف الخاص بك للحدث، ويكون فريداً لكل تطبيق. إنه مفتاح idempotency: إعادة إرسال نفس event_category وaction_type وoccurred_at وsubject.vendor_data وpayload تحته تُعد إعادة تشغيل، وأي اختلاف يُعد تعارضاً.

Maximum string length: 128
مثال:

"login-2026-10-17-000001"

event_category
enum<string>
مطلوب

فئة الحدث.

الخيارات المتاحة:
auth,
session,
gameplay,
bonus,
affiliate,
payment,
dispute,
security,
responsible_gambling,
custom
مثال:

"auth"

action_type
string
مطلوب

ما حدث ضمن الفئة. مفردات مفتوحة؛ تتيح الإجراءات المُدارة المدرجة في استيعاب الأحداث (على سبيل المثال login وdeposit_completed وchargeback_opened) التحقق من النوع وحقول القواعد المُدارة. يتم اقتطاع المسافات البيضاء في البداية والنهاية.

Required string length: 1 - 128
مثال:

"login"

occurred_at
string<date-time>
مطلوب

وقت وقوع الحدث من جانبك، بتنسيق ISO 8601 (أي قيمة بدون فارق زمني تُقرأ على أنها UTC). يجب ألا يزيد عمره على 7 أيام في الماضي وألا يتجاوز 5 دقائق في المستقبل.

مثال:

"2026-10-17T09:15:02.481Z"

subject
object
مطلوب

المستخدم أو الشركة التي ينتمي إليها الحدث. ويُحدَّد بالمستخدم (أو الشركة) التي تملك vendor_data هذه في تطبيقك؛ ويتم إنشاء واحد عند عدم وجوده.

time_zone
string | null

المنطقة الزمنية لحدوث الواقعة من جانبك، على سبيل المثال Europe/Madrid. يتم تخزينها مع الحدث؛ ولا تُرجعها endpoint الخاصة بالقراءة.

Maximum string length: 64
business
object

الشركة التي ينتمي إليها الحدث، عندما تختلف عن الكيان المعني. تُقرأ vendor_data فقط.

session
object

سياق الجلسة الخاص بك للحدث.

device_context
object

سياق الجهاز والشبكة، يُخزن كما تم إرساله ويُرجع بواسطة GET /v3/events/{event_uuid}/. في مسار الخادم هذا، لا ترى Didit اتصال المستخدم النهائي، لذا فإن عنوان IP المُثرى والمُستخدم بواسطة القواعد هو network_context.ip_address كما ترسله أنت.

transaction_context
object

سياق الأموال. تلبي القيم غير الفارغة هنا أيضاً مفاتيح payload المطلوبة للإجراء.

payload
object

حقول النطاق الخاصة بالفئة، بحد أقصى 16384 بايت بمجرد ترميزها بتنسيق JSON. تتطلب بعض الإجراءات مفاتيح (في payload أو transaction_context): يتطلب gameplay.p2p_settlement كلاً من game_id وcounterparty_vendor_data وstake_amount وnet_result_amount وrole وواحداً من hand_id أو round_id أو match_id؛ ويتطلب gameplay.bet_placed وgameplay.bet_settled المعرّف game_id؛ ويتطلب payment.deposit_initiated وpayment.deposit_completed وpayment.withdrawal_requested وpayment.withdrawal_completed كلاً من payment_reference_id وamount وcurrency وpayment_method وstatus؛ ويتطلب payment.withdrawal_address_changed المعرّف withdrawal_address_hash؛ ويتطلب dispute.chargeback_opened وdispute.chargeback_won وdispute.chargeback_lost الحقل payment_reference_id وواحداً من dispute_id أو chargeback_id؛ ويتطلب session.bot_signal_observed الحقل telemetry_schema_version وواحداً من bot_score أو actions_per_minute أو timing_variance_ms أو pointer_entropy أو keystroke_entropy أو reaction_time_ms_p50؛ ويتطلب responsible_gambling.self_exclusion_match كلاً من registry_source وexclusion_status وidentity_match_ref. يتطلب كل إجراء security ينتهي بـ _changed الحقل changed_field، بالإضافة إلى previous_reference_hash أو new_reference_hash عندما يكون الحقل هو password أو mfa_method أو mfa أو email أو phone أو withdrawal_address أو payout_method أو api_key. أرسل التجزئات والمراجع، ولا ترسل أبداً رقم بطاقة أو عنوان سحب كاملاً أو تجزئة كلمة مرور أو سر MFA.

custom_values
object

ما يصل إلى 100 مفتاح خاص بك، يمكن الرجوع إليها من القواعد بصيغة custom_values.<key>. يجب أن تكون القيم عددية أو نصية بسيطة (string أو number أو boolean أو null)؛ ويتم رفض الكائنات والمصفوفات المتداخلة.

الاستجابة

إعادة تشغيل idempotency: تم تخزين حدث يحمل event_id هذا والمحتوى نفسه بالفعل. لم يتم تخزين أو تقييم أي شيء مرة أخرى؛ يصف نص الاستجابة الحدث المخزّن.

نتيجة استيعاب حدث واحد. يُعاد الشكل نفسه لحدث جديد ولإعادة تشغيل idempotent.

event_uuid
string<uuid>
مطلوب

معرّف Didit للحدث المخزن.

event_id
string
مطلوب

حقل event_id الخاص بك.

status
enum<string>
مطلوب

الحالة بعد تشغيل القواعد في الوقت الفعلي. انظر MonitoringEvent.status.

الخيارات المتاحة:
ACCEPTED,
APPROVED,
IN_REVIEW,
DECLINED
score
integer
مطلوب

الدرجة بعد تشغيل القواعد في الوقت الفعلي.

rules_evaluated_count
integer
مطلوب

عدد قواعد الأحداث التي تم تقييمها في الطلب. 0 في تطبيق البيئة التجريبية، حيث لا يتم تشغيل أي قواعد.

النطاق المطلوب: x >= 0
rules_matched_count
integer
مطلوب

عدد القواعد التي تطابقت، بما في ذلك قواعد وضع TEST.

النطاق المطلوب: x >= 0
correlation_pending
boolean
مطلوب

تكون القيمة true عندما لا يزال يتعين تشغيل قاعدة غير متزامنة. اقرأ GET /v3/events/{event_uuid}/ بعد بضع دقائق للحصول على status وscore النهائيين.

retention_class
enum<string>
مطلوب

فئة الاحتفاظ، بعد أي ترقية بواسطة قاعدة مطابقة.

الخيارات المتاحة:
low_value,
standard,
risk_relevant,
monetary_or_compliance
expires_at
string<date-time> | null
مطلوب

وقت انتهاء صلاحية الحدث بموجب فئة الاحتفاظ به وحذفه. القيمة Null لأحداث monetary_or_compliance (المدفوعات والنزاعات).

idempotent_replay
boolean
مطلوب

تكون القيمة true عندما يكون هناك حدث بهذا الـ event_id وبالمحتوى نفسه مخزناً بالفعل؛ وتكون القيم هي قيم الحدث المخزن ولم يتم تشغيل أي قاعدة مرة أخرى.

rule_matches
object[]
مطلوب

القواعد التي تطابقت مع الحدث.

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