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

التفويضات

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.

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

transaction_id
string<uuid>
مطلوب

معرّف UUID الثابت للمعاملة من Didit التي تملك التحويل.

الجسم

application/json

قدّم واحداً فقط مما يلي: payment_txn_id (إنهاء)، أو action=cancel، أو action=resend، أو action=update_compliance_email مع compliance_email، أو action=update_originator_wallet مع wallet_address، أو action=beneficiary_vasp مع beneficiary_vasp.

payment_txn_id
string

تجزئة المعاملة على السلسلة. تتطلب أن تكون عملية التحويل صادرة وبحالة COMPLETED.

action
enum<string>

يقوم "cancel" بإلغاء معاملة تحويل غير نهائية. ويعيد "resend" تشغيل التوجيه لتحويل صادر عالق في الحالات COUNTERPARTY_VASP_NOT_FOUND أو COUNTERPARTY_VASP_NOT_REACHABLE أو NOT_ENOUGH_COUNTERPARTY_DATA. ويستبدل "update_compliance_email" البريد الإلكتروني للامتثال الذي يُرسل إليه الطلب، وذلك في تحويل صادر بإحدى هذه الحالات الثلاث؛ أرسل "resend" بعد ذلك. ويسجل "update_originator_wallet" المحفظة التي خرجت منها الأموال بالفعل (wallet_address، memo). ويحدد "beneficiary_vasp" الـ VASP للطرف المقابل بنفسك (يتطلب beneficiary_vasp) لتحويل صادر بإحدى هذه الحالات: حيث يتم توجيهه إلى ذلك الـ VASP وإعادة إرساله.

الخيارات المتاحة:
cancel,
resend,
update_compliance_email,
update_originator_wallet,
beneficiary_vasp
compliance_email
string<email>

مطلوب مع action: update_compliance_email. يُحفظ كـ beneficiary_data.counterparty_vasp_email لهذا التحويل: ينتمي إلى هذا التحويل فقط ولا ينضم إلى أي مدخل في الدليل ولا إلى أي قائمة جهات اتصال.

Maximum string length: 254
wallet_address
string

مع action: update_originator_wallet: المحفظة التي خرجت منها الأموال. عندما تكون مدخلات UTXO للتحويل معروفة، يجب أن تكون واحدة منها.

Maximum string length: 128
memo
string

مع action: update_originator_wallet: مذكرة المحفظة (memo) أو الوسم الخاص بها على شبكة تدعم المذكرات. اختياري.

Maximum string length: 256
beneficiary_vasp
string<uuid>

مطلوب مع action=beneficiary_vasp: الـ id الخاص بـ VASP في الدليل، من GET /v3/travel-rule/vasps/. خيارك يتجاوز كل خطوة اكتشاف تلقائي، ولا يتم تجاوزه أبداً بواسطتها.

الاستجابة

التحويل المحدث. بعد update_compliance_email تبقى حالته دون تغيير ويحتفظ بـ reason: email_undeliverable حتى عملية resend التالية.

كائن التحويل الكامل الذي يتم إرجاعه بواسطة endpoints الخاصة بتأكيد الملكية والإنهاء/الإلغاء. طالما أن ملكية المحفظة لتحويل وارد غير مؤكدة، يتم إرجاع originator_data وbeneficiary_data للطرف المقابل محجوبة (يتم الاحتفاظ بالحرف الأول من كل كلمة؛ بينما تظل المحفظة، والبلوكتشين، وتوجيه VASP قابلة للقراءة) وتكون قيمة data_masked هي true.

uuid
string<uuid>
status
enum<string>
الخيارات المتاحة:
AWAITING_COUNTERPARTY,
ON_HOLD,
COMPLETED,
FINISHED,
CANCELLED,
EXPIRED,
COUNTERPARTY_MISMATCHED_DATA,
COUNTERPARTY_VASP_NOT_FOUND,
COUNTERPARTY_VASP_NOT_REACHABLE,
UNCONFIRMED_OWNERSHIP,
COUNTERPARTY_VASP_GENERAL_DECLINE,
NOT_ENOUGH_COUNTERPARTY_DATA,
NOT_APPLICABLE
direction
enum<string>
الخيارات المتاحة:
INBOUND,
OUTBOUND
rail
enum<string> | null

المسار الذي تم توجيه التحويل عبره، أو null عند عدم تحديد أي مسار (على سبيل المثال أقل من الحد، أو محفظة طرف مقابل ذاتية الاستضافة، أو تسجيل بعد الإيداع، أو عدم وجود طرف مقابل يمكن الوصول إليه). تعني INTERNAL أن كلا الجانبين هما تطبيقا Didit؛ وتعني EMAIL أنه تم الوصول إلى الطرف المقابل عبر رابط استلام تم إرساله بالبريد الإلكتروني. تعني TEST_VASP أن Didit Test VASP استجاب للتحويل في البيئة التجريبية. عبر GTR وVERIFYVASP وSYGNA، تقرأ Didit إجابة الطرف المقابل من استجابة الشبكة أو عبر استقصائها كل 5 دقائق. تقوم TRUST بالإرسال فقط، لذا يظل تحويل TRUST في حالة AWAITING_COUNTERPARTY حتى تنتهي صلاحيته. لا يُستخدم مسار الشبكة إلا عندما تكون قد ربطت عضويتك الخاصة بتلك الشبكة. ويتم اختياره بعد اكتمال إنشاء المعاملة، لذا يكون null في تلك الاستجابة.

