> ## 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.

# تحديث حالة نتيجة فحص AML: تأكيد التطابقات واستبعادها

> حدّد نتائج فحص AML الفردية كتطابق مؤكد أو إيجابي كاذب أو غير حاسمة، سواءً لكل نتيجة على حدة أو دفعةً واحدة، مباشرةً من واجهة Didit البرمجية (API).



تحديث حالة نتيجة فحص AML
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`Set the review status (disposition) of AML screening hits on a Didit session — one hit, or many at once.

AML screening returns a list of HITS (potential sanction / PEP / watchlist / adverse-media matches). Each hit carries a review_status you can change to record your compliance decision. This does NOT change the overall session decision.

Two endpoints:

1\) Single hit
PATCH https://verification.didit.me/v3/session/{session_id}/update-aml-hit-status/
Body:
\- hit_id (string, required) — the "id" of the hit in the AML check's "hits" array (see GET /v3/session/{id}/decision/), for example "hit_7c1e9a40b2d35f86e0a4c912". A hit id returned in the earlier format is still accepted; the response always returns the current "id".
\- review_status (string, required) — one of "Unreviewed", "Confirmed Match", "False Positive", "Inconclusive".
\- node_id (string, optional) — graph node ID, only if the session has multiple AML checks.

2\) Bulk
PATCH https://verification.didit.me/v3/session/{session_id}/bulk-update-aml-hit-status/
Body:
\- hit_updates (array, required) — list of { "hit_id": "...", "review_status": "..." }.
\- node_id (string, optional).
All-or-nothing: if any hit_id is missing, returns 404 and nothing changes.

Authentication:
x-api-key (client API key) or a user-auth token. Privilege: write:sessions.

Status values:
\- Unreviewed — default for hits at/above the match threshold; still needs review.
\- Confirmed Match — a true match.
\- False Positive — not the same entity; default for hits below the match threshold.
\- Inconclusive — could not determine.

Reviewer decisions are PRESERVED across ongoing-monitoring re-screens.

curl — clear one hit as a false positive:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "False Positive" }'

curl — bulk:
curl -X PATCH https://verification.didit.me/v3/session/<SESSION_ID>/bulk-update-aml-hit-status/ \
-H "x-api-key: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "hit_updates": [ { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" }, { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" } ] }'

Side effects:
\- Fires a data.updated webhook.
\- Appends an activity entry (with actor attribution) to the session review trail.

Failure modes:
\- 400 — review_status not a valid value, hit_id empty, or hit_updates empty.
\- 403 — missing credentials (a wrong, revoked or expired key gets 401), or the caller lacks write:sessions.
\- 404 — session not found, no AML check, or a hit_id was not found.

Related: to change the overall AML step status (Approved/Declined/In Review) use PATCH /v3/session/{id}/features/{node_id}/update-status/ (see /sessions-api/update-feature-status).

For end-to-end Didit integration, paste in the full prompt at /integration/integration-prompt.`

\</pre>



      
      

الصق في

## ما الذي يفعله هذايُرجع فحص AML قائمة بـ**نتائج التطابق**، وهي تطابقات محتملة مع قوائم العقوبات وقواعد بيانات الأشخاص المعرّضين سياسياً وقوائم المراقبة والأخبار السلبية. لكل نتيجة `review_status` (حالتها) تبدأ بالقيمة `Unreviewed` أو `False Positive` بحسب درجة التطابق. تتيح لك نقطة النهاية هذه (أو أتمتتك) تسجيل قرار لكل نتيجة، دون تغيير قرار الجلسة الإجمالي.ابحث عن النتائج ومعرّفاتها في [قرار الجلسة](https://docs.didit.me/ar/sessions-api/retrieve-session.md)، أي مصفوفة `hits` في فحص AML، حيث يكون `id` لكل نتيجة هو `hit_id` الذي تمرره هنا.يبدأ معرّف النتيجة `id` بـ `hit_` يليه 24 محرفاً سداسي عشرياً، ويبقى ثابتاً عند إعادة فحص الشخص. ما زال المعرّف المُعاد بالصيغة السابقة مقبولاً، لكن الاستجابة تذكر النتيجة دائماً بمعرّفها `id` الحالي.## حالات المراجعة| `review_status` | المعنى |
| - | - |
| `Unreviewed` | القيمة الافتراضية للنتائج عند الحد أو أعلى منه، وما زالت تحتاج إلى قرار. |
| `Confirmed Match` | تطابق حقيقي مع الشخص أو الكيان الذي جرى فحصه. |
| `False Positive` | ليس الكيان نفسه. القيمة الافتراضية للنتائج التي تقل درجة تطابقها عن الحد. |
| `Inconclusive` | تعذّر تحديدها. |> [!NOTE]
>
> تُحفظ قرارات المراجِع **عبر إعادات الفحص في المراقبة المستمرة**، فالنتيجة التي تضع عليها `False Positive` تحتفظ بهذه الحالة عندما يعيد المزوّد فحص الكيان.## تحديث نتيجة واحدة**`PATCH /v3/session/{sessionId}/update-aml-hit-status/`**```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_id": "hit_7c1e9a40b2d35f86e0a4c912",
    "review_status": "False Positive"
  }'
```بالنسبة إلى جلسة تحتوي على فحوصات AML متعددة (سير عمل قائمة على المخططات)، أضف `?node_id=feature_aml_1` إلى عنوان URL، أو أدرج `"node_id"` في الجسم لاستهداف فحص محدد.## تحديث نتائج كثيرة دفعة واحدة**`PATCH /v3/session/{sessionId}/bulk-update-aml-hit-status/`**مرّر `hit_updates`، وهي قائمة من أزواج `{ hit_id, review_status }`. العملية **كل شيء أو لا شيء**: إذا كان أيٌّ من قيم `hit_id` غير موجود، يُرجع الطلب الرمز `404` ولا تتغير أي نتيجة.```bash theme={null}
curl -X PATCH https://verification.didit.me/v3/session/4c5c7f3a-.../bulk-update-aml-hit-status/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hit_updates": [
      { "hit_id": "hit_7c1e9a40b2d35f86e0a4c912", "review_status": "Confirmed Match" },
      { "hit_id": "hit_3b8f20d6a91c4e75f0b2d6a8", "review_status": "False Positive" }
    ]
  }'
```يُطلق الاستدعاء الجماعي الناجح حدث webhook واحداً هو `data.updated`، ويسجّل إدخال نشاط واحداً يشمل كل التغييرات.## ما الذي يحدث بعد التحديث- **Webhook**: يُطلق حدث `data.updated` على الجلسة.
- **سجل التدقيق**: يُسجَّل التغيير في مسار مراجعة الجلسة مع الجهة المنفذة (مفتاح API أو المستخدم)، ويظهر في الخط الزمني للنشاط في الكونسول.
- **حالة خطوة AML الإجمالية لا تتأثر**: تغيير حالة نتيجة لا يغيّر بحد ذاته حالة خطوة AML أو قرار الجلسة. لتغيير حالة **الخطوة** في AML (`Approved` / `Declined` / `In Review`)، استخدم [تحديث حالة الميزة](https://docs.didit.me/ar/sessions-api/update-feature-status.md). ولتغيير قرار **الجلسة**، استخدم [تحديث الحالة](https://docs.didit.me/ar/sessions-api/update-status.md).## دعم KYC وKYBيعمل هذا مع جلسات **التحقق من المستخدم (KYC)** و**التحقق من الشركات (KYB)** على حد سواء، إذ يحدد Didit `sessionId` في النوعين. في حالة KYB، يُجرى فحص AML على الشركة وعلى أشخاصها الرئيسيين، ويعرض كل فحص AML نتائجه الخاصة.## الإذنيتطلب الصلاحية `write:sessions`، مع مفتاح API للعميل (`x-api-key`) أو رأس تفويض المستخدم.## الأخطاء| الحالة | المعنى |
| - | - |
| `400` | قيمة `review_status` غير صالحة، أو `hit_id` فارغ، أو `hit_updates` فارغة. |
| `403` | بيانات الاعتماد مفقودة أو غير صالحة، أو أن المستدعي لا يملك الصلاحية `write:sessions`. |
| `404` | الجلسة غير موجودة، أو أن الجلسة لا تحتوي على فحص AML، أو أن `hit_id` غير موجود (في الاستدعاء الجماعي: لا يتغير أي شيء). |## ذات صلة- [تحديث حالة الميزة](https://docs.didit.me/ar/sessions-api/update-feature-status.md): تغيير حالة **خطوة** AML (أو أي خطوة أخرى).
- [تحديث حالة الجلسة](https://docs.didit.me/ar/sessions-api/update-status.md): تغيير قرار الجلسة الإجمالي.
- [استرجاع الجلسة](https://docs.didit.me/ar/sessions-api/retrieve-session.md): قراءة مصفوفة `hits` في AML ومعرّفاتها.
- [فحص AML](https://docs.didit.me/ar/standalone-apis/aml-screening.md): كيفية عمل الفحص واحتساب الدرجات.


## OpenAPI

````yaml ar/openapi-25.json PATCH /v3/session/{sessionId}/update-aml-hit-status/
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/session/{sessionId}/update-aml-hit-status/:
    patch:
      tags:
        - Sessions
      summary: تحديث حالة مراجعة نتيجة مطابقة AML
      description: >-
        تعيين حالة مراجعة **نتيجة مطابقة واحدة في AML** (مطابقة محتملة في
        العقوبات / شخص معرض سياسياً / قائمة المراقبة / الأخبار السلبية) ناتجة عن
        فحص AML، دون تغيير قرار الجلسة الإجمالي. حدد نتيجة المطابقة بواسطة
        `hit_id` الخاص بها (معرّف `id` لإدخال في مصفوفة `hits` لفحص AML — راجع
        قرار الجلسة). يظل معرّف نتيجة المطابقة بصيغته السابقة مقبولاً؛ وتُسمي
        الاستجابة دائماً نتيجة المطابقة بمعرّفها `id` الحالي.


        تكون قيمة `review_status` إحدى القيم التالية: `Unreviewed` أو `Confirmed
        Match` أو `False Positive` أو `Inconclusive`. يتم الاحتفاظ بقرارات
        المراجِع عبر تحديثات المراقبة المستمرة، وبالتالي فإن نتيجة المطابقة التي
        تُحددها كـ `False Positive` تظل كذلك عند إعادة الفحص بواسطة المزود.


        يُطلق الاستدعاء الناجح حدث webhook من نوع `data.updated` ويُلحق إدخال
        نشاط (مع نسبة الإجراء إلى منفذه) بمسار مراجعة الجلسة. بالنسبة لسير العمل
        القائم على المخطط مع عمليات فحص AML متعددة، مرّر `node_id` لاستهداف فحص
        محدد.


        قم بالمصادقة باستخدام مفتاح API الخاص بك (`x-api-key`) أو رأس تفويض
        المستخدم — ويجب أن يحمل أي منهما صلاحية `write:sessions`.
      operationId: patch_v3_session_update_aml_hit_status
      parameters:
        - in: path
          name: sessionId
          required: true
          description: >-
            معرّف UUID لجلسة التحقق. يقبل معرّفات جلسات المستخدمين (KYC)
            والشركات (KYB) — يطابق الخادم المعرّف عبر كلا نوعي الجلسات.
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - in: query
          name: node_id
          required: false
          description: >-
            معرّف عقدة مخطط سير العمل. مطلوب فقط عندما تحتوي الجلسة على فحوصات
            AML متعددة (واحد لكل عقدة)؛ احذفه للجلسات ذات فحص AML الفردي.
          schema:
            type: string
            example: feature_aml_1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - hit_id
                - review_status
              properties:
                hit_id:
                  type: string
                  description: >-
                    معرّف `id` الخاص بالمطابقة في مصفوفة `hits` لفحص AML‏
                    (`hit_...`). لا يزال معرّف المطابقة المُرجع بالصيغة السابقة
                    مقبولاً.
                  example: hit_7c1e9a40b2d35f86e0a4c912
                review_status:
                  type: string
                  description: حالة المراجعة الجديدة لنتيجة التطابق.
                  enum:
                    - Unreviewed
                    - Confirmed Match
                    - False Positive
                    - Inconclusive
                  example: False Positive
                node_id:
                  type: string
                  description: >-
                    معرّف اختياري لعقدة المخطط. استخدمه (هنا أو كمعامل استعلام)
                    عندما تتضمن الجلسة عمليات فحص AML متعددة.
                  example: feature_aml_1
            example:
              hit_id: hit_7c1e9a40b2d35f86e0a4c912
              review_status: False Positive
      responses:
        '200':
          description: تم تحديث حالة مراجعة التطابق.
          content:
            application/json:
              schema:
                type: object
                required:
                  - message
                  - hit_id
                  - review_status
                properties:
                  message:
                    type: string
                    description: دائماً `Hit status updated successfully`.
                  hit_id:
                    type: string
                    description: >-
                      معرّف `id` الخاص بالمطابقة المحدّثة، كما يرجعه قرار
                      الجلسة، وكذلك عندما يحدد الطلب المطابقة بمعرّف بالصيغة
                      السابقة.
                  review_status:
                    type: string
                    enum:
                      - Unreviewed
                      - Confirmed Match
                      - False Positive
                      - Inconclusive
                    description: حالة المراجعة المخزنة حالياً في النتيجة المطابقة.
              example:
                message: Hit status updated successfully
                hit_id: hit_7c1e9a40b2d35f86e0a4c912
                review_status: False Positive
        '400':
          description: >-
            خطأ في التحقق من الصحة — حقل `hit_id` فارغ أو حقل `review_status`
            ليس إحدى القيم المسموح بها.
          content:
            application/json:
              example:
                review_status:
                  - '"Maybe" is not a valid choice.'
        '403':
          description: >-
            بيانات اعتماد مفقودة أو أذونات غير كافية. يؤدي المفتاح المفقود إلى
            إرجاع `403`؛ بينما يؤدي المفتاح الخاطئ أو الملغى أو منتهي الصلاحية
            إلى إرجاع `401`.
          content:
            application/json:
              examples:
                Invalid Credentials:
                  summary: x-api-key مفقود أو غير صالح
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
                Missing Privilege:
                  summary: يفتقر مفتاح API إلى write:sessions
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: >-
            لم يتم العثور على الجلسة، أو ليس لدى الجلسة فحص AML (اختيارياً لـ
            `node_id` المحدد)، أو لا توجد نتيجة تطابق `hit_id`.
          content:
            application/json:
              examples:
                No AML Check:
                  summary: لا تحتوي الجلسة على فحص AML
                  value:
                    detail: The session does not have an AML check.
                Hit Not Found:
                  summary: hit_id غير معروف
                  value:
                    detail: >-
                      Hit with ID 'hit_9d2e7f41c0a8b3e65d1f0c47' not found in
                      the AML check.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X PATCH \
              https://verification.didit.me/v3/session/11111111-2222-3333-4444-555555555555/update-aml-hit-status/ \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{
                "hit_id": "abc123",
                "review_status": "False Positive"
              }'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.update_aml_hit_status(
                "11111111-2222-3333-4444-555555555555",
                hit_id="hit_7c1e9a40b2d35f86e0a4c912",
                review_status="False Positive",
            )
            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.sessions.updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            {
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.UpdateAMLHitStatus(ctx, \"11111111-2222-3333-4444-555555555555\", didit.SessionsUpdateAMLHitStatusParams{\n\tHitID:        \"hit_7c1e9a40b2d35f86e0a4c912\",\n\tReviewStatus: \"False Positive\",\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.SessionsUpdateAmlHitStatusParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().updateAmlHitStatus("11111111-2222-3333-4444-555555555555",
            SessionsUpdateAmlHitStatusParams.builder()
                    .hitId("hit_7c1e9a40b2d35f86e0a4c912")
                    .reviewStatus(SessionsUpdateAmlHitStatusParams.ReviewStatus.of("False Positive"))
                    .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->sessions->updateAmlHitStatus('11111111-2222-3333-4444-555555555555',
            [
                'hit_id' => 'hit_7c1e9a40b2d35f86e0a4c912',
                'review_status' => 'False Positive',
            ]);

            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.update_aml_hit_status(
              "11111111-2222-3333-4444-555555555555",
              hit_id: "hit_7c1e9a40b2d35f86e0a4c912",
              review_status: "False Positive"
            )
            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.Sessions.UpdateAmlHitStatusAsync("11111111-2222-3333-4444-555555555555",
            new SessionsUpdateAmlHitStatusParams

            {
                HitId = "hit_7c1e9a40b2d35f86e0a4c912",
                ReviewStatus = "False Positive",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  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.