> ## 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 الخاص بك مع تصفية حسب الحالة والبحث والتاريخ. إدارة دورة حياة المستخدمين برمجياً.



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



      
      

\<pre>

\`Goal: Page through Didit User entities for an application and consume them in your backend.

Endpoint: GET https://verification.didit.me/v3/users/
Auth header: x-api-key: <DIDIT_API_KEY>

Query params (all optional):
\- status: "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices, NOT the session enum).
\- search: free-text over vendor_data, display_name, full_name, approved_emails, approved_phones.
\- country: ISO 3166-1 alpha-3 (e.g. "USA", "ESP") — filters by issuing country of approved documents.
\- limit: integer, 1–200, default 50.
\- offset: integer, 0+, default 0. Prefer following the "next" URL from the previous page.

curl:
curl -X GET 'https://verification.didit.me/v3/users/?limit=50&status=ACTIVE' \
-H 'x-api-key: YOUR_API_KEY'

Response 200 (envelope):
\{
"count": <int — exact up to 100, capped above; pagination still works via "next">,
"next": <URL of next page or null>,
"previous": <URL of previous page or null>,
"results": [ UserListItem, ... ]
}

UserListItem key fields: didit_internal_id (UUID), vendor_data (string, may be null), display_name, full_name, effective_name, status, portrait_image_url, session_count, approved_count, declined_count, in_review_count, issuing_states, approved_emails, approved_phones, features (map of feature -> "Approved" | "Declined" | "In Review" | ...), features_list, last_session_at, first_session_at, tags, created_at. See /reference/data-models for the full shape.

Notes:
\- Ordered by last_session_at desc (most recently active first).
\- Deleted users are not returned.
\- vendor_data is a free-form client-supplied string, NOT a UUID. It may be null when the originating session did not provide one.

Pagination loop:
url = 'https://verification.didit.me/v3/users/?limit=200&status=ACTIVE'
while url:
r = requests.get(url, headers={'x-api-key': API_KEY})
r.raise_for_status()
page = r.json()
for user in page['results']:
    ...handle user...
url = page['next']

Failure modes (all return {"detail": "..."} unless noted):
\- 401 — missing or revoked x-api-key.
\- 403 — the API key is revoked or is not valid for this application.
\- 429 — rate-limited. Honour Retry-After header.

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

\</pre>



      
      

الصق في

## نظرة عامةيعيد قائمة مُقسّمة إلى صفحات من [كيانات المستخدم](https://docs.didit.me/ar/entities/users/overview.md) الخاصة بالتطبيق المصادَق عليه. استخدمها لمزامنة المستخدمين مع مستودع البيانات الخاص بك، أو للعثور على المستخدمين الذين يحتاجون إلى اهتمام المحلل، أو للبحث حسب اسم العرض.## متى تستخدمه- **مزامنة دورية** لجدول المستخدمين لديك مع أداة ذكاء أعمال خارجية أو مستودع بيانات.
- **قوائم انتظار المحللين**: صفِّ حسب `status=FLAGGED` أو حسب `last_activity_at` القديم لتغذية صندوق مراجعة.
- **ابحث** عن المستخدمين حسب `display_name` أو `full_name` أو `vendor_data`.## الفلاتر والترقيم| معامل الاستعلام | الوصف |
| - | - |
| `status` | صفِّ حسب `ACTIVE` أو `FLAGGED` أو `BLOCKED`. |
| `search` | مطابقة جزئية للنص في `vendor_data` و`display_name` و`full_name` والبريد الإلكتروني وأرقام الهاتف. |
| `country_code` | صفِّ حسب `issuing_states` (ISO 3166-1 alpha-3). |
| `created_after`, `created_before` | نافذة زمنية لتاريخ الإنشاء (ISO 8601). |
| `last_activity_after`, `last_activity_before` | نافذة زمنية للنشاط. |
| `page_size` | من 1 إلى 200. الافتراضي: 50. |
| `cursor` | مؤشر الترقيم الذي أعادته الاستجابة السابقة. |## ملاحظات- يتضمن كل عنصر في الاستجابة `didit_internal_id`. قد تكون قيمة `vendor_data` هي `null` عندما لا تحتوي الجلسة الأصلية أو المعاملة الأصلية على قيمة لها.
- تعتمد نقطة النهاية هذه على الترقيم بالمؤشر: احفظ مؤشر `next` بين الاستدعاءات، وتوقف عندما تكون قيمة `next` فارغة.
- راجع [نموذج بيانات المستخدم](https://docs.didit.me/ar/entities/users/data-model.md) لمعرفة جميع الحقول الموجودة في سجل المستخدم.## الأذوناتيمكن لأي مفتاح API نشط للتطبيق استدعاء نقطة النهاية هذه. مفاتيح API الخاصة بـDidit **مقيّدة بالتطبيق، وليست مقيّدة بالدور**: تحدد [الأدوار والأذونات](https://docs.didit.me/ar/console/roles-permissions.md) في Console (مثل `list:users` وغيرها) ما يمكن للشخص فعله في Console، ولا تُطبَّق على حركة مرور Management API. تحكّم في من يستطيع استدعاء نقطة النهاية هذه عن طريق التحكم في من يستطيع قراءة مفتاح API الخاص بالتطبيق.## ذات صلة- [نظرة عامة على المستخدمين](https://docs.didit.me/ar/entities/users/overview.md)
- [الحصول على مستخدم](https://docs.didit.me/ar/management-api/users/get.md)
- [عمليات المستخدم](https://docs.didit.me/ar/entities/users/operations.md)


## OpenAPI

````yaml ar/openapi-25.json GET /v3/users/
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/users/:
    get:
      tags:
        - Users
      summary: عرض قائمة بالمستخدمين
      description: >-
        سرد [المستخدمين](/entities/users) الذين يجمعهم Didit من جلسات KYC التي
        تشترك في نفس `vendor_data` (سلسلة نصية حرة، وليست معرّف UUID)، بالإضافة
        إلى المستخدمين الذين تم إنشاؤهم عبر API. القائمة مقسمة لصفحات، ومرتبة
        حسب `last_session_at` تنازلياً. لا يدعم هذا الـ endpoint معاملات التصفية
        أو البحث — يمكنك جلب الصفحات وإجراء التصفية من جانب العميل.
      operationId: list_users
      parameters:
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 1000000
          description: >-
            حجم الصفحة. القيمة الافتراضية 50 عند إغفاله. لا يوجد حد أقصى مفروض،
            ولكن حافظ على صغر حجم الصفحات لتقليل زمن الاستجابة.
        - name: offset
          in: query
          schema:
            type: integer
            maximum: 1000000
            minimum: 0
            default: 0
          description: >-
            إزاحة تستند إلى الصفر للسجل الأول المراد إرجاعه. يُفضل اتباع رابط
            `next` من الصفحة السابقة بدلاً من حساب ذلك يدوياً.
      responses:
        '200':
          description: >-
            قائمة مقسمة إلى صفحات بالمستخدمين مع حالة التحقق وعدد الجلسات وتفصيل
            الميزات.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      عدد الصفوف المتطابقة — دقيق حتى 100، ويقتصر على 100 كحد
                      أقصى بعد ذلك لتحسين الأداء. لا تستخدمه لاكتشاف الصفحة
                      الأخيرة؛ اعتمد بدلاً من ذلك على كون `next` بقيمة `null`.
                  next:
                    type: string
                    nullable: true
                    description: رابط URL مطلق للصفحة التالية، أو `null` في الصفحة الأخيرة.
                  previous:
                    type: string
                    nullable: true
                    description: رابط URL مطلق للصفحة السابقة، أو `null` في الصفحة الأولى.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/UserListItem'
              examples:
                Example:
                  value:
                    count: 2
                    next: null
                    previous: null
                    results:
                      - didit_internal_id: f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418
                        vendor_data: user-abc-123
                        display_name: null
                        full_name: John Michael Doe
                        date_of_birth: '1990-05-15'
                        effective_name: John Michael Doe
                        status: ACTIVE
                        portrait_image_url: https://<media-host>/...
                        session_count: 3
                        approved_count: 2
                        declined_count: 0
                        in_review_count: 1
                        issuing_states:
                          - USA
                        approved_emails:
                          - john@example.com
                        approved_phones:
                          - '+14155551234'
                        features:
                          ID_VERIFICATION: Approved
                          LIVENESS: Approved
                          FACE_MATCH: Approved
                          AML: Approved
                        features_list:
                          - feature: ID_VERIFICATION
                            status: Approved
                          - feature: LIVENESS
                            status: Approved
                          - feature: FACE_MATCH
                            status: Approved
                          - feature: AML
                            status: Approved
                        last_session_at: '2025-06-15T10:30:00Z'
                        last_activity_at: '2025-06-15T10:30:00Z'
                        first_session_at: '2025-06-01T08:00:00Z'
                        tags:
                          - uuid: 9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d
                            name: VIP
                            color: '#2567FF'
                        created_at: '2025-06-01T08:00:00Z'
                      - didit_internal_id: 6ed99d53-e8f5-4cf8-9ac1-4a506cb40f6b
                        vendor_data: null
                        display_name: Jane S.
                        full_name: Jane Elizabeth Smith
                        date_of_birth: '1985-11-22'
                        effective_name: Jane S.
                        status: FLAGGED
                        portrait_image_url: null
                        session_count: 1
                        approved_count: 0
                        declined_count: 0
                        in_review_count: 1
                        issuing_states: []
                        approved_emails: []
                        approved_phones: []
                        features:
                          ID_VERIFICATION: In Review
                        features_list:
                          - feature: ID_VERIFICATION
                            status: In Review
                        last_session_at: '2025-06-20T14:00:00Z'
                        last_activity_at: '2025-06-20T14:05:00Z'
                        first_session_at: '2025-06-20T14:00:00Z'
                        tags: []
                        created_at: '2025-06-20T14:00:00Z'
        '401':
          description: >-
            لم يتم توفير بيانات اعتماد. الطلبات المرسلة إلى مسارات `/v3/users/*`
            بدون رأس `x-api-key` (أو رمز `Authorization: Bearer`) يتم رفضها
            بواسطة برمجية المصادقة الوسيطة قبل وصولها إلى الـ API.
          content:
            application/json:
              examples:
                Missing credentials:
                  value:
                    detail: >-
                      You must be authenticated with a valid access token to
                      access this endpoint.
        '403':
          description: >-
            لا يمكن للمفتاح سرد المستخدمين لهذا التطبيق. يؤدي غياب المفتاح إلى
            إرجاع `403`؛ بينما يُرجع المفتاح الخاطئ أو الملغى أو منتهي الصلاحية
            `401`.
          content:
            application/json:
              examples:
                Forbidden:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            تم تجاوز حد المعدل؛ تراجع مؤقتاً وأعد المحاولة بعد الفاصل الزمني
            الموضح في `Retry-After`.
          content:
            application/json:
              examples:
                Rate limited:
                  value:
                    detail: Request was throttled. Expected available in 30 seconds.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: |-
            curl -X GET 'https://verification.didit.me/v3/users/?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.users.list():
                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.users.list()) {
              console.log(item);
            }
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\niter := client.Users.ListAutoPaging(ctx, didit.UsersListParams{})\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.users().list()) {
                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->users->list() as $item) {
                print_r($item->toArray());
            }
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            didit.users.list.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.Users.ListAsync())
            {
                Console.WriteLine(JsonSerializer.Serialize(item));
            }
components:
  schemas:
    UserListItem:
      type: object
      description: مستخدم تم التحقق منه.
      properties:
        didit_internal_id:
          type: string
          format: uuid
          description: معرّف UUID الداخلي الثابت من Didit لهذا المستخدم.
        vendor_data:
          type: string
          nullable: true
          description: >-
            معرّفك الفريد لهذا المستخدم (يتم تمريره عند إنشاء الجلسات). يمكن أن
            يكون هذا null في حال عدم تقديم معرّف بائع.
        display_name:
          type: string
          nullable: true
          description: اسم عرض مخصص تم تعيينه بواسطتك
        full_name:
          type: string
          nullable: true
          description: الاسم الكامل المستخرج من المستندات التي تم التحقق منها
        date_of_birth:
          type: string
          format: date
          nullable: true
        effective_name:
          type: string
          nullable: true
          description: 'أفضل اسم متاح: display_name إذا كان محدداً، وإلا فـ full_name'
        status:
          type: string
          enum:
            - ACTIVE
            - FLAGGED
            - BLOCKED
          description: >-
            حالة دورة حياة سجل المستخدم (ليست حالة جلسة). القيمة الافتراضية هي
            `ACTIVE`، و`FLAGGED` تميز المستخدم للمراجعة اليدوية، و`BLOCKED` تمنع
            إنشاء جلسات جديدة لقيمة `vendor_data` هذه.
        portrait_image_url:
          type: string
          nullable: true
          description: >-
            رابط موقع مسبقاً للصورة الشخصية للمستخدم (تنتهي صلاحيته بعد بضع
            ساعات)
        session_count:
          type: integer
          description: العدد الإجمالي لجلسات التحقق لهذا المستخدم
        approved_count:
          type: integer
          description: عدد الجلسات المقبولة
        declined_count:
          type: integer
          description: عدد الجلسات المرفوضة
        in_review_count:
          type: integer
          description: عدد الجلسات قيد المراجعة
        issuing_states:
          type: array
          items:
            type: string
          description: >-
            رموز ISO 3166-1 alpha-3 لدول الإصدار الواردة في مستندات الهوية
            المقبولة لهذا المستخدم، مثل `["USA", "ESP"]`. مصفوفة فارغة في حال
            عدم وجود أي منها.
        approved_emails:
          type: array
          items:
            type: string
          description: >-
            عناوين البريد الإلكتروني التي تم التحقق منها والمجمعة من الجلسات
            المقبولة لهذا المستخدم، على سبيل المثال `["john@example.com"]`.
        approved_phones:
          type: array
          items:
            type: string
          description: >-
            أرقام الهواتف التي تم التحقق منها والمجمعة من الجلسات المقبولة لهذا
            المستخدم، على سبيل المثال `["+14155551234"]`.
        features:
          type: object
          description: >-
            الحالة المجمعة لكل ميزة عبر جميع جلسات هذا المستخدم. المفاتيح
            المحتملة: `ID_VERIFICATION`، `NFC`، `LIVENESS`، `FACE_MATCH`، `POA`،
            `QUESTIONNAIRE`، `EMAIL_VERIFICATION`، `PHONE`، `AML`،
            `IP_ANALYSIS`، `AGE_ESTIMATION`، `DATABASE_VALIDATION`. القيم
            المحتملة: `Approved`، `Declined`، `In Review`، `Not Finished`،
            `Resub Requested`.
        features_list:
          type: array
          items:
            type: object
            properties:
              feature:
                type: string
              status:
                type: string
          description: >-
            البيانات نفسها مثل `features`، كمصفوفة مرتبة من كائنات `{feature,
            status}`.
        last_session_at:
          type: string
          format: date-time
          nullable: true
          description: الطابع الزمني لأحدث جلسة
        first_session_at:
          type: string
          format: date-time
          nullable: true
          description: الطابع الزمني للجلسة الأولى
        last_activity_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            الطابع الزمني لأحدث نشاط لهذا المستخدم (جلسة، معاملة، تغيير حالة،
            تعديل بيانات، إلخ).
        tags:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              color:
                type: string
          description: العلامات المعيّنة لهذا المستخدم
        created_at:
          type: string
          format: date-time
  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.