الخيارات المتاحة:
INTERNAL,
TRP,
GTR,
TRUST,
VERIFYVASP,
SYGNA,
EMAIL,
TEST_VASP,
null
protocol
string | null
ivms_version
string
مثال:

"ivms101.2023"

required
boolean
ownership_confirmed
boolean | null
deadline_at
string<date-time> | null
timeline
object[]
counterparty_vasp
object | null
originator_data
object

جهة المُرسِل. بالنسبة للتحويلات الواردة، يتم حجب قيم الطرف المقابل حتى يتم تأكيد الملكية.

beneficiary_data
object

طرف المستفيد. بالنسبة للتحويلات الواردة، يتم حجب قيم الطرف المقابل حتى يتم تأكيد الملكية.

name_match
object · null · null

مقارنة الاسم التي حسمت التحويل، أو null حتى يتم تشغيل مقارنة واحدة. عندما تكون الأطراف مقنّعة، وفي نسخة العميل الآخر من تبادل INTERNAL، يتم إخفاء transfer_name وcompared_name وmatched_names وmismatched_names. قد تختلف قيمة score عن matched: تتبع matched مستوى الصرامة، بينما تمثل score مدى التشابه بين الاسمين الكاملين.

data_match
object | null

مقارنة حقلاً بحقل لبيانات طرف التحويل مع ما يعرفه الطرف الآخر عن صاحب المحفظة. تذكر أسماء الحقول والنتائج، ولا تذكر القيم مطلقاً، بحيث تظل قابلة للقراءة مع حجب بيانات الطرف المقابل. تكون Null حتى يتم إجراء المقارنة.

mismatched_fields
string[]

اختصار لـ data_match.mismatched_fields. يكون فارغاً عندما لا يختلف أي شيء.

data_unmasked
object | null

سجل تدقيق للحظة التي تم فيها كشف بيانات الطرف المقابل. تكون القيمة فارغة (Null) طالما بقيت البيانات محجوبة، وكذلك للتحويلات الصادرة.

data_masked
boolean

صحيح طالما أن البيانات الشخصية للطرف المقابل محجوبة في هذه الاستجابة.

created_at
string<date-time>
delivery
object | null

حالة آخر رسالة يتعين على هذا التحويل إرسالها إلى الطرف الآخر. تكون القيمة Null عندما لا يتعين على التحويل إرسال أي رسالة على الإطلاق (على سبيل المثال، إذا كان أقل من threshold_amount، أو محفظة ذاتية الاستضافة مُعلنة، أو تسجيل sunrise).

discovery
object[]

كيف بحثت Didit عن الطرف المقابل، إدخال واحد لكل خطوة تم تشغيلها. يكون فارغاً عند عدم تشغيل أي عملية اكتشاف، على سبيل المثال في المعاملات الواردة.

reason
string

سبب تعثر معاملة بحالة COUNTERPARTY_VASP_NOT_FOUND أو COUNTERPARTY_VASP_NOT_REACHABLE؛ وتكون "" لأي حالة أخرى. يُحدد فشل التسليم ذلك أولاً، في حالة COUNTERPARTY_VASP_NOT_REACHABLE فقط: email_undeliverable (رفض مزود البريد رسالة الامتثال الإلكترونية ولم يتبق أي عنوان لتجربته: عند إرسالها، أو في رسالة تذكير، أو كارتداد دائم تم الإبلاغ عنه لاحقاً) أو delivery_failed (فشل مسار التسليم نهائياً: رفض مسار الشبكة الرسالة أو استنفد محاولات إعادة المحاولة، أو لم يستجب مضيف هوية TRP، أو لم يقبل مضيف TRP الخاص بالطرف المقابل الاستعلام). وإلا فإن تتبع discovery يحدد ذلك: awaiting_end_user (لم تُحدد أي خطوة طرفاً مقابلاً يمكن لـ Didit الوصول إليه)، أو directory_match_no_route (حددت إحدى الخطوات VASP في الدليل ليس لديه مسار)، أو picked_member_without_proven_wallet (اختار المستخدم النهائي أحد عملاء Didit الذي لم يثبت سيطرته على المحفظة)، أو no_directory_match عندما لا يُقدم التتبع أي سبب آخر. تؤدي إعادة الإرسال إلى تحريك المعاملة، وبالتالي يتم مسح السبب. راجع سبب تعثر المعاملة.

next_actions
object[]

ما يتيح متابعة التحويل؛ [] لأي حالة باستثناء COUNTERPARTY_VASP_NOT_FOUND أو COUNTERPARTY_VASP_NOT_REACHABLE. يتيح email_undeliverable خيار update_compliance_email، ثم resend. ويتيح delivery_failed خيار resend. ويتيح سبب الاكتشاف select_counterparty_vasp و declare_self_hosted و add_vasp_hint و resend.

chain_details
object

كيفية تسمية سلسلة التحويل لمحفظتيه، وذلك عندما يكون هناك أكثر من عنوان يدفع لآخر. يكون فارغاً ({}) لتحويلات سلاسل الحسابات (EVM، Solana، Tron)، حيث يكون العنوانان هما المحفظتان. تقرأ المطابقة والتوجيه ودفتر العناوين المحافظ من هنا أولاً.

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