> ## 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، أو مع contract=2 جدول زمني مقسّم إلى صفحات للمحاولات والمعاملات وتسجيلات الدخول والحالات المرتبطة.



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



      
      

\<pre>

\`Retrieve a fraud network's event timeline through the Management API.

Endpoint:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/

Authentication:
Use the x-api-key header with my Didit API key.
Networks endpoints need a full-access API key: a key with restricted access gets 403.

Path parameter:
\- network_uuid - the network's UUID.

Two shapes, chosen by the contract query parameter:

1\. Default (no contract parameter): unchanged.
Response 200: {"results": [NetworkTimelineEvent, ...]}, oldest first, not paginated.
Each event has event_type (network_detected, signal_observed, network_active, network_in_review, network_resolved, network_dismissed), occurred_at, label, and metadata (event-specific, e.g. {network_id} for detection, {signal_type, subject_count, is_hub} for a signal observation, {reason} for a status change).
limit, cursor and event_type are ignored in this mode.

2\. Typed timeline (contract=2, opt-in):
Query params:
\- contract=2: required for this mode. Any other value is a 400.
\- limit: 1 to 500, default 100.
\- cursor: the previous page's next_cursor. An invalid or empty cursor is a 400 ("This cursor is not valid. Reload the feed.").
\- event_type: repeat it or pass a comma-separated list, at most 20 values. Defaults to every type: network_detected, signal_observed, network_active, network_in_review, network_resolved, network_dismissed, verification_attempt, transaction, login, rule_hit, case_linked, note_added.
Response 200: {"results": [NetworkTypedTimelineEvent, ...], "next_cursor": string|null}, newest first. Keep calling with cursor=next_cursor until next_cursor is null.
Each typed event has:
\- event_type, occurred_at, label, metadata: as in the default shape (metadata is {} for events that are not the network's own).
\- id: "<source>:<uuid>", unique within the timeline. ingested_at: when Didit stored it.
\- account: the member account {node_id ("vendor_user:<uuid>", "vendor_business:<uuid>" or "transaction_party:<uuid>"), node_type (account|business_account|transaction_party), uuid, vendor_data, display_name, ownership (owned|organization), route {kind, id, application_id}}. Null for the network's own events, case_linked and note_added.
\- source_ref: the record it was read from {kind (session|business_session|transaction|monitoring_event|case), id, ownership, route}. route is absent for monitoring_event and case. Null for the network's own events and note_added.
\- ownership: owned when the record belongs to the application I called, organization when it belongs to another application of my organization.
\- One detail block per event type, the others null:
\- verification_attempt {session_id, session_number, attempt, attempt_count, status, status_changed_at, decline_reasons [{risk, feature, short_description}] (declined sessions only)}
\- transaction {transaction_id, transaction_number, transaction_type, action_type, amount {value, currency, direction} or null, status, decision_reason_code, decision_reason_label, party_role}
\- login {action (auth.login, security.login_succeeded, auth.login_failed or security.login_failed), succeeded, status, ip {address, country_code, city, connection_type (free text), is_vpn_or_tor, is_data_center} or null, device {fingerprint, label} or null, is_first_login, is_new_device}
\- rule_hit {rule_id, rule_title, rule_category, rule_source, severity, score_delta, status_target, action_summary}
\- case_linked {case_id, case_number, status, author_email, author_name}
\- note_added {note_id, author_email}: never returned to an API key, only to console members.

Example call:
curl -X GET "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/?contract=2&limit=50&event_type=verification_attempt,login" \
-H "x-api-key: YOUR_API_KEY"

Failure modes:
\- 400 (contract mode only): {"contract": [...]}, {"limit": [...]}, {"cursor": ["This cursor is not valid. Reload the feed."]} or {"event_type": {...}}.
\- 404: {"detail": "Network not found."}. The network does not exist, or has no member visible to this application.
\- 401: missing or invalid x-api-key.
\- 403: the API key belongs to another application, or it has restricted access (Networks needs a full-access key). A console member token needs read:networks.
\- 403 with {"code": "networks_not_entitled"}: Networks is not enabled for the organization.

Side effects: none, pure read.

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

\</pre>



      
      

الصق في

استرجع سجل الأحداث الخاص بشبكة.
بدون `contract`، تكون الاستجابة سجلّ الشبكة نفسها، من الأقدم إلى الأحدث، وغير مقسّمة إلى صفحات: متى رُصدت الشبكة لأول مرة، ومتى رُصدت آخر مرة كل إشارة، وآخر تغيير في حالة الشبكة مع سببه.
هذا الشكل لم يتغير، و`limit` و`cursor` و`event_type` يتم تجاهلها.## الخط الزمني ذي الأنواعمرّر `contract=2` لقراءة الخط الزمني ذي الأنواع بدلاً من ذلك.
يضيف ما فعلته حسابات الأعضاء وما فعله فريقك تجاه الشبكة، من الأحدث إلى الأقدم، صفحة واحدة في كل مرة.
يقبل `contract` القيمة `2` فقط؛ وأي قيمة أخرى تُرجع `400`.| المعامل | المعنى |
| - | - |
| `limit` | عدد الأحداث في كل صفحة، من 1 إلى 500. القيمة الافتراضية 100. |
| `cursor` | قيمة `next_cursor` الخاصة بالصفحة السابقة. المؤشر غير الصالح أو الفارغ يُرجع `400`. |
| `event_type` | أنواع الأحداث المراد الاحتفاظ بها، وتُكرَّر أو تُفصل بفاصلة، بحد أقصى 20 قيمة. القيمة الافتراضية جميع الأنواع. |تكون الاستجابة `{"results": [...], "next_cursor": "..."}`.
لقراءة الصفحة التالية، اضبط `cursor` على قيمة `next_cursor`، وكرّر ذلك إلى أن تصبح `next_cursor` تساوي `null`.## أنواع الأحداث| `event_type` | ما يسجّله | كتلة التفاصيل |
| - | - | - |
| `network_detected` | رُصدت الشبكة | لا شيء |
| `signal_observed` | آخر رصد لإشارة | لا شيء |
| `network_active`, `network_in_review`, `network_resolved`, `network_dismissed` | آخر تغيير في حالة الشبكة، مع سببه في `metadata` | لا شيء |
| `verification_attempt` | جلسة تحقق لأحد الأعضاء (شخص أو شركة)، مرقّمة (`attempt` من `attempt_count`)، مع أسباب الرفض عند الرفض | `verification_attempt` |
| `transaction` | معاملة شارك فيها أحد الأعضاء، مؤرخة بتاريخ المعاملة | `transaction` |
| `login` | تسجيل دخول أو محاولة تسجيل دخول فاشلة أرسلتها لأحد الأعضاء عبر [واجهة برمجة الأحداث](https://docs.didit.me/ar/transaction-monitoring/events.md) | `login` |
| `rule_hit` | قاعدة فعّالة طابقت معاملة أو حدثاً لأحد الأعضاء | `rule_hit` |
| `case_linked` | حالة فُتحت للشبكة في مؤسستك | `case_linked` |
| `note_added` | ملاحظة أُضيفت إلى الشبكة، دون نصها | `note_added` |تُعاد أحداث `note_added` لأعضاء لوحة التحكم فقط، ولا تُعاد أبداً لمفتاح API.
تظهر المعاملة بين عضوين مرة واحدة لكل منهما، ولكل منهما `account` الخاص به.
تظهر مطابقة القاعدة على تلك المعاملة مرة واحدة.
توجد أحداث تسجيل الدخول فقط لعمليات تسجيل الدخول التي ترسلها كأحداث: `auth.login` و`security.login_succeeded` وصيغهما الفاشلة.## الحسابات والسجلاتيحمل كل حدث يخص عضوًا `account`، وهو العضو الذي ينتمي إليه الحدث، و`source_ref`، وهو الجلسة أو جلسة الشركة أو المعاملة أو حدث المراقبة أو الحالة التي قُرئ منها الحدث.
تكون قيمة `ownership` هي `owned` عندما يعود السجل إلى التطبيق الذي استدعيته، وتكون `organization` عندما يعود إلى تطبيق آخر في مؤسستك.
يعطي `route` نوع السجل ومعرّف UUID الخاص به والتطبيق؛ ولا يحتوي `source_ref` على `route` لحدث مراقبة أو لحالة.
لا تحمل أحداث الشبكة نفسها `account` ولا `source_ref`.## ذات صلة- [الحصول على الشبكة](https://docs.didit.me/ar/management-api/networks/get.md)
- [إشارات الشبكة](https://docs.didit.me/ar/management-api/networks/signals.md)
- [خريطة الشبكة](https://docs.didit.me/ar/management-api/networks/map.md)
- [استيعاب الأحداث](https://docs.didit.me/ar/transaction-monitoring/events.md)


## OpenAPI

````yaml ar/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/
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/organization/{organization_id}/application/{application_id}/networks/{network_uuid}/timeline/:
    get:
      tags:
        - Networks
      summary: الحصول على المخطط الزمني للشبكة
      description: >-
        بدون `contract`: أحداث الشبكة الخاصة (الاكتشاف، وأحدث ملاحظة لكل إشارة
        ومراجعتها)، من الأقدم إلى الأحدث وغير مقسمة إلى صفحات. يتم تجاهل `limit`
        و`cursor` و`event_type`. مع `contract=2`: المخطط الزمني المُنَمَّط، من
        الأحدث إلى الأقدم ومقسم إلى صفحات عبر cursor. يضيف ما قامت به حسابات
        الأعضاء (محاولات التحقق، والمعاملات، وتسجيلات الدخول التي ترسلها عبر API
        الأحداث والقواعد المباشرة التي تنطبق عليها) والحالات المفتوحة للشبكة.
        تُعاد أحداث `note_added` لأعضاء لوحة التحكم فقط، ولا تُعاد أبداً لمفتاح
        API. يتطلب مفتاح API بصلاحية وصول كاملة، أو `read:networks` لعضو لوحة
        التحكم.
      operationId: get_network_timeline
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: UUID الخاص بالمؤسسة.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف UUID للتطبيق.
        - name: network_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: n3a5e000-0000-4000-8000-000000000001
          description: معرّف UUID للشبكة.
        - name: contract
          in: query
          required: false
          schema:
            type: string
            enum:
              - '2'
          description: >-
            `2` تُرجع الجدول الزمني المُنَمَّط. احذفها للحصول على الجدول الزمني
            الافتراضي. أي قيمة أخرى تُرجع 400.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 100
            minimum: 1
            maximum: 500
          description: >-
            المخطط الزمني المحدد النوع فقط. الأحداث لكل صفحة، من 1 إلى 500.
            القيمة الافتراضية هي 100.
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            المخطط الزمني المحدد النوع فقط. مؤشر `next_cursor` للصفحة السابقة.
            يُعيد المؤشر غير الصالح أو الفارغ الرمز 400.
        - name: event_type
          in: query
          required: false
          style: form
          explode: true
          schema:
            type: array
            maxItems: 20
            items:
              type: string
              enum:
                - network_detected
                - signal_observed
                - network_active
                - network_in_review
                - network_resolved
                - network_dismissed
                - verification_attempt
                - transaction
                - login
                - rule_hit
                - case_linked
                - note_added
          description: >-
            المخطط الزمني المقيّد بنوع فقط. أنواع الأحداث التي سيتم الاحتفاظ
            بها، مكررة أو مفصولة بفواصل، بحد أقصى 20 قيمة. الإعداد الافتراضي هو
            جميع الأنواع.
      responses:
        '200':
          description: >-
            بدون `contract`: يتم إرجاع `{results}`، الأقدم أولاً، بدون تقسيم إلى
            صفحات. مع `contract=2`: يتم إرجاع `{results, next_cursor}`، الأحدث
            أولاً.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/NetworkTimeline'
                  - $ref: '#/components/schemas/NetworkTimelinePage'
              examples:
                Default timeline:
                  summary: بدون contract
                  value:
                    results:
                      - event_type: network_detected
                        occurred_at: '2026-10-01T09:12:44Z'
                        label: Network detected
                        metadata:
                          network_id: N-0042
                      - event_type: signal_observed
                        occurred_at: '2026-10-12T16:03:10Z'
                        label: device observed
                        metadata:
                          signal_type: device
                          subject_count: 3
                          is_hub: false
                      - event_type: network_in_review
                        occurred_at: '2026-10-12T16:30:00Z'
                        label: Network in_review
                        metadata:
                          reason: Shared device across three new accounts.
                Typed timeline:
                  summary: مع contract=2
                  value:
                    results:
                      - id: monitoring_event:9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e
                        event_type: login
                        occurred_at: '2026-10-12T18:41:02Z'
                        ingested_at: '2026-10-12T18:41:03Z'
                        label: Login
                        metadata: {}
                        account:
                          node_id: vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          node_type: account
                          uuid: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          vendor_data: user-1042
                          display_name: Alex Example
                          ownership: owned
                          route:
                            kind: user
                            id: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        source_ref:
                          kind: monitoring_event
                          id: 9b2f1c3e-4d5a-4b6c-8d7e-0f1a2b3c4d5e
                          ownership: owned
                        verification_attempt: null
                        transaction: null
                        login:
                          action: auth.login
                          succeeded: true
                          status: APPROVED
                          ip:
                            address: 203.0.113.24
                            country_code: ES
                            city: Madrid
                            connection_type: null
                            is_vpn_or_tor: false
                            is_data_center: false
                          device:
                            fingerprint: fp_0a1b2c3d
                            label: Chrome · Android
                          is_first_login: false
                          is_new_device: true
                        rule_hit: null
                        case_linked: null
                        note_added: null
                      - id: session:1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                        event_type: verification_attempt
                        occurred_at: '2026-10-12T16:03:10Z'
                        ingested_at: '2026-10-12T16:03:10Z'
                        label: Verification attempt 2 of 2
                        metadata: {}
                        account:
                          node_id: vendor_user:5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          node_type: account
                          uuid: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                          vendor_data: user-1042
                          display_name: Alex Example
                          ownership: owned
                          route:
                            kind: user
                            id: 5f6e7d8c-9b0a-4c1d-8e2f-3a4b5c6d7e8f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        source_ref:
                          kind: session
                          id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                          ownership: owned
                          route:
                            kind: session
                            id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                            application_id: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                        verification_attempt:
                          session_id: 1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f
                          session_number: 1287
                          attempt: 2
                          attempt_count: 2
                          status: Approved
                          status_changed_at: '2026-10-12T16:05:41Z'
                          decline_reasons: []
                        transaction: null
                        login: null
                        rule_hit: null
                        case_linked: null
                        note_added: null
                      - id: signal_observed:8d7c6b5a-4e3f-4a2b-9c1d-0e9f8a7b6c5d
                        event_type: signal_observed
                        occurred_at: '2026-10-12T16:03:10Z'
                        ingested_at: '2026-10-01T09:12:44Z'
                        label: device observed
                        metadata:
                          signal_type: device
                          subject_count: 3
                          is_hub: false
                        account: null
                        source_ref: null
                        verification_attempt: null
                        transaction: null
                        login: null
                        rule_hit: null
                        case_linked: null
                        note_added: null
                    next_cursor: >-
                      eyJ0IjoiMjAyNi0xMC0xMlQxNjowMzoxMCswMDowMCIsImMiOiIyMDI2LTEwLTAxVDA5OjEyOjQ0KzAwOjAwIiwiciI6MSwidSI6IjhkN2M2YjVhLTRlM2YtNGEyYi05YzFkLTBlOWY4YTdiNmM1ZCJ9
        '400':
          description: >-
            عند وجود `contract`: قيمة غير صالحة لأي من `contract` أو `limit` أو
            `cursor` أو `event_type`.
          content:
            application/json:
              examples:
                Unsupported contract:
                  summary: عقد غير مدعوم
                  value:
                    contract:
                      - '"3" is not a valid choice.'
                Invalid cursor:
                  summary: مؤشر غير صالح
                  value:
                    cursor:
                      - This cursor is not valid. Reload the feed.
                Limit too large:
                  summary: الحد كبير جداً
                  value:
                    limit:
                      - Ensure this value is less than or equal to 500.
                Unknown event type:
                  summary: نوع حدث غير معروف
                  value:
                    event_type:
                      '0':
                        - '"logout" is not a valid choice.'
        '401':
          description: بيانات اعتماد مفقودة أو غير صالحة.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      موجود في الأخطاء ذات الرموز، على سبيل المثال
                      `networks_not_entitled`.
              examples:
                Missing or invalid credentials:
                  summary: بيانات اعتماد مفقودة أو غير صالحة
                  value:
                    detail: >-
                      Authentication credentials were not provided or are
                      invalid.
        '403':
          description: >-
            ينتمي مفتاح API إلى تطبيق آخر، أو أنه مفتاح ذو وصول مقيد: تتطلب
            endpoint الخاصة بـ Networks مفتاحاً كامل الوصول. يتطلب token عضو
            لوحة التحكم إذن `read:networks`. يتم إرجاعه أيضاً مع `code:
            networks_not_entitled` عندما لا تكون Networks مفعّلة للمؤسسة.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
                    description: >-
                      موجود في الأخطاء ذات الرموز، على سبيل المثال
                      `networks_not_entitled`.
              examples:
                Networks not enabled:
                  summary: الشبكات غير مفعّلة
                  value:
                    detail: >-
                      Networks is disabled for this organization. Contact Didit
                      support if you believe this is an error.
                    code: networks_not_entitled
                Restricted API key:
                  summary: مفتاح API مقيد
                  value:
                    detail: This API key has no access to this endpoint.
                No permission:
                  summary: لا يوجد إذن
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: لم يتم العثور على الشبكة (أو أنها غير مرئية لهذا التطبيق).
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/n3a5e000-0000-4000-8000-000000000001/timeline/'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: curl
          label: curl (typed timeline)
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/networks/3fa85f64-5717-4562-b3fc-2c963f66afa6/timeline/?contract=2&limit=50&event_type=verification_attempt,login'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.networks.retrieve_timeline(
                "n3a5e000-0000-4000-8000-000000000001",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.networks.retrieveTimeline("n3a5e000-0000-4000-8000-000000000001");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Networks.RetrieveTimeline(ctx, \"n3a5e000-0000-4000-8000-000000000001\", didit.NetworksRetrieveTimelineParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.networks().retrieveTimeline("n3a5e000-0000-4000-8000-000000000001");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->networks->retrieveTimeline('n3a5e000-0000-4000-8000-000000000001');

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


            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            # and DIDIT_APPLICATION_ID.

            didit = Didit::Client.new


            result =
            didit.networks.retrieve_timeline("n3a5e000-0000-4000-8000-000000000001")

            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Networks.RetrieveTimelineAsync("n3a5e000-0000-4000-8000-000000000001");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    NetworkTimeline:
      title: Default timeline (no contract)
      type: object
      description: >-
        بدون `contract`: أحداث الشبكة الخاصة، من الأقدم إلى الأحدث، غير مقسمة
        إلى صفحات.
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTimelineEvent'
    NetworkTimelinePage:
      title: Typed timeline page (contract=2)
      type: object
      description: 'مع `contract=2`: صفحة واحدة من الأحداث المصنفة حسب النوع، الأحدث أولاً.'
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTypedTimelineEvent'
        next_cursor:
          type: string
          nullable: true
          description: >-
            مرّره كـ `cursor` لقراءة الصفحة التالية. يكون فارغاً (null) في
            الصفحة الأخيرة.
    NetworkTimelineEvent:
      type: object
      properties:
        event_type:
          type: string
          description: >-
            على سبيل المثال network_detected، وsignal_observed،
            وnetwork_in_review، وnetwork_resolved، وnetwork_dismissed.
        occurred_at:
          type: string
          format: date-time
          nullable: true
        label:
          type: string
        metadata:
          type: object
    NetworkTypedTimelineEvent:
      type: object
      description: >-
        حدث واحد من نوع محدد في الجدول الزمني: الحقول الأربعة الافتراضية،
        بالإضافة إلى معرّفه id، ووقت تخزينه بواسطة Didit، وحساب العضو والسجل
        الذي ينتمي إليه، وكتلة التفاصيل الخاصة بنوع الحدث. كتل التفاصيل الأخرى
        تكون null.
      properties:
        id:
          type: string
          description: '`<source>:<uuid>`، فريد داخل الجدول الزمني.'
          example: session:3fa85f64-5717-4562-b3fc-2c963f66afa6
        event_type:
          type: string
          enum:
            - network_detected
            - signal_observed
            - network_active
            - network_in_review
            - network_resolved
            - network_dismissed
            - verification_attempt
            - transaction
            - login
            - rule_hit
            - case_linked
            - note_added
        occurred_at:
          type: string
          format: date-time
          description: وقت حدوث ذلك.
        ingested_at:
          type: string
          format: date-time
          description: وقت تخزين Didit له.
        label:
          type: string
          description: تسمية إنجليزية قصيرة، على سبيل المثال `Verification attempt 2 of 3`.
        metadata:
          type: object
          description: >-
            بالنسبة للأحداث الخاصة بالشبكة، نفس البيانات الوصفية كالجدول الزمني
            الافتراضي. وفارغة بخلاف ذلك.
        account:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAccount'
          nullable: true
          description: >-
            حساب العضو. يكون Null لأحداث الشبكة نفسها، و`case_linked`،
            و`note_added`.
        source_ref:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineSourceRef'
          nullable: true
          description: سجل المصدر. يكون Null للأحداث الخاصة بالشبكة و`note_added`.
        verification_attempt:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAttempt'
          nullable: true
          description: يُعيَّن في أحداث `verification_attempt`.
        transaction:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineTransaction'
          nullable: true
          description: يُعيَّن في أحداث `transaction`.
        login:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineLogin'
          nullable: true
          description: يُعيَّن في أحداث `login`.
        rule_hit:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineRuleHit'
          nullable: true
          description: يُعيَّن في أحداث `rule_hit`.
        case_linked:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineCaseLinked'
          nullable: true
          description: يُعيَّن في أحداث `case_linked`.
        note_added:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineNoteAdded'
          nullable: true
          description: يُعيَّن في أحداث `note_added`. لا يُعاد أبداً إلى مفتاح API.
    NetworkTimelineAccount:
      type: object
      description: حساب العضو الذي ينتمي إليه الحدث.
      properties:
        node_id:
          type: string
          description: >-
            `<kind>:<uuid>`، حيث يكون kind هو `vendor_user` أو `vendor_business`
            أو `transaction_party`.
          example: vendor_user:3fa85f64-5717-4562-b3fc-2c963f66afa6
        node_type:
          type: string
          enum:
            - account
            - business_account
            - transaction_party
        uuid:
          type: string
          format: uuid
        vendor_data:
          type: string
          nullable: true
        display_name:
          type: string
          nullable: true
        ownership:
          type: string
          enum:
            - owned
            - organization
          description: >-
            `owned` عندما ينتمي السجل إلى التطبيق الذي استدعيته (بالنسبة لعضو في
            لوحة التحكم، إلى تطبيق مُنح الإذن بالوصول إليه). `organization`
            عندما ينتمي إلى تطبيق آخر تابع لمؤسستك.
        route:
          $ref: '#/components/schemas/NetworkTimelineRoute'
    NetworkTimelineSourceRef:
      type: object
      description: السجل الذي تمت قراءة الحدث منه.
      properties:
        kind:
          type: string
          enum:
            - session
            - business_session
            - transaction
            - monitoring_event
            - case
        id:
          type: string
          format: uuid
        ownership:
          type: string
          enum:
            - owned
            - organization
          description: >-
            `owned` عندما ينتمي السجل إلى التطبيق الذي استدعيته (بالنسبة لعضو في
            لوحة التحكم، إلى تطبيق مُنح الإذن بالوصول إليه). `organization`
            عندما ينتمي إلى تطبيق آخر تابع لمؤسستك.
        route:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineRoute'
          description: غير متوفر لكل من `monitoring_event` و`case`.
    NetworkTimelineAttempt:
      type: object
      description: جلسة تحقق واحدة للحساب.
      properties:
        session_id:
          type: string
          format: uuid
          description: معرّف UUID للجلسة، أو معرّف UUID لجلسة الشركة بالنسبة للشركات.
        session_number:
          type: integer
          nullable: true
        attempt:
          type: integer
          description: ترتيب هذه الجلسة بين جلسات الحساب، حسب ترتيب الإنشاء.
        attempt_count:
          type: integer
          description: عدد الجلسات التي يمتلكها الحساب.
        status:
          type: string
          description: حالة الجلسة، على سبيل المثال `Approved` أو `Declined`.
        status_changed_at:
          type: string
          format: date-time
          nullable: true
        decline_reasons:
          type: array
          items:
            $ref: '#/components/schemas/NetworkTimelineDeclineReason'
          description: >-
            للجلسة المرفوضة فقط: تحذيراتها، الأقدم أولاً، مرة واحدة لكل تحذير.
            وتكون فارغة بخلاف ذلك.
    NetworkTimelineTransaction:
      type: object
      description: معاملة شارك فيها حساب عضو، مؤرخة بتاريخ معاملتها.
      properties:
        transaction_id:
          type: string
          format: uuid
        transaction_number:
          type: integer
          nullable: true
        transaction_type:
          type: string
        action_type:
          type: string
        amount:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineAmount'
          nullable: true
          description: Null عندما لا تحتوي المعاملة على مبلغ.
        status:
          type: string
        decision_reason_code:
          type: string
          nullable: true
        decision_reason_label:
          type: string
          nullable: true
        party_role:
          type: string
          description: >-
            دور الحساب في المعاملة: `APPLICANT` أو `REMITTER` أو `BENEFICIARY`
            أو `COUNTERPARTY`.
    NetworkTimelineLogin:
      type: object
      description: حدث تسجيل دخول قمت بنشره لشخص ما عبر API الأحداث.
      properties:
        action:
          type: string
          description: >-
            `<event_category>.<action_type>`: تكون `auth.login` أو
            `security.login_succeeded` لتسجيل الدخول، و`auth.login_failed` أو
            `security.login_failed` في حالة الفشل.
        succeeded:
          type: boolean
        status:
          type: string
          description: حالة الحدث.
        ip:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineIP'
          nullable: true
          description: Null عندما لا يحتوي الحدث على عنوان IP.
        device:
          allOf:
            - $ref: '#/components/schemas/NetworkTimelineDevice'
          nullable: true
          description: Null عندما لا يحتوي الحدث على بصمة جهاز أو سياق.
        is_first_login:
          type: boolean
          description: أول تسجيل دخول ناجح مسجل للحساب.
        is_new_device:
          type: boolean
          description: >-
            تسجيل دخول ناجح من جهاز لم تصدر منه أي من عمليات تسجيل الدخول
            الناجحة السابقة للحساب. لا تكون كذلك أبداً عند أول تسجيل دخول.
    NetworkTimelineRuleHit:
      type: object
      description: >-
        قاعدة نشطة تطابقت مع معاملة أو حدث خاص بعضو. لا يتم تضمين تطابقات وضع
        الاختبار.
      properties:
        rule_id:
          type: string
          format: uuid
        rule_title:
          type: string
        rule_category:
          type: string
        rule_source:
          type: string
        severity:
          type: string
          nullable: true
        score_delta:
          type: integer
        status_target:
          type: string
          nullable: true
        action_summary:
          type: string
          nullable: true
    NetworkTimelineCaseLinked:
      type: object
      description: >-
        حالة تم فتحها للشبكة في مؤسستك. يحدد `source_ref.ownership` ما إذا كانت
        تابعة للتطبيق الذي استدعيته.
      properties:
        case_id:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
        status:
          type: string
        author_email:
          type: string
          nullable: true
        author_name:
          type: string
          nullable: true
    NetworkTimelineNoteAdded:
      type: object
      description: ملاحظة تُرِكت على الشبكة. نص الملاحظة غير مضمن.
      properties:
        note_id:
          type: string
          format: uuid
        author_email:
          type: string
    NetworkTimelineRoute:
      type: object
      description: 'مكان فتح السجل: نوعه، ومعرّف UUID الخاص به، والتطبيق الذي ينتمي إليه.'
      properties:
        kind:
          type: string
          description: >-
            `user` أو `business` أو `transaction_party` للحساب؛ `session` أو
            `business_session` أو `transaction` لسجل المصدر.
        id:
          type: string
          format: uuid
        application_id:
          type: string
          format: uuid
    NetworkTimelineDeclineReason:
      type: object
      properties:
        risk:
          type: string
          description: رمز التحذير.
        feature:
          type: string
          description: الميزة التي أطلقت التحذير.
        short_description:
          type: string
    NetworkTimelineAmount:
      type: object
      properties:
        value:
          type: string
          description: المبلغ العشري كسلسلة نصية.
        currency:
          type: string
        direction:
          type: string
          nullable: true
    NetworkTimelineIP:
      type: object
      properties:
        address:
          type: string
        country_code:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        connection_type:
          type: string
          nullable: true
          description: تسمية نوع الاتصال للعنوان، كنص حر.
        is_vpn_or_tor:
          type: boolean
        is_data_center:
          type: boolean
    NetworkTimelineDevice:
      type: object
      properties:
        fingerprint:
          type: string
          nullable: true
        label:
          type: string
          nullable: true
          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.