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

> اعرض ملاحظات المعاملة المراقبة من الأحدث إلى الأقدم في Didit: ملاحظات API والمراجِعين والقواعد وتغييرات الحالة، مع ترقيم بالحد والإزاحة.



موجّه واجهة برمجة التطبيقات لسرد ملاحظات المعاملة
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`List the notes on one Didit monitored transaction through the Management API.

Endpoint:
GET https://verification.didit.me/v3/transactions/{transaction_id}/notes/

Authentication:
Use the x-api-key header with my Didit API key. A scoped key needs transactions: read. Keys limited to specific workflows or to approved sessions cannot call this endpoint.

Goal:
\- Read the review timeline of a transaction (my own API notes, Console reviewer notes, and the notes Didit adds automatically) so I can show it in my back-office or sync it to my case tool.

Path parameter:
\- transaction_id: the Didit transaction uuid returned by POST /v3/transactions/ or GET /v3/transactions/. Not my own txn_id.

Behavior:
\- Notes come back newest first (created_at descending).
\- Paginated with limit (default 50) and offset. count is exact up to 100 and capped at 100 above that, so keep following next until it is null instead of computing pages from count.
\- metadata tells the note types apart: mentioned_emails on notes written through the API or the Console; type "status_change" with previous_status, new_status, reason_code and reason_label when a reviewer changed the status in the Console; source "rule_action" (with rule_uuid) or "remediation_session" on notes Didit adds automatically, which carry actor_name "Rule Engine".

Example call:
curl -X GET "https://verification.didit.me/v3/transactions/{transaction_id}/notes/?limit=50" \
-H "x-api-key: YOUR_API_KEY"

What to read from the response:
\- results[].uuid, note, created_at: the note itself.
\- results[].actor_email and actor_name: the Console user who wrote it. Both are null for notes created with an API key.
\- results[].metadata: mentions and the note type (see Behavior).
\- next: URL of the next page, null on the last page.

Failure modes:
\- 400: limit or offset above 1000000.
\- 401: the API key has expired.
\- 403: missing API key (a wrong, revoked or expired key gets 401) ({"detail": "You do not have permission to perform this action."}), a scoped key without transactions: read, a key with workflow or status limits, or a request from outside the key's IP allowlist.
\- 404: no transaction with this uuid in my application ({"detail": "No Transaction matches the given query."}).
\- 429: more than 600 GET requests per minute with this key; wait Retry-After seconds and retry.

Side effects: none. This is a pure read.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

الصق في

الملاحظات هي الخط الزمني للمعاملة الذي يراه المحللون، وهي نفس القائمة التي يراها المراجعون ضمن **ملاحظات** في [تفاصيل المعاملة](https://docs.didit.me/ar/transaction-monitoring/console.md#تفاصيل-المعاملة) في وحدة التحكم. أضف ملاحظاتك الخاصة باستخدام [إنشاء ملاحظة معاملة](https://docs.didit.me/ar/management-api/transactions/create-note.md)، واقرأ المعاملة نفسها، بما في ذلك `activities`، باستخدام [الحصول على المعاملة](https://docs.didit.me/ar/management-api/transactions/get.md).الملاحظات التي تحمل `actor_name` بقيمة `Rule Engine` تصدر من Didit: إما إجراء `add_note` لقاعدة ما ضمن [إجراء](https://docs.didit.me/ar/transaction-monitoring/rules.md#الإجراءات)، أو مشكلة في إنشاء جلسة التحقق من إجراء المستخدم لمعاملة في حالة `AWAITING_USER` (تعذّر إنشاء الجلسة، أو لجأ Didit إلى سير عمل آخر).


## OpenAPI

````yaml ar/openapi-25.json GET /v3/transactions/{transaction_id}/notes/
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/transactions/{transaction_id}/notes/:
    get:
      tags:
        - Transactions
      summary: عرض قائمة بملاحظات المعاملة
      description: >-
        عرض الملاحظات المسجلة على معاملة خاضعة للمراقبة، الأحدث أولاً (تنازليًا
        بحسب `created_at`): الملاحظات التي تضيفها عبر API، والملاحظات وتغييرات
        الحالة التي يجريها المراجعون في لوحة التحكم، والملاحظات التي يضيفها
        Didit تلقائيًا (إجراء `add_note` الخاص بقاعدة ما، أو مشكلة في إنشاء جلسة
        تحقق من إجراء المستخدم)، والتي تحمل `actor_name` بقيمة `Rule Engine`.
        يُميز `metadata` بين أنواع الملاحظات المختلفة.


        تُعرض النتائج مقسمة إلى صفحات باستخدام `limit` و`offset`. تكون قيمة
        `count` دقيقة حتى 100 ومحددة بحد أقصى 100 بعد ذلك، لذا اتبع `next` حتى
        تصبح `null` بدلاً من حساب الصفحات استنادًا إلى `count`. هذه عملية قراءة
        دون أي آثار جانبية.


        يتطلب مفتاح API محدد النطاق صلاحية `transactions: read`؛ ولا يمكن
        للمفتاح المقتصر على بعض عمليات سير العمل أو على الجلسات المقبولة استدعاء
        هذا الـ endpoint. يرى المراجعون القائمة نفسها تحت **Notes** في [تفاصيل
        المعاملة](https://docs.didit.me/ar/transaction-monitoring/console#تفاصيل-المعاملة).
      operationId: list_transaction_notes
      parameters:
        - name: transaction_id
          in: path
          required: true
          description: >-
            معرّف UUID لمعاملة Didit: وهو `uuid` الذي تُرجعه `POST
            /v3/transactions/` و`GET /v3/transactions/`. لا يُقبل `txn_id` الخاص
            بك.
          schema:
            type: string
            format: uuid
          example: abcdef12-3456-7890-abcd-ef1234567890
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            عدد الملاحظات لكل صفحة. القيمة الافتراضية هي 50. أي قيمة ليست عدداً
            صحيحاً موجباً تعود تلقائياً إلى 50؛ وتُرجع القيمة التي تتجاوز
            1000000 الرمز `400`.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            موضع يستند إلى الصفر للملاحظة الأولى المراد إرجاعها. يُفضل اتباع
            `next`. أي قيمة ليست عدداً صحيحاً غير سالب ترجع تلقائياً إلى 0؛
            والقيمة التي تزيد عن 1000000 تُرجع `400`.
      responses:
        '200':
          description: صفحة من الملاحظات، الأحدث أولاً.
          content:
            application/json:
              schema:
                type: object
                required:
                  - count
                  - next
                  - previous
                  - results
                properties:
                  count:
                    type: integer
                    description: >-
                      عدد الملاحظات على المعاملة: دقيق حتى 100، ويقتصر على 100
                      كحد أقصى بعد ذلك. تتبّع `next` بدلاً من حساب الصفحات بناءً
                      عليه.
                  next:
                    type: string
                    format: uri
                    nullable: true
                    description: رابط URL مطلق للصفحة التالية، أو `null` في الصفحة الأخيرة.
                  previous:
                    type: string
                    format: uri
                    nullable: true
                    description: رابط URL مطلق للصفحة السابقة، أو `null` في الصفحة الأولى.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/TransactionNote'
              examples:
                API, Console and rule notes:
                  value:
                    count: 3
                    next: null
                    previous: null
                    results:
                      - uuid: c1111111-2222-4333-8444-555555555555
                        note: Customer confirmed the withdrawal by phone.
                        actor_email: null
                        actor_name: null
                        metadata:
                          mentioned_emails:
                            - analyst@example.com
                        created_at: '2026-10-16T10:05:12.481203Z'
                      - uuid: c2222222-3333-4444-8555-666666666666
                        note: >-
                          Status changed from IN_REVIEW to APPROVED. Reason:
                          Source of funds verified
                        actor_email: reviewer@example.com
                        actor_name: Alex Reviewer
                        metadata:
                          type: status_change
                          previous_status: IN_REVIEW
                          new_status: APPROVED
                          reason_code: SOF_VERIFIED
                          reason_label: Source of funds verified
                        created_at: '2026-10-15T17:22:40.103911Z'
                      - uuid: c3333333-4444-4555-8666-777777777777
                        note: >-
                          Large withdrawal to a new wallet: check the source of
                          funds.
                        actor_email: null
                        actor_name: Rule Engine
                        metadata:
                          rule_uuid: d1111111-2222-4333-8444-555555555555
                          source: rule_action
                        created_at: '2026-10-15T08:42:12.004518Z'
                No notes yet:
                  value:
                    count: 0
                    next: null
                    previous: null
                    results: []
        '400':
          description: >-
            `limit` أو `offset` أكبر من 1000000. نص الاستجابة هو مصفوفة JSON من
            الرسائل، وليس كائناً.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
              examples:
                Limit too large:
                  value:
                    - limit must not exceed 1000000.
                Offset too large:
                  value:
                    - offset must not exceed 1000000.
        '401':
          description: >-
            انتهت صلاحية مفتاح API. المفتاح الذي تم إنشاؤه مع تاريخ انتهاء هو
            فقط الذي يمكن أن تنتهي صلاحيته؛ بعد هذا التاريخ، تجيب جميع الطلبات
            باستخدامه بـ `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Expired key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            الطلب غير مسموح به. يتلقى المفتاح المفقود الرسالة العامة؛ بينما
            يتلقى المفتاح الخاطئ أو الملغى أو منتهي الصلاحية الرمز `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Missing or invalid key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without transactions read:
                  value:
                    detail: This API key has no read access to transactions.
                Key limited to workflows or approved sessions:
                  value:
                    detail: >-
                      This API key only reaches sessions inside its workflow or
                      status limits, so it can't use this endpoint.
                Outside the key's IP list:
                  value:
                    detail: This API key can't be used from this IP address.
        '404':
          description: >-
            لا توجد معاملة بمعرّف UUID هذا في التطبيق (لم يتم إنشاؤها مطلقاً، أو
            محذوفة، أو مملوكة لتطبيق آخر). إن قيمة `transaction_id` التي لا تمثل
            معرّف UUID لا تصل إلى واجهة API: بل تُرجع صفحة HTML برمز `404` بدلاً
            من نص JSON هذا.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Not found:
                  value:
                    detail: No Transaction matches the given query.
        '429':
          description: >-
            أكثر من 600 طلب GET في الدقيقة باستخدام مفتاح API هذا. انتظر لعدد
            الثواني المحدد في `Retry-After`، ثم أعد المحاولة.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                Throttled:
                  value:
                    detail: >-
                      GET request rate limit exceeded. You can make up to 600
                      requests per minute.
          headers:
            Retry-After:
              description: عدد الثواني حتى إعادة تعيين النافذة الحالية البالغة دقيقة واحدة.
              schema:
                type: integer
                example: 23
            X-RateLimit-Limit:
              description: الطلبات المسموح بها في الدقيقة ضمن هذه الميزانية.
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: الطلبات المتبقية في النافذة الحالية.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: توقيت Unix عند إعادة تعيين النافذة.
              schema:
                type: integer
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/transactions/abcdef12-3456-7890-abcd-ef1234567890/notes/?limit=50'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            for item in client.transactions.notes.list(
                "abcdef12-3456-7890-abcd-ef1234567890",
            ):
                print(item)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            for await (const item of
            didit.transactions.notes.list("abcdef12-3456-7890-abcd-ef1234567890"))
            {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Transactions.Notes.ListAutoPaging(ctx, \"abcdef12-3456-7890-abcd-ef1234567890\", didit.TransactionsNotesListParams{})\nfor iter.Next() {\n\tfmt.Printf(\"%+v\\n\", iter.Current())\n}\nif err := iter.Err(); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            for (var item :
            client.transactions().notes().list("abcdef12-3456-7890-abcd-ef1234567890"))
            {
                System.out.println(item);
            }
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            foreach
            ($didit->transactions->notes->list('abcdef12-3456-7890-abcd-ef1234567890')
            as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: >-
            require "didit"


            # Reads DIDIT_API_KEY.

            didit = Didit::Client.new


            didit.transactions.notes.list("abcdef12-3456-7890-abcd-ef1234567890").auto_paging_each
            do |item|
              puts item.to_h
            end
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            await foreach (var item in await
            client.Transactions.Notes.ListAsync("abcdef12-3456-7890-abcd-ef1234567890"))

            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    TransactionNote:
      type: object
      description: ملاحظة واحدة في الجدول الزمني لمراجعة المعاملة الخاضعة للمراقبة.
      required:
        - uuid
        - note
        - actor_email
        - actor_name
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: معرّف الملاحظة.
        note:
          type: string
          description: متن الملاحظة النصية العادية.
        actor_email:
          type: string
          format: email
          nullable: true
          description: >-
            البريد الإلكتروني لمستخدم Console الذي كتب الملاحظة أو غيّر الحالة.
            يكون `null` للملاحظات التي تم إنشاؤها باستخدام مفتاح API والملاحظات
            التي يضيفها Didit تلقائياً.
        actor_name:
          type: string
          nullable: true
          description: >-
            اسم العرض لمستخدم Console (بريده الإلكتروني إذا لم يكن لديه اسم).
            ويكون `Rule Engine` في الملاحظات التي تضيفها Didit تلقائياً. و`null`
            للملاحظات التي تم إنشاؤها باستخدام مفتاح API.
        metadata:
          type: object
          description: >-
            يميّز بين أنواع الملاحظات. تتضمن الملاحظات المكتوبة عبر API أو لوحة
            التحكم الحقل `mentioned_emails`. ويتضمن تغيير الحالة الذي يتم في
            لوحة التحكم الحقل `type: status_change` مع `previous_status`
            و`new_status` و`reason_code` و`reason_label`. أما الملاحظات التي
            تضيفها Didit فتتضمن `source`: القيمة `rule_action` (مع `rule_uuid`)
            لإجراء `add_note` الخاص بقاعدة، أو `remediation_session` لمشكلة حدثت
            أثناء إنشاء جلسة تحقق من إجراء المستخدم.
          properties:
            mentioned_emails:
              type: array
              items:
                type: string
                format: email
              description: >-
                أعضاء المؤسسة المشار إليهم، بأحرف صغيرة ودون تكرار. فارغ في حال
                عدم الإشارة إلى أي شخص.
            type:
              type: string
              enum:
                - status_change
              description: >-
                موجود في الملاحظات التي تسجل تغييراً في الحالة تم إجراؤه في لوحة
                التحكم.
            previous_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: الحالة قبل التغيير.
            new_status:
              type: string
              enum:
                - APPROVED
                - IN_REVIEW
                - DECLINED
                - AWAITING_USER
              description: الحالة بعد التغيير.
            reason_code:
              type: string
              nullable: true
              description: رمز السبب المقدم مع التغيير.
            reason_label:
              type: string
              nullable: true
              description: تسمية السبب المقدمة مع التغيير.
            source:
              type: string
              enum:
                - rule_action
                - remediation_session
              description: موجود في الملاحظات التي يضيفها Didit تلقائياً.
            rule_uuid:
              type: string
              format: uuid
              description: >-
                القاعدة التي كتب الإجراء `add_note` التابع لها الملاحظة (مع
                `source: rule_action`).
        created_at:
          type: string
          format: date-time
          description: متى تم تخزين الملاحظة.
  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.