> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# فحص المحافظ عند الطلب: API دون الحاجة إلى معاملة

> افحص عنوان محفظة كريبتو واحدًا لمخاطر AML دون إنشاء أي معاملة مع Didit. مصدر الأموال والتعرض للعقوبات ودرجة المخاطر عند الطلب.

## متى تستخدمه

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

نقطة النهاية هذه هي النظير المستقل لـ[الفحص التلقائي للعملات المشفرة](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md) الذي يعمل أثناء [إرسال المعاملة](https://docs.didit.me/ar/transaction-monitoring/transactions.md). يشترك الاثنان في مزوّدي تحليلات البلوكتشين نفسهما وفي بنية النتيجة نفسها.

| حالة الاستخدام | endpoint |
| - | - |
| فحص عنوان مسبقًا دون معاملة لتسجيلها | **فحص المحافظ** — `POST /v3/wallet-screening/` |
| فحص محفظة ضمن عملية إيداع أو سحب مسجلة | [إنشاء معاملة](https://docs.didit.me/ar/transaction-monitoring/transactions.md) مع `currency_kind: "crypto"` |

لا يكتب فحص المحافظ أي سجل في جدول المعاملات. إذا كنت تحتاج إلى ربط الفحص بمعاملة مراقَبة (مع القواعد والتنبيهات والـ webhook)، فأرسل معاملة بدلًا من ذلك.

## المتطلبات الأساسية

يجب إعداد مراقبة المعاملات للتطبيق مع إما مزوّد مُدار أو [مفتاح مزوّد موجود](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md#المزوّدون-المدعومون). اضبط ذلك في **المعاملات** > **الإعدادات** > **Provider Preferences** في [Business Console](https://business.didit.me). إذا لم يكن هناك مزوّد مُعدّ، تُرجع نقطة النهاية `409 Conflict`.

## الطلب

`POST https://verification.didit.me/v3/wallet-screening/`

قم بالمصادقة باستخدام الرأس `x-api-key`.

| الحقل | النوع | مطلوب | الوصف |
| - | - | - | - |
| `wallet_address` | string | نعم | العنوان أو معرّف الشبكة المراد فحصه. يجب أن يطابق الشبكة المختارة، مثل `0x` متبوعًا بـ 40 حرفًا سداسيًا عشريًا لشبكات EVM، أو معرّف Lightning يقبله مزوّدك. الاسم البديل: `address`. |
| `blockchain` | string | لا | معرّف الأصل أو الشبكة. عند عدم تحديده، تقرأ Didit الشبكة من تنسيق العنوان: عناوين `bc1` و`1` و`3` هي Bitcoin (`BTC`)، وعناوين `T` هي Tron (`TRX`)، ومفاتيح Solana العامة بترميز base58 هي Solana (`SOL`). عنوان `0x` صالح على كل شبكة EVM، لذلك يُرجع `422` مع `candidate_chains` ولا يُفحص ولا يُحتسب عليه رسوم؛ أعد إرساله مع تحديد الشبكة. أي تنسيق آخر يُرجع `400`. القيم المقبولة: `BTC`، `LIGHTNING`، `ETH`، `LTC`، `XRP`، `BCH`، `DOGE`، `TRX`، `SOL`، `MATIC`، `BNB`، `BASE`، `OP`، `ARB`، `AVAX`، `ADA`، `XLM`، `HBAR`، `CELO`، `MODE`، `PLUME`، `USDT`، `USDC`. تُقبل أيضًا أسماء الشبكات الشائعة، مثل `POLYGON` أو `POL` لـ `MATIC`، و`BSC` لـ `BNB`، و`TRON` لـ `TRX`. الاسم البديل: `currency`. |
| `direction` | string | لا | `inbound` أو `outbound` أو `deposit` أو `withdrawal`. سياق اختياري للمزوّد؛ احذفه لفحص محايد قبل التحويل. لا يغيّر `risk_score` أو `severity` المُعادين، ولا تفصيلات تدفق الأموال (انظر الملاحظة ضمن [الاستجابة](#الاستجابة)). |

### تغطية الشبكات

يدعم الفحص المُدار شبكات Base (`BASE`) وOptimism (`OP`) وArbitrum One (`ARB`) لفحص المحفظة ولفحص تجزئة المعاملة على حد سواء.
قد تختلف تغطية المزوّدين المتصلين؛ ويجب أن يدعم مزوّدك المختار وحسابك الشبكة أيضًا.
تُفحص شبكات Celo (`CELO`) وMode (`MODE`) وPlume (`PLUME`) عبر حساب TRM Labs متصل (**Marketplace**، باستخدام مفتاحك الخاص)؛ لا يغطيها الفحص المُدار، وتُرجع `400`.
لا ترسل `ETH` لشبكة EVM أخرى: قد يكون للعنوان نفسه نشاط ومخاطر مختلفة على كل شبكة.

مع الفحص المُدار، يُعد `USDT` و`USDC` اسمين بديلين قديمين لـ Ethereum، وليسا بحثًا عبر كل الشبكات التي توجد فيها هذه الرموز.
استخدم معرّف الشبكة (`ETH` أو `TRX` أو `SOL` أو `MATIC` أو `BNB` أو `BASE` أو `OP` أو `ARB` أو `AVAX` أو `ADA` أو `XLM` أو `HBAR`، أو مع TRM Labs ‏`CELO` أو `MODE` أو `PLUME`) للشبكة الفعلية للمحفظة.
بالنسبة إلى الرموز في المعاملات المسجلة، أبقِ الرمز في `transaction_details.currency` وحدد الشبكة بشكل منفصل في `transaction_details.crypto_params.crypto_chain`.
راجع [اختيار الأصل والشبكة](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md#اختيار-الأصل-والشبكة).

> [!WARNING]
>
> `LIGHTNING` متاح فقط عندما يكون لدى التطبيق مزوّد BYOK متصل من Elliptic أو Chainalysis في **Marketplace** داخل وحدة التحكم.
> ولا يتوفر مع Merkle Science المُدار، ولا مع Crystal أو TRM Labs.
> الطلبات التي لا يوجد فيها مزوّد متصل مدعوم تُرجع `400` ولا تُفحص ولا يُحتسب عليها رسوم.

```bash theme={null}
curl -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
    "blockchain": "ETH"
  }'
```

## الاستجابة

الاستجابة هي نتيجة الفحص الموحّدة، وشكلها مطابق لنتيجة المزوّد `WALLET_SCREENING` التي يُرجعها فحص المعاملات.

| الحقل | النوع | الوصف |
| - | - | - |
| `provider` | string | المزوّد الذي فحص العنوان (`merklescience`, `crystal`, `chainalysis`, `elliptic`, `trmlabs`). |
| `screening_type` | string | القيمة دائماً `WALLET_SCREENING`. |
| `risk_score` | integer | درجة مخاطر موحّدة من 0 إلى 100. تصنّف Merkle Science العنوان ضمن `0-5`، وتُحوَّل هذه القيمة إلى `0` أو `15` أو `35` أو `55` أو `75` أو `95`. |
| `severity` | string | فئة المخاطر المشتقة من `risk_score` (انظر الملاحظة أدناه): `UNKNOWN` أو `LOW` أو `MEDIUM` أو `HIGH` أو `CRITICAL`. |
| `status` | string | `SCREENED` أو `PENDING` أو `ERROR`. |
| `summary` | string | ملخص واضح للقارئ. |
| `wallet_address` | string | العنوان الذي تم فحصه. |
| `blockchain` | string | السلسلة التي تم فحصها. |
| `sanctions_hit` | boolean | القيمة `true` عندما تكون المحفظة المفحوصة خاضعة للعقوبات، أو عندما تأتي أموال أيٍّ من أطرافها المقابلة من كيانات خاضعة للعقوبات (تعرّض). ولا تميّز هذه القيمة بين الحالتين. |
| `pep_counterparty` | boolean \| null | التعرّض لشخص معرض سياسياً (PEP). القيمة `null` عندما لا تتوفر أي نتيجة PEP، وهذا هو الوضع في كل النتائج حالياً لأن أياً من المزوّدين لا يُبلغ عن نتيجة من هذا النوع؛ والقيمة `false` تعني فقط نتيجة فحص سلبية صريحة. لا تقرأ القيمة `null` على أنها فحص PEP مكتمل. |
| `dominant_risk_category` | string \| null | فئة المخاطر الأعلى وزناً من بين فئات المخاطر العالية، أو `null`. |
| `risk_factors` | array | شرح مرتّب لـ `risk_score`، أي ما الذي أنتج هذا الحكم. انظر [عوامل المخاطر](#عوامل-المخاطر). |
| `source_of_funds` | array | مصادر الأموال المستلَمة، حسب الكيان. انظر [تفصيل التعرّض](#تفصيل-التعرّض). |
| `destination_of_funds` | array | وجهات الأموال المُرسَلة، حسب الكيان. بنية العناصر نفسها في `source_of_funds`. |
| `counterparty_connections` | array | الكيانات التي ينسب المزوّد العنوان إليها. انظر [روابط الأطراف المقابلة](#روابط-الأطراف-المقابلة). |
| `network_nodes`, `network_edges` | array | رسم بياني لتعرّض فحص المعاملات. تكون فارغة في نتيجة فحص المحفظة. |
| `transaction_hash`, `block_timestamp`, `total_value_usd`, `fee_usd`, `transaction_flows_status`, `transaction_flows_error` | null | حقول فحص المعاملات، وهي مشتركة مع بنية النتيجة. تكون دائماً `null` في نتيجة فحص المحفظة. |
| `sender_rows`, `receiver_rows`, `transaction_flows` | array | حقول فحص المعاملات. تكون دائماً فارغة في نتيجة فحص المحفظة. |
| `raw_response` | object | payload الخاص بالمزوّد. بنيته خاصة بكل مزوّد ويمكن أن تتغير دون إشعار، لذا اقرأ الحقول الموحّدة أعلاه بدلاً من تحليلها. |
| `report_signature` | string | توقيع غير شفاف على هذه النتيجة، ومحصور بتطبيقك. أعِد إرسال الاستجابة دون أي تعديل، بما في ذلك هذا الحقل، [لعرضها كملف PDF](#تقرير-pdf). |

> [!NOTE]
>
> **كيف يتم تحديد `severity`.** يُحدَّد `severity` وفق نطاق `risk_score` الموحّد: `0-9` → `UNKNOWN`، و`10-39` → `LOW`، و`40-69` → `MEDIUM`، و`70-89` → `HIGH`، و`90-100` → `CRITICAL`. الفئة `UNKNOWN` هي أدنى نطاق، وليست حالة منفصلة تعني "لا توجد بيانات": القيمة `risk_score: 0` (وهي الحالة الشائعة للعنوان النظيف) تعني أن المزوّد لم يُرجع أي تقييم سلبي، بينما تمثل القيمة غير الصفرية ضمن النطاق `1-9` إشارة حقيقية لكنها أدنى من `LOW`. لذلك اقرأ `risk_score` نفسه، لا الفئة وحدها. وفي كل الأحوال، لا تعرض `UNKNOWN` على أنها نتيجة "خالية من المخاطر" أو "ناجحة".
>
> **لا يغيّر `direction` نموذج المخاطر.** يُمرَّر الحقل الاختياري `direction` إلى المزوّد كسياق فقط. ولا يؤثر في `risk_score` أو `severity` أو في قوائم التفصيل المُرجَعة: تُرجَع القائمتان `source_of_funds` و`destination_of_funds` دائماً بغض النظر عن ذلك. لذلك لا يستلزم تغيير `direction` أو حذفه إعادة فحص عنوان سبق فحصه.

### عوامل المخاطر

يمثل `risk_factors` الإجابة المرتّبة عن سؤال "لماذا حصل هذا العنوان على هذه الدرجة". يقيّم المزوّدون العنوان وفق نموذجهم الخاص، ويُرجعون حكماً فقط: تُرجع Merkle Science عدداً صحيحاً من `0-5`، لذلك لا يكفي `risk_score` وحده لاتخاذ إجراء. يسمّي كل عنصر عاملاً واحداً مؤثراً، ويُرتَّب من عالي الخطورة إلى منخفضها، ثم حسب القيمة التي مرّت عبره.

| الحقل | النوع | الوصف |
| - | - | - |
| `source` | string | `attribution` (ما يقوله المزوّد عن ماهية العنوان، أي وسمه أو عنقوده الخاص) أو `exposure` (المكان الذي انتقلت إليه أمواله فعلياً). |
| `category` | string | فئة مخاطر موحّدة، وتنتمي إلى المفردات نفسها المستخدمة في تفصيل التعرّض. |
| `label` | string | الصياغة الخاصة بالمزوّد، مثل `Gambling / Crypto only`. استخدم هذه القيمة في الواجهة، لأنها تطابق ما تراه في لوحة تحكم المزوّد. |
| `entity_name` | string \| null | الكيان المنسوب، مثل موقع مقامرة أو منصة تداول. تستخدم الأمثلة في هذه الصفحة أسماءً توضيحية مثل `Example Gambling`. |
| `direction` | string | `incoming` أو `outgoing` أو `connected` أو `attribution` (الوسم الخاص بالعنوان) أو `unknown` عندما لا يُبلغ المزوّد عن الاتجاه. |
| `exposure_type` | string | `direct` (قفزة واحدة)، أو `indirect` (عدة قفزات)، أو `attribution` (الوسم الخاص بالعنوان)، أو `unknown` عندما لا يذكر المزوّد عدد القفزات التي تفصل الطرف المقابل. تعامل مع `unknown` على أنه غير مصنّف، ولا تعامله أبداً على أنه `direct`. |
| `amount_usd` | number \| null | القيمة بالدولار الأمريكي المنسوبة إلى هذا العامل. |
| `percentage` | number | حصة هذا العامل من **إجمالي حجم المعاملات المفحوصة للعنوان**، بالاتجاهين معاً. وهي تختلف عن `percentage` داخل `source_of_funds` و`destination_of_funds`، لأن تلك القيمة موحّدة لكل اتجاه على حدة. هذه القيمة قابلة للمقارنة والجمع عبر القائمة كلها. |
| `is_high_risk` | boolean | تحدد ما إذا كانت الفئة من الفئات التي تعتبرها Didit عالية المخاطر (`sanctioned` و`mixer` و`stolen_funds` و`ransomware` و`scam` و`darknet_market` و`terrorist_financing` و`child_exploitation` و`hacked_exchange` و`high_risk_exchange` و`seized_funds`). |
| `description` | string | وصف من سطر واحد للعامل، مثل `9.01% indirect outgoing exposure to Gambling / Crypto only (Example Gambling)`. |

> [!NOTE]
>
> **الدرجة المرتفعة دون أي عامل `is_high_risk` نتيجة حقيقية ومهمة.** فهي تعني أن المزوّد قيّم العنوان وفق نموذج التعرّض الخاص به دون أن يُبلغ عن تطابق مع العقوبات أو الشخص المعرّض سياسياً أو كيان منسوب، والعوامل المدرجة هي تدفقات الأموال التي تقف وراء هذه الدرجة. يوضح `summary` ذلك صراحةً، لذا تعامل مع هذه العناوين على أنها "راجع التدفقات"، لا على أنها تطابق مؤكد. يُقتصر `risk_factors` على أقوى خمسة عوامل مؤثرة، بينما تتضمن `source_of_funds` و`destination_of_funds` التفصيل الكامل دائماً.
>
> **`risk_factors` حقل على المستوى الأعلى، وليس حقلًا متداخلًا.** النتائج التي فُحصت قبل وجود هذا الحقل لا تتضمن المفتاح إطلاقًا، لذا اقرأه على أنه قائمة فارغة بدلًا من افتراض أن التفسير فارغ.

### تفصيل التعرّض

يصف كل إدخال في `source_of_funds` / `destination_of_funds` كيانًا واحدًا تبادل العنوان معه الأموال:

| الحقل | النوع | الوصف |
| - | - | - |
| `category` | string | الفئة الموحّدة لمخاطر الكيان (`exchange_licensed`، `dex`، `defi`، `mixer`، `sanctioned`، `darknet_market`، `stolen_funds`، …). |
| `entity_name` | string \| null | الكيان المنسوب إليه، مثل منصة تبادل أو خلاط أو مجموعة خاضعة للعقوبات. الأمثلة في هذه الصفحة تستخدم عناصر نائبة. |
| `entity_type` | string \| null | نوع الكيان لدى المزوّد (`Exchange`، `DeFi`، `Sanctions`). |
| `entity_subtype` | string \| null | النوع الفرعي الدقيق (`Mandatory KYC and AML`، `OFAC`). |
| `description` | string \| null | `entity_type / entity_subtype`، كما يصنّف المزوّد الكيان. |
| `exposure_direction` | string | `incoming` أو `outgoing` أو `connected`. |
| `exposure_type` | string | `direct` (قفزة واحدة) أو `indirect` (عدة قفزات). |
| `is_direct` | boolean | القيمة `true` عندما تكون قيمة `exposure_type` هي `direct`. |
| `amount_usd` | number \| null | القيمة بالدولار الأمريكي المنسوبة إلى الكيان. |
| `percentage` | number | حصة الكيان من إجمالي التعرّض في الاتجاه (من 0 إلى 100). |
| `hops` | integer \| null | عدد القفزات إلى الكيان (`1` للطرف المقابل المباشر)، عندما يبلغ المزوّد عنها. تكون دائمًا `null` مع Merkle Science، لأنه يبلغ فقط عما إذا كان التعرّض مباشرًا أو غير مباشر، لذا استخدم `exposure_type`. |
| `country` | string \| null | رمز الدولة الأساسي للكيان وفق ISO 3166-1 alpha-2. تكون القيمة فارغة أو `null` عندما لا يعرفها المزوّد. |
| `provider_entity_id`، `provider_entity_type_id`، `provider_entity_subtype_id` | string \| null | المعرّفات الخاصة بالمزوّد للكيان ولنوعه ونوعه الفرعي. |
| `raw_amount`، `raw_currency` | number \| null، string \| null | المبلغ بوحدة الأصل نفسها، عندما يبلغ المزوّد عنه. |

### روابط الأطراف المقابلة

يسرد `counterparty_connections` الكيانات التي ينسب المزوّد إليها العنوان المفحوص. مع Merkle Science تأتي هذه الكيانات من وسوم المالك والمستخدم الخاصة بالعنوان نفسه، لذلك قد يظهر الكيان نفسه مرتين، ولا تتضمن تدفقات أموال: تكون `received_usd` و`sent_usd` و`received_hops` و`sent_hops` كلها `null`، وتكون `percentage` بقيمة `0.0`. اقرأ تدفقات الأموال من `source_of_funds` و`destination_of_funds`.

| الحقل | النوع | الوصف |
| - | - | - |
| `entity_name` | string \| null | الكيان المنسوب إليه. |
| `entity_type` | string \| null | نوع الكيان لدى المزوّد. |
| `entity_subtype` | string \| null | النوع الفرعي الدقيق. |
| `categories` | array | الفئات الموحّدة لمخاطر الكيان. |
| `risk_level` | string | بحروف صغيرة، ويعتمد على المزوّد. مع Merkle Science هو تصنيف المخاطر للعنوان نفسه على مقياس من 0 إلى 5 (`no_risk`، `low`، `medium_low`، `medium`، `high`، `critical`)، ويرتفع إلى `high` عندما تكون فئة الكيان عالية المخاطر. وليس تصنيفًا منفصلًا للكيان. |
| `is_direct` | boolean | تكون القيمة دائمًا `true` مع Merkle Science، لأن روابطه إسنادات وليست أطرافًا مقابلة. |
| `received_usd`، `sent_usd` | number \| null | المبلغ بالدولار الأمريكي المستلم من الكيان والمرسل إليه، عندما يبلغ المزوّد عنه. |
| `received_hops`، `sent_hops` | integer \| null | عدد القفزات إلى الكيان في كل اتجاه، عندما يبلغ المزوّد عنها. |
| `percentage` | number | حصة تعرّض العنوان، عندما يبلغ المزوّد عنها؛ وإلا فقيمتها `0.0`. |
| `country` | string \| null | دولة الكيان، عند معرفتها. |
| `provider_entity_id` | string \| null | المعرّف الخاص بالمزوّد للكيان. |

> [!WARNING]
>
> لا تعتمد على `counterparty_connections[].risk_level` أو `counterparty_connections[].is_direct` في التوجيه: مع Merkle Science، الحقل الأول يكرر تصنيف المخاطر الخاص بالعنوان (اقرأ `risk_score`)، والحقل الثاني قيمته دائمًا `true`. استخدم `sanctions_hit` و`dominant_risk_category` و`risk_factors[].is_high_risk` للحكم، واستخدم `exposure_type` في `source_of_funds` / `destination_of_funds` لمعرفة ما إذا كان التعرّض مباشرًا.

### مثال

الاستجابة الفعلية لعنوان مدرج في قائمة عقوبات OFAC، فُحص باستخدام Merkle Science. اختُصر `raw_response` فقط، واستُبدل `report_signature`:

```json theme={null}
{
  "provider": "merklescience",
  "screening_type": "WALLET_SCREENING",
  "risk_score": 95,
  "severity": "CRITICAL",
  "status": "SCREENED",
  "summary": "Merkle Science risk: Critical (5/5). SANCTIONS HIT. Dominant risk: sanctioned. Driven by: the address is attributed to Sanctions / OFAC (Example Sanctions)",
  "wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
  "transaction_hash": null,
  "blockchain": "ETH",
  "block_timestamp": null,
  "total_value_usd": null,
  "fee_usd": null,
  "sender_rows": [],
  "receiver_rows": [],
  "transaction_flows": [],
  "transaction_flows_status": null,
  "transaction_flows_error": null,
  "source_of_funds": [
    {
      "category": "sanctioned",
      "percentage": 100.0,
      "amount_usd": 9813695.0,
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "hops": null,
      "description": "Sanctions / OFAC",
      "is_direct": true,
      "exposure_direction": "incoming",
      "exposure_type": "direct",
      "provider_entity_id": "118885",
      "provider_entity_type_id": "30",
      "provider_entity_subtype_id": "125",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    }
  ],
  "destination_of_funds": [
    {
      "category": "defi",
      "percentage": 84.824453,
      "amount_usd": 7783414.38,
      "entity_name": "Example DeFi 7",
      "entity_type": "DeFi",
      "entity_subtype": "Bridges",
      "hops": null,
      "description": "DeFi / Bridges",
      "is_direct": false,
      "exposure_direction": "outgoing",
      "exposure_type": "indirect",
      "provider_entity_id": "118459",
      "provider_entity_type_id": "33",
      "provider_entity_subtype_id": "143",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    },
    {
      "category": "defi",
      "percentage": 15.175547,
      "amount_usd": 1392494.37,
      "entity_name": "Example DeFi 2",
      "entity_type": "DeFi",
      "entity_subtype": "Yield Aggregator",
      "hops": null,
      "description": "DeFi / Yield Aggregator",
      "is_direct": false,
      "exposure_direction": "outgoing",
      "exposure_type": "indirect",
      "provider_entity_id": "90192",
      "provider_entity_type_id": "33",
      "provider_entity_subtype_id": "142",
      "country": "",
      "raw_amount": null,
      "raw_currency": null
    }
  ],
  "counterparty_connections": [
    {
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "risk_level": "critical",
      "categories": [
        "sanctioned"
      ],
      "received_usd": null,
      "sent_usd": null,
      "received_hops": null,
      "sent_hops": null,
      "percentage": 0.0,
      "is_direct": true,
      "country": null,
      "provider_entity_id": null
    },
    {
      "entity_name": "Example Sanctions",
      "entity_type": "Sanctions",
      "entity_subtype": "OFAC",
      "risk_level": "critical",
      "categories": [
        "sanctioned"
      ],
      "received_usd": null,
      "sent_usd": null,
      "received_hops": null,
      "sent_hops": null,
      "percentage": 0.0,
      "is_direct": true,
      "country": null,
      "provider_entity_id": null
    }
  ],
  "network_nodes": [],
  "network_edges": [],
  "sanctions_hit": true,
  "pep_counterparty": null,
  "dominant_risk_category": "sanctioned",
  "risk_factors": [
    {
      "source": "attribution",
      "category": "sanctioned",
      "label": "Sanctions / OFAC",
      "entity_name": "Example Sanctions",
      "direction": "attribution",
      "exposure_type": "attribution",
      "amount_usd": null,
      "percentage": 0.0,
      "is_high_risk": true,
      "description": "the address is attributed to Sanctions / OFAC (Example Sanctions)"
    },
    {
      "source": "exposure",
      "category": "sanctioned",
      "label": "Sanctions / OFAC",
      "entity_name": "Example Sanctions",
      "direction": "incoming",
      "exposure_type": "direct",
      "amount_usd": 9813695.0,
      "percentage": 51.679304,
      "is_high_risk": true,
      "description": "51.6793% direct incoming exposure to Sanctions / OFAC (Example Sanctions)"
    },
    {
      "source": "exposure",
      "category": "defi",
      "label": "DeFi / Bridges",
      "entity_name": "Example DeFi 7",
      "direction": "outgoing",
      "exposure_type": "indirect",
      "amount_usd": 7783414.38,
      "percentage": 40.987766,
      "is_high_risk": false,
      "description": "40.9878% indirect outgoing exposure to DeFi / Bridges (Example DeFi 7)"
    },
    {
      "source": "exposure",
      "category": "defi",
      "label": "DeFi / Yield Aggregator",
      "entity_name": "Example DeFi 2",
      "direction": "outgoing",
      "exposure_type": "indirect",
      "amount_usd": 1392494.37,
      "percentage": 7.33293,
      "is_high_risk": false,
      "description": "7.33293% indirect outgoing exposure to DeFi / Yield Aggregator (Example DeFi 2)"
    }
  ],
  "raw_response": {
    "...": "provider-specific details"
  },
  "report_signature": "<hmac-sha256 over the result, scoped to your application>"
}
```

توضح الأمثلة بنية الاستجابة، ولا تمثل حكمًا مضمونًا لعنوان حقيقي. تعتمد درجات المخاطر والتعرّض للعقوبات على الشبكة المختارة والمعلومات الاستخبارية الحالية وسياسة المخاطر المُعدّة. لا يعني إسناد منصة تبادل أن درجة المخاطر صفر: فقد تتعرّض محفظة منصة التبادل للعقوبات عبر تدفقات أموالها.
قد يدل `sanctions_hit: true` على أن المحفظة نفسها خاضعة للعقوبات، أو فقط على أن أموالها تعرّضت للعقوبات، لذلك لا يعني وحده أن مالك المحفظة المفحوصة خاضع للعقوبات.
عند تشغيل الفحص نفسه على معاملة مسجّلة، يمكن للقواعد أيضًا قراءة `custom_values.wallet_sanctioned`، وتكون قيمته `true` فقط عندما ينسب المزوّد المحفظة نفسها إلى كيان خاضع للعقوبات، وكذلك `custom_values.aml_sanctions_exposure_pct`.
راجع [حقول الفحص للقواعد](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md#حقول-الفحص-للقواعد).
اقرأ `risk_factors` و`source_of_funds` و`destination_of_funds` للتمييز بين الإسناد والتعرّض.
راجع [فحص العملات المشفّرة والمحافظ](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md#نتائج-الفحص) للاطلاع على شرح خطوة بخطوة.

## تقرير PDF

للحصول على تقرير PDF بعلامة Didit التجارية لنتيجة فحص، أعد إرسال نص الاستجابة كما هو تمامًا، بما فيه `report_signature`، إلى `POST /v3/wallet-screening/pdf/`. هذه العملية عديمة الحالة: لا يوجد استدعاء للمزوّد، ولا فوترة إضافية، ولا يُحفظ أي شيء. أي تعديل على حقل موقّع (`risk_score` و`severity` و`sanctions_hit` وغيرها) قبل إعادة الإرسال يؤدي إلى `400`.

```bash theme={null}
RESULT=$(curl -s -X POST https://verification.didit.me/v3/wallet-screening/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a", "blockchain": "ETH"}')

curl -X POST https://verification.didit.me/v3/wallet-screening/pdf/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$RESULT" \
  -o wallet_screening_report.pdf
```

راجع [فحص المحفظة وتقرير PDF](https://docs.didit.me/ar/management-api/transactions/screen-wallet-pdf.md) للاطلاع على المخطط الكامل للطلب والاستجابة وأشكال الأخطاء.

## الفوترة

يُحتسب استخدام واحد لمراقبة AML مقابل كل فحص ناجح، وبالسعر نفسه المطبّق على فحص الكريبتو المرتبط بالمعاملات. راجع [الأسعار](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md#المزوّدون-المدعومون) لمعرفة أسعار المفاتيح المُدارة والمفاتيح المرتبطة. لا تُحتسب رسوم على التطبيقات في البيئة التجريبية. لا تُحتسب أبداً أخطاء التحقق (`400`) ولا أخطاء المزوّد غير المُهيَّأ (`409`).

## الأخطاء

| الحالة | المعنى |
| - | - |
| `400` | عنوان محفظة مشوّه أو مصاغ بصورة غير صحيحة، أو غياب `wallet_address`، أو `blockchain` غير مدعومة. |
| `401` | `x-api-key` مفقود أو غير صالح. |
| `409` | لم يُهيَّأ أي مزوّد AML للتطبيق. هيّئ مراقبة المعاملات أولاً. |
| `409` | رفض المزوّد مفتاح API الذي ربطته (`wallet_screening_provider_credentials_rejected`). حدّث المفتاح في ربط Marketplace، أو في إعدادات مراقبة المعاملات إذا كان المفتاح مُهيَّأً هناك. إعادة المحاولة بالمفتاح نفسه لن تُجدي. |
| `409` | مزوّد AML المُهيَّأ لا يدعم فحص المحافظ بعد (`wallet_screening_provider_unavailable`). |
| `422` | أُرسل عنوان `0x` دون `blockchain` (`wallet_screening_chain_undetermined`). يسرد نص الاستجابة `candidate_chains`؛ أعد الإرسال مع إحدى هذه القيم. لا يُفحص أي شيء ولا يُحتسب أي رسم. |
| `502` | تعذّر على المزوّد إكمال الفحص؛ أعد المحاولة لاحقاً. |

## الخطوات التالية

> [card] [مرجع API](https://docs.didit.me/ar/management-api/transactions/screen-wallet.md)
>
> المخطط الكامل للطلب والاستجابة لنقطة endpoint الخاصة بـ Screen Wallet.

> [card] [Screen Wallet PDF](https://docs.didit.me/ar/management-api/transactions/screen-wallet-pdf.md)
>
> عرض نتيجة الفحص كملف PDF يحمل علامة Didit التجارية.

> [card] [فحص الكريبتو والمحافظ](https://docs.didit.me/ar/transaction-monitoring/aml-screening.md)
>
> الفحص التلقائي أثناء إنشاء المعاملة، ونموذج النتيجة.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.