> ## 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 للعملات الرقمية عند الطلب

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



موجه API لفحص المحفظة
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Screen a single crypto wallet address for AML risk through the Didit Management API, without creating a transaction.

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

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
\- Run on-demand AML screening on one crypto address and return a normalised risk result (risk_score, severity, sanctions_hit, source/destination of funds, counterparty connections). Nothing is written to the transactions table.

When to call:
\- Before onboarding a customer's deposit/withdrawal wallet, to pre-check exposure.
\- Any time you need a standalone risk read on an address and do NOT have (or do not want to record) a transaction.
\- For transaction-coupled monitoring instead, use POST /v3/transactions/ with currency_kind = "crypto".

Prerequisites:
\- Transaction monitoring must be configured for the application with a managed provider or an existing provider key. Otherwise the call returns 409.

Request body (application/json):
\{
"wallet_address": "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",  // required; alias: address
"blockchain": "ETH",   // required; one of BTC, ETH, LTC, XRP, BCH, DOGE, TRX, SOL, MATIC, BNB, BASE, OP, ARB, AVAX, ADA, XLM, HBAR, USDT, USDC, or a common network name such as POLYGON or BSC; alias: currency
"direction": "inbound" // optional; inbound | outbound | deposit | withdrawal
}

Example call:
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"}'

What to read from the response:
\- risk_score (0-100, higher = riskier) and severity (UNKNOWN | LOW | MEDIUM | HIGH | CRITICAL).
\- sanctions_hit (boolean) and dominant_risk_category.
\- source_of_funds / destination_of_funds / counterparty_connections for the exposure breakdown.

Billing:
\- One AML monitoring usage is billed per successful screening. Sandbox applications are not billed.

Failure modes:
\- 400 - malformed wallet address, missing wallet_address, or unsupported blockchain.
\- 401 - missing or malformed x-api-key.
\- 409 - no AML provider configured for the application; configure transaction monitoring first.
\- 502 - provider could not complete the screening; retry later.

For automatic, transaction-coupled crypto screening, see /transaction-monitoring/aml-screening.`

\</pre>



      
      

الصق في



## OpenAPI

````yaml ar/openapi-25.json POST /v3/wallet-screening/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: API التحقق من الهوية. قم بالمصادقة باستخدام الرأس x-api-key.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/wallet-screening/:
    post:
      tags:
        - Transactions
      summary: فحص عنوان محفظة
      description: >-
        إجراء فحص AML عند الطلب لمحفظة/عنوان عملات مشفرة واحد دون إنشاء معاملة.
        يحدد مزود تحليلات البلوكتشين الذي تم إعداده لتطبيقك، ويفحص العنوان بشكل
        متزامن، ويعيد نتيجة المخاطر الموحدة. تتوفر شبكة LIGHTNING فقط مع اتصال
        BYOK من Elliptic أو Chainalysis مُضاف عبر Marketplace. لا يُكتب أي شيء
        في جدول المعاملات. يتم احتساب استخدام واحد لمراقبة AML لكل عملية فحص
        ناجحة (لا يتم محاسبة تطبيقات البيئة التجريبية).
      operationId: screenWallet
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - wallet_address
              properties:
                wallet_address:
                  type: string
                  description: >-
                    عنوان العملات المشفّرة أو معرّف الشبكة المراد فحصه. يجب أن
                    يتطابق مع الشبكة المحددة (على سبيل المثال، عنوان مكون من 40
                    حرفاً سداسياً عشرياً يبدأ بـ `0x` لسلاسل EVM). الاسم
                    المستعار: `address`.
                  example: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
                blockchain:
                  type: string
                  description: >-
                    معرّف شبكة اختياري. عند إغفاله، تتم قراءة الشبكة من تنسيق
                    العنوان: العناوين التي تبدأ بـ `bc1` و `1` و `3` هي Bitcoin
                    (BTC)، والعناوين التي تبدأ بـ `T` هي Tron (TRX)، ومفاتيح
                    base58 العامة هي Solana (SOL). يُعد عنوان `0x` صالحاً على كل
                    شبكة EVM، لذا فإن إغفال `blockchain` له يُرجع 422 مع الشبكات
                    المرشحة في `candidate_chains`. يدعم الفحص المُدار BTC و ETH
                    و LTC و XRP و BCH و DOGE و TRX و SOL و MATIC و BNB و BASE
                    (Base) و OP (Optimism) و ARB (Arbitrum One) و AVAX
                    (Avalanche C-Chain) و ADA (Cardano) و XLM (Stellar) و HBAR
                    (Hedera). يُعد كل من USDT و USDC أسماء مستعارة قديمة لـ
                    Ethereum، وليسا بحثاً متعدد الشبكات. تختلف تغطية موفر الخدمة
                    المتصل. يتطلب LIGHTNING موفر خدمة متصل مدعوماً. يتم فحص CELO
                    (Celo) و MODE (Mode) و PLUME (Plume) من خلال حساب TRM Labs
                    متصل؛ ويُرجع الفحص المُدار رمز 400 لها. الاسم المستعار:
                    `currency`.
                  enum:
                    - BTC
                    - LIGHTNING
                    - ETH
                    - LTC
                    - XRP
                    - BCH
                    - DOGE
                    - TRX
                    - SOL
                    - MATIC
                    - BNB
                    - USDT
                    - USDC
                    - BASE
                    - OP
                    - ARB
                    - AVAX
                    - ADA
                    - XLM
                    - HBAR
                    - CELO
                    - MODE
                    - PLUME
                  example: ETH
                direction:
                  type: string
                  description: >-
                    اختياري. ما إذا كان يتم فحص العنوان كطرف مقابل وارد (إيداع)
                    أو صادر (سحب). يقبل `inbound` أو `outbound` أو `deposit` أو
                    `withdrawal`. يتم تعيينه افتراضياً على فحص محايد قبل التحويل
                    عند حذفه. يتم تمرير هذا إلى المزود كمعلومات سياقية فقط؛ ولا
                    يغير `risk_score` أو `severity` أو تفاصيل
                    `source_of_funds`/`destination_of_funds` المسترجعة، والتي
                    يتم إرجاع كلاهما دائماً بغض النظر عن `direction`. لذلك، فإن
                    تغيير `direction` أو حذفه لا يتطلب إعادة فحص العنوان.
                  enum:
                    - inbound
                    - outbound
                    - deposit
                    - withdrawal
            example:
              wallet_address: '0x94f1b9b64e2932f6a2db338f616844400cd58e8a'
              blockchain: ETH
      responses:
        '200':
          description: نتيجة فحص المحافظ الموحّدة.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletScreeningResult'
              example:
                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
                    amount_usd: 9813695
                    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
                    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
                    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
                    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
                    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>
        '400':
          description: >-
            خطأ في التحقق من الصحة — عنوان محفظة غير صحيح التنسيق، أو
            `wallet_address` مفقود، أو `blockchain` غير مدعومة، أو تم حذف
            `blockchain` لعنوان لا يحدد تنسيقه أي شبكة، أو LIGHTNING دون اتصال
            متجر BYOK عبر Elliptic أو Chainalysis.
        '401':
          description: '`x-api-key` مفقود أو غير صالح.'
        '409':
          description: >-
            لم يتم إعداد أي مزود AML للتطبيق، أو أن المزود الذي تم إعداده لا
            يدعم فحص المحافظ بعد. قم بإعداد مراقبة المعاملات أولاً.
        '422':
          description: >-
            أُغفل `blockchain` لعنوان `0x`، الذي تشترك فيه جميع شبكات EVM. لا
            يتم فحص أي شيء أو فوترته؛ أعد الإرسال مع تعيين `blockchain` إلى إحدى
            `candidate_chains`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  blockchain:
                    type: array
                    items:
                      type: string
                    example:
                      - >-
                        A 0x address is valid on every EVM chain. Send
                        blockchain as one of: ETH, BNB, MATIC, BASE, ARB, OP,
                        CELO, MODE, PLUME.
                  candidate_chains:
                    type: array
                    items:
                      type: string
                    example:
                      - ETH
                      - BNB
                      - MATIC
                      - BASE
                      - ARB
                      - OP
                      - CELO
                      - MODE
                      - PLUME
        '502':
          description: تعذر على مزود AML إكمال الفحص. أعد المحاولة لاحقاً.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            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"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.wallet_screening.screen(
                wallet_address="0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                blockchain="ETH",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: |-
            import Didit from "@didit-protocol/sdk-node";

            // Reads DIDIT_API_KEY.
            const didit = new Didit();

            const result = await didit.walletScreening.screen({
              wallet_address: "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
              blockchain: "ETH",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.WalletScreening.Screen(ctx, didit.WalletScreeningScreenParams{\n\tWalletAddress: \"0x94f1b9b64e2932f6a2db338f616844400cd58e8a\",\n\tBlockchain:    didit.Some(didit.WalletScreeningScreenParamsBlockchain(\"ETH\")),\n})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;

            import me.didit.types.WalletScreeningScreenParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.walletScreening().screen(WalletScreeningScreenParams.builder()
                    .walletAddress("0x94f1b9b64e2932f6a2db338f616844400cd58e8a")
                    .blockchain(WalletScreeningScreenParams.Blockchain.of("ETH"))
                    .build());
            System.out.println(result);
        - lang: php
          label: PHP
          source: |-
            <?php

            require 'vendor/autoload.php';

            use Didit\DiditClient;

            // Reads DIDIT_API_KEY.
            $didit = new DiditClient();

            $result = $didit->walletScreening->screen([
                'wallet_address' => '0x94f1b9b64e2932f6a2db338f616844400cd58e8a',
                'blockchain' => 'ETH',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

            # Reads DIDIT_API_KEY.
            didit = Didit::Client.new

            result = didit.wallet_screening.screen(
              wallet_address: "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
              blockchain: "ETH"
            )
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var result = await client.WalletScreening.ScreenAsync(new
            WalletScreeningScreenParams

            {
                WalletAddress = "0x94f1b9b64e2932f6a2db338f616844400cd58e8a",
                Blockchain = new WalletScreeningScreenParamsBlockchain("ETH"),
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    WalletScreeningResult:
      type: object
      properties:
        provider:
          type: string
          description: المزود الذي أجرى الفحص (مثل `merklescience`، `crystal`).
        screening_type:
          type: string
          enum:
            - WALLET_SCREENING
          description: دائماً `WALLET_SCREENING` لهذا الـ endpoint.
        risk_score:
          type: integer
          description: >-
            درجة مخاطر معيارية من 0 إلى 100. تعني القيمة الأعلى تعرضاً أكبر
            للجهات عالية المخاطر. تقيّم Merkle Science العنوان من 0 إلى 5، وهو
            ما يقابل 0 أو 15 أو 35 أو 55 أو 75 أو 95.
        severity:
          type: string
          enum:
            - UNKNOWN
            - LOW
            - MEDIUM
            - HIGH
            - CRITICAL
          description: >-
            فئة المخاطر المشتقة من `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` أبداً على أنها تصنيف مؤكد لمخاطر
            منخفضة أو حالة خالية من المخاطر؛ ولا تعرضها كحالة اجتياز.
        status:
          type: string
          enum:
            - SCREENED
            - PENDING
            - ERROR
          description: حالة نتيجة الفحص.
        summary:
          type: string
          description: ملخص مقروء للبشر لنتيجة الفحص.
        wallet_address:
          type: string
          description: العنوان الذي تم فحصه، مع إعادته كما هو.
        transaction_hash:
          type: string
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        blockchain:
          type: string
          description: البلوكتشين التي تم فحصها.
        block_timestamp:
          type: string
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        total_value_usd:
          type: number
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        fee_usd:
          type: number
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        sender_rows:
          type: array
          items:
            type: object
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون فارغاً في
            نتيجة فحص المحافظ.
        receiver_rows:
          type: array
          items:
            type: object
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون فارغاً في
            نتيجة فحص المحافظ.
        transaction_flows:
          type: array
          items:
            type: object
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون فارغاً في
            نتيجة فحص المحافظ.
        transaction_flows_status:
          type: string
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        transaction_flows_error:
          type: string
          nullable: true
          description: >-
            حقل فحص المعاملات، مشترك مع هيكل النتيجة. دائماً ما يكون `null` في
            نتيجة فحص المحافظ.
        source_of_funds:
          type: array
          description: >-
            الجهة التي استلم منها العنوان الأموال، منسوبة بحسب الكيان. كل إدخال
            يمثل تفصيلاً للتعرّض.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  فئة مخاطر معيارية، مثل `exchange_licensed` أو `dex` أو `defi`
                  أو `payment_processor` أو `mixer` أو `darknet_market` أو
                  `sanctioned` أو `stolen_funds` أو `high_risk_exchange`.
              percentage:
                type: number
                description: حصة التعرض الإجمالي للاتجاه، 0-100.
              amount_usd:
                type: number
                nullable: true
                description: القيمة بالدولار الأمريكي المنسوبة إلى هذا الكيان.
              entity_name:
                type: string
                nullable: true
                description: >-
                  اسم الكيان المنسوب، على سبيل المثال منصة تداول أو خدمة خلط
                  معاملات (mixer) أو مجموعة خاضعة للعقوبات.
              entity_type:
                type: string
                nullable: true
                description: >-
                  نوع كيان المزود (مثل `Exchange`، `DeFi`، `Sanctions`،
                  `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  نوع فرعي أكثر تفصيلاً (مثل `Mandatory KYC and AML` و `OFAC` و
                  `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  عدد القفزات إلى الكيان (1 للطرف المقابل المباشر)، عندما يبلغ
                  المزود عنها. دائماً `null` لـ Merkle Science، التي تبلغ فقط
                  عما إذا كان التعرض مباشراً أو غير مباشر: استخدم
                  `exposure_type`.
              description:
                type: string
                nullable: true
                description: '`entity_type / entity_subtype`، كما يسمّي المزود الكيان.'
              is_direct:
                type: boolean
                description: تكون القيمة True عندما يكون `exposure_type` هو `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  ما إذا كانت الأموال واردة من (`incoming`) هذا الكيان أو صادرة
                  إليه (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: التعرّض `direct` (وثبة واحدة) أو `indirect` (متعدد الوثبات).
              provider_entity_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود للكيان.
              provider_entity_type_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود لـ `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود لـ `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  الدولة الأساسية للكيان وفقاً لرمز ISO 3166-1 alpha-2. تكون
                  فارغة أو `null` عندما لا يعرفها المزود.
              raw_amount:
                type: number
                nullable: true
                description: المبلغ بالوحدة الخاصة بالأصل، عندما يبلغ المزود عنه.
              raw_currency:
                type: string
                nullable: true
                description: وحدة `raw_amount`، عندما يبلغ عنها المزود.
        destination_of_funds:
          type: array
          description: >-
            الجهة التي أرسل إليها العنوان الأموال، منسوبة بحسب الكيان. نفس هيكل
            عناصر `source_of_funds` مع `exposure_direction` = `outgoing`.
          items:
            type: object
            properties:
              category:
                type: string
                description: >-
                  فئة مخاطر معيارية، مثل `exchange_licensed` أو `dex` أو `defi`
                  أو `payment_processor` أو `mixer` أو `darknet_market` أو
                  `sanctioned` أو `stolen_funds` أو `high_risk_exchange`.
              percentage:
                type: number
                description: حصة التعرض الإجمالي للاتجاه، 0-100.
              amount_usd:
                type: number
                nullable: true
                description: القيمة بالدولار الأمريكي المنسوبة إلى هذا الكيان.
              entity_name:
                type: string
                nullable: true
                description: >-
                  اسم الكيان المنسوب، على سبيل المثال منصة تداول أو خدمة خلط
                  معاملات (mixer) أو مجموعة خاضعة للعقوبات.
              entity_type:
                type: string
                nullable: true
                description: >-
                  نوع كيان المزود (مثل `Exchange`، `DeFi`، `Sanctions`،
                  `Theft`).
              entity_subtype:
                type: string
                nullable: true
                description: >-
                  نوع فرعي أكثر تفصيلاً (مثل `Mandatory KYC and AML` و `OFAC` و
                  `Yield Aggregator`).
              hops:
                type: integer
                nullable: true
                description: >-
                  عدد القفزات إلى الكيان (1 للطرف المقابل المباشر)، عندما يبلغ
                  المزود عنها. دائماً `null` لـ Merkle Science، التي تبلغ فقط
                  عما إذا كان التعرض مباشراً أو غير مباشر: استخدم
                  `exposure_type`.
              description:
                type: string
                nullable: true
                description: '`entity_type / entity_subtype`، كما يسمّي المزود الكيان.'
              is_direct:
                type: boolean
                description: تكون القيمة True عندما يكون `exposure_type` هو `direct`.
              exposure_direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                description: >-
                  ما إذا كانت الأموال واردة من (`incoming`) هذا الكيان أو صادرة
                  إليه (`outgoing`).
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                description: التعرّض `direct` (وثبة واحدة) أو `indirect` (متعدد الوثبات).
              provider_entity_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود للكيان.
              provider_entity_type_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود لـ `entity_type`.
              provider_entity_subtype_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود لـ `entity_subtype`.
              country:
                type: string
                nullable: true
                description: >-
                  الدولة الأساسية للكيان وفقاً لرمز ISO 3166-1 alpha-2. تكون
                  فارغة أو `null` عندما لا يعرفها المزود.
              raw_amount:
                type: number
                nullable: true
                description: المبلغ بالوحدة الخاصة بالأصل، عندما يبلغ المزود عنه.
              raw_currency:
                type: string
                nullable: true
                description: وحدة `raw_amount`، عندما يبلغ عنها المزود.
        counterparty_connections:
          type: array
          description: >-
            الكيانات التي ينسب إليها المزود العنوان المفحوص. بالنسبة لـ Merkle
            Science، تأتي هذه من علامات المالك والمستخدم الخاصة بالعنوان نفسه،
            لذا يمكن أن يظهر الكيان نفسه مرتين، ولا تحمل تدفقات أموال: الحقول
            `received_usd` و`sent_usd` و`received_hops` و`sent_hops` تكون `null`
            والنسبة `percentage` تكون 0. لا تعتمد في التوجيه على `risk_level` أو
            `is_direct` هنا: استخدم `sanctions_hit` و`dominant_risk_category`
            و`risk_factors[].is_high_risk` للقرار، واستخدم `exposure_type` في
            `source_of_funds`/`destination_of_funds` لمعرفة مدى المباشرة.
          items:
            type: object
            properties:
              entity_name:
                type: string
                nullable: true
                description: اسم الكيان المنسوب.
              entity_type:
                type: string
                nullable: true
                description: نوع كيان المزود.
              entity_subtype:
                type: string
                nullable: true
                description: النوع الفرعي لكيان المزود.
              risk_level:
                type: string
                description: >-
                  بأحرف صغيرة وتعتمد على المزود. بالنسبة لـ Merkle Science، فهي
                  درجة المخاطر الخاصة بالعنوان نفسه من 0 إلى 5 (`no_risk`،
                  `low`، `medium_low`، `medium`، `high`، `critical`)، والتي يتم
                  رفعها إلى `high` عندما تكون فئة الكيان عالية المخاطر؛ وليست
                  درجة منفصلة للكيان.
              categories:
                type: array
                items:
                  type: string
                description: فئات المخاطر المعيارية للكيان.
              received_usd:
                type: number
                nullable: true
                description: >-
                  المبلغ بالدولار الأمريكي المستلم من الكيان، عندما يبلغ المزود
                  عنه.
              sent_usd:
                type: number
                nullable: true
                description: >-
                  المبلغ بالدولار الأمريكي المرسل إلى الكيان، عندما يبلغ المزود
                  عنه.
              received_hops:
                type: integer
                nullable: true
                description: القفزات إلى الكيان في جانب الاستلام، عندما يبلغ عنها المزود.
              sent_hops:
                type: integer
                nullable: true
                description: القفزات إلى الكيان في جانب الإرسال، عندما يبلغ عنها المزود.
              percentage:
                type: number
                description: حصة تعرض العنوان، عندما يُبلغ عنها المزود؛ وإلا تكون 0.
              is_direct:
                type: boolean
                description: >-
                  دائماً `true` لـ Merkle Science، التي تُعد روابطها إسنادات
                  وليست أطرافاً مقابلة.
              country:
                type: string
                nullable: true
                description: دولة الكيان، عندما تكون معروفة.
              provider_entity_id:
                type: string
                nullable: true
                description: المعرّف الخاص بالمزود للكيان.
        network_nodes:
          type: array
          items:
            type: object
          description: عقد مخطط التعرض لفحص المعاملات. تكون فارغة في نتيجة فحص المحافظ.
        network_edges:
          type: array
          items:
            type: object
          description: حواف مخطط التعرض لفحص المعاملات. تكون فارغة في نتيجة فحص المحافظ.
        sanctions_hit:
          type: boolean
          description: >-
            تكون القيمة True إذا كان العنوان مرتبطاً بتعرّض مباشر أو غير مباشر
            للعقوبات.
        pep_counterparty:
          type: boolean
          description: >-
            التعرض لشخص معرض سياسياً. تكون `null` عندما لا تتوفر أي نتيجة متعلقة
            بـ PEP، وهي كل النتائج اليوم لعدم وجود أي مزود يبلغ عن ذلك؛ وتكون
            `false` فقط عند وجود نتيجة فحص سلبية صريحة. لا تعتبر `null` بمثابة
            فحص PEP مكتمل.
          nullable: true
        dominant_risk_category:
          type: string
          nullable: true
          description: >-
            فئة المخاطر العالية ذات الوزن الأعلى، أو `null` عند عدم وجود فئة
            مهيمنة (مثل `sanctioned` أو `mixer` أو `stolen_funds`).
        risk_factors:
          type: array
          description: >-
            تفسير مرتب لـ `risk_score`: ما أدى إلى هذا القرار. يقيّم المزودون
            العنوان بناءً على نموذجهم الخاص ويُرجعون قراراً فقط (تُرجع Merkle
            Science عدداً صحيحاً من 0 إلى 5)، وبالتالي فإن الدرجة وحدها لا تكفي
            لاتخاذ إجراء. مرتبة حسب مستوى المخاطر، بدءاً بالمخاطر الأعلى، ثم حسب
            القيمة المنقولة عبر كل محرك، بحد أقصى أقوى خمسة محركات؛ يحتوي كل من
            `source_of_funds` و`destination_of_funds` دائماً على التفصيل الكامل.
            يعني وجود `risk_score` مرتفع دون إدخال `is_high_risk` أن المزود لم
            يُبلغ عن أي عقوبات أو تطابق مع كيان منسوب، وقام بتقييم العنوان
            بالكامل بناءً على نموذج التعرض الخاص به - يوضح `summary` ذلك صراحةً.
          items:
            type: object
            properties:
              source:
                type: string
                enum:
                  - attribution
                  - exposure
                description: >-
                  `attribution` هو ما يحدده المزود بشأن ماهية العنوان نفسه (وسمه
                  أو تجمعه الخاص)؛ بينما `exposure` هو المكان الذي تحركت إليه
                  أمواله بالفعل.
              category:
                type: string
                description: فئة مخاطر معيارية، بنفس المفردات المستخدمة في تفصيل التعرض.
              label:
                type: string
                description: >-
                  الصياغة الخاصة بالمزود للعامل (مثل `Gambling / Crypto only`)،
                  وهي ما ستراه أيضاً في لوحة تحكم المزود.
              entity_name:
                type: string
                nullable: true
                description: >-
                  الكيان المنسوب الذي يقف وراء العامل الدافع، على سبيل المثال
                  موقع مقامرة أو منصة تداول.
              direction:
                type: string
                enum:
                  - incoming
                  - outgoing
                  - connected
                  - unknown
                  - attribution
                description: >-
                  اتجاه تدفق الأموال، ويكون `attribution` عندما يكون المحرك هو
                  الوسم الخاص بالعنوان نفسه، أو `unknown` عندما لا يبلغ المزود
                  عن اتجاه.
              exposure_type:
                type: string
                enum:
                  - direct
                  - indirect
                  - unknown
                  - attribution
                description: >-
                  `direct` (وثبة واحدة) أو `indirect` (متعدد الوثبات)، أو
                  `attribution` للعلامة الخاصة بالعنوان نفسه، أو `unknown` عندما
                  لا يحدد المزود عدد الوثبات التي يبعدها الطرف المقابل. تعامل مع
                  `unknown` على أنها غير مصنفة وليست `direct`.
              amount_usd:
                type: number
                format: float
                nullable: true
                description: القيمة بالدولار الأمريكي المنسوبة إلى هذا العامل.
              percentage:
                type: number
                format: float
                description: >-
                  حصة الحجم الإجمالي المفحوص للعنوان، لكلا الاتجاهين معاً - على
                  عكس `percentage` داخل
                  `source_of_funds`/`destination_of_funds`، والتي يتم توحيد
                  معيارها لكل اتجاه. قابلة للمقارنة والجمع عبر القائمة بأكملها.
              is_high_risk:
                type: boolean
                description: >-
                  ما إذا كانت الفئة ضمن الفئات التي تعاملها Didit على أنها عالية
                  المخاطر (`sanctioned`، `mixer`، `stolen_funds`، `ransomware`،
                  `scam`، `darknet_market`، `terrorist_financing`،
                  `child_exploitation`، `hacked_exchange`، `high_risk_exchange`،
                  `seized_funds`).
              description:
                type: string
                description: >-
                  عرض في سطر واحد للعامل المؤثر، على سبيل المثال `9.01% indirect
                  outgoing exposure to Gambling / Crypto only (Example
                  Gambling)`.
        raw_response:
          type: object
          additionalProperties: true
          description: >-
            الـ payload الخاص بالمزود نفسه. بنيته خاصة بالمزود ويمكن أن تتغير
            دون إشعار مسبق: اقرأ الحقول الموحدة بدلاً من تحليله برمجياً.
        report_signature:
          type: string
          description: >-
            توقيع HMAC-SHA256 مبهم لهذه النتيجة بالذات، ونطاقه محدد لتطبيقك. ليس
            له معنى بمفرده — أعد إرسال جسم الاستجابة بالكامل، دون تعديل وبما
            يشمل هذا الحقل، إلى `POST /v3/wallet-screening/pdf/` لعرضه كملف PDF.
            يرفض الـ endpoint الخاص بـ PDF الطلب برمز `400` إذا كان
            `report_signature` مفقوداً أو إذا تم تعديل أي حقل موقّع (مثل
            `risk_score`، `severity`، `sanctions_hit`) قبل إعادة الإرسال.
      required:
        - provider
        - screening_type
        - risk_score
        - severity
        - status
        - summary
        - wallet_address
        - blockchain
        - sanctions_hit
        - dominant_risk_category
        - source_of_funds
        - destination_of_funds
        - counterparty_connections
        - report_signature
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        مفتاح API الخاص بتطبيقك، من Developers -> API keys في Business Console.
        يمتلك المفتاح الأساسي وصولاً كاملاً. يمكن تحديد نطاق المفتاح المسمى: لا
        شيء، أو قراءة، أو كتابة لكل مورد، ومحدوداً ببعض مسارات العمل أو بالجلسات
        المقبولة، وبقائمة من عناوين IP، وبتاريخ انتهاء الصلاحية. يشير 401 إلى أن
        المفتاح غير صحيح أو ملغى أو منتهي الصلاحية؛ ويشير 403 إلى أنه لم يتم
        إرسال أي مفتاح، أو أن المفتاح ليس لديه حق الوصول إلى هذا المورد أو
        الإجراء، أو أن الطلب جاء من عنوان خارج قائمة عناوين IP الخاصة به؛ ويشير
        404 في مسار جلسة إلى أن الجلسة خارج مسارات العمل أو الحالات الخاصة
        بالمفتاح. يتلقى المفتاح الذي لا يمتلك حق الوصول إلى الوسائط عناوين URL
        للصور ومقاطع الفيديو وملفات PDF كـ null، ويتلقى المفتاح الذي لا يمتلك
        إذن كتابة للجلسات روابط الجلسة وtoken كـ null. راجع
        https://docs.didit.me/console/api-keys.

````

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