> ## 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: Partial-update a Didit User entity by vendor_data.

Endpoint: PATCH https://verification.didit.me/v3/users/{vendor_data}/
Auth header: x-api-key: <DIDIT_API_KEY>
Content-Type: application/json

Path param:
\- vendor_data (string, REQUIRED) — free-form string, NOT a UUID. URL-encode.

Request body (PARTIAL — only included fields are touched; auto-derived counters and session history are left alone):
\- full_name (string, max 512, nullable)
\- display_name (string, nullable)
\- date_of_birth (string YYYY-MM-DD, nullable)
\- status (enum) — "ACTIVE" | "FLAGGED" | "BLOCKED" (VendorUserStatusChoices). Setting "BLOCKED" auto-adds vendor_data to the system blocklist; flipping away removes it.
\- metadata (object, nullable) — REPLACES existing metadata wholesale; merge client-side if you only want to add keys.
\- approved_emails (object<string, boolean>)
\- approved_phones (object<string, boolean>)
\- issuing_states (object<ISO3, int>)
\- reason (string, optional, max 1000): why the status changed. Recorded as the comment of the STATUS_CHANGED entry in the user's activity (comments[].comment), only when this update actually changes status. Webhooks do not carry it.

curl:
curl -X PATCH 'https://verification.didit.me/v3/users/user-abc-123/' \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{"display_name": "Jane S.", "status": "FLAGGED", "reason": "Address does not match the billing country"}'

Response 200: full updated UserDetailItem (same shape as GET). See /reference/data-models.

Side effects:
\- Writes to the user's comments activity log (actor derived from the API key): a STATUS_CHANGED entry with reason when status changes, and a PROFILE_UPDATED entry when display_name, full_name, date_of_birth or metadata change.
\- last_activity_at bumped to now().
\- Concurrent updates: last-write-wins per field.
\- Re-sending an unchanged body is safe (no extra audit row).

Failure modes:
\- 400 — validation. Examples:
\{ "status": ["Invalid status. Valid options are: ACTIVE, FLAGGED, BLOCKED"] }
\{ "metadata": ["Metadata must be a JSON object."] }
date_of_birth must be YYYY-MM-DD.
\{ "reason": ["Ensure this field has no more than 1000 characters."] }
\- 401 — missing/invalid x-api-key. { "detail": "Authentication credentials were not provided." }
\- 403 — the API key is revoked or is not valid for this application. { "detail": "You do not have permission to perform this action." }
\- 403: a scoped API key without users write. { "detail": "This API key has no write access to people." }
\- 404 — vendor_data not found. { "detail": "Not found." }
\- 429 — rate-limited.

Notes:
\- vendor_data in the URL itself cannot be changed via this endpoint — create new + delete old to rekey.
\- For status-only flips, prefer the dedicated PATCH /v3/users/{vendor_data}/update-status/.
\- Overriding fields populated by a verified session is allowed but flagged in the audit log.

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). الحقول المنقولة من جلسات التحقق من المستخدمين (KYC) المُتحقَّق منها (`full_name`، و`date_of_birth`، و`portrait_image`، والعدادات الإجمالية، و`features`) للقراءة فقط.## متى تستخدمه- **تحديث بياناتك الوصفية**: نقل مستخدم بين المستويات، وتغيير الوسوم، وتسجيل ملاحظة داخلية.
- **إعادة تسمية**: ضبط `display_name` أفضل لعروض لوحة التحكم الداخلية.
- **تجاوز البيانات المُتحقَّق منها** (بحذر): التجاوزات اليدوية مسموحة، لكنها تُسجَّل في سجل التدقيق.## ملاحظات- لا يمكن تغيير `vendor_data` في عنوان URL عبر نقطة النهاية هذه. أنشئ مستخدمًا جديدًا واحذف القديم إذا احتجت إلى تغيير المعرّف.
- يُرسل webhook باسم `user.data.updated` مع مصفوفة `changed_fields`، لتتمكن الأنظمة المستهلكة من المزامنة بكفاءة.
- يعمل تغيير `status` هنا كما في [تحديث حالة المستخدم](https://docs.didit.me/ar/management-api/users/update-status.md).
  يُسجَّل في نشاط الشخص، مع `reason` الاختياري (حتى 1000 حرف) بوصفه تعليقًا عليه، وتؤدي الحالة `BLOCKED` إلى إضافة `vendor_data` إلى قائمة الحظر في النظام.
  لا يتضمن webhook باسم `user.status.updated` الحقل `reason`.
- إذا أرسلت طلب PATCH لحقل تديره جلسة مُتحقَّق منها حاليًا، فستُقبل عملية التجاوز لكنها ستُعلَّم في [سجل التدقيق](https://docs.didit.me/ar/console/audit-logs.md).## الأذوناتيمكن للمفتاح السري الأساسي ومفاتيح [API](https://docs.didit.me/ar/console/api-keys.md) ذات الوصول الكامل استدعاء نقطة النهاية هذه في كل الأوقات.
يحتاج المفتاح ذو الوصول المخصص إلى صلاحية **الكتابة** على **الأشخاص** (`users`).
لا يستطيع المفتاح المقيّد ببعض سير العمل أو بالجلسات المقبولة الوصول إلى نقطة النهاية هذه.تحدد [الأدوار والأذونات](https://docs.didit.me/ar/console/roles-permissions.md) في لوحة التحكم ما يمكن لعضو الفريق فعله داخل لوحة التحكم.
لا تُقيَّم هذه الأدوار لطلبات مفاتيح API.## ذات صلة- [عمليات المستخدم](https://docs.didit.me/ar/entities/users/operations.md)
- [نموذج البيانات](https://docs.didit.me/ar/entities/users/data-model.md)
- [تحديث الحالة](https://docs.didit.me/ar/management-api/users/update-status.md)


## OpenAPI

````yaml ar/openapi-25.json PATCH /v3/users/{vendor_data}/
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/{vendor_data}/:
    patch:
      tags:
        - Users
      summary: تحديث المستخدم
      description: >-
        تحديث جزئي لمستخدم: `display_name`، `full_name`، `date_of_birth`،
        `status`، `metadata`،
        `approved_emails`/`approved_phones`/`issuing_states`. يتم استبدال
        `metadata` بالكامل. يعمل تغيير `status` هنا تماماً مثل [تحديث حالة
        المستخدم](#patch-/v3/users/-vendor_data-/update-status/): حيث يسجل نشاط
        `STATUS_CHANGED` مع `reason` الاختياري، ويؤدي تعيين `BLOCKED` إلى إضافة
        `vendor_data` إلى قائمة الحظر الخاصة بالنظام (تؤدي إزالته من حالة
        `BLOCKED` إلى إزالة ذلك الإدخال). تُسجل التغييرات في `display_name` أو
        `full_name` أو `date_of_birth` أو `metadata` كنشاط `PROFILE_UPDATED`.
      operationId: update_user
      parameters:
        - name: vendor_data
          in: path
          required: true
          schema:
            type: string
          description: معرّفك الفريد للمستخدم (سلسلة نصية حرة، وليس UUID).
          example: user-abc-123
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                full_name:
                  type: string
                  nullable: true
                  maxLength: 512
                  description: الاسم الكامل للمستخدم
                display_name:
                  type: string
                  nullable: true
                  description: اسم عرض مخصص لهذا المستخدم
                date_of_birth:
                  type: string
                  format: date
                  nullable: true
                  description: تاريخ الميلاد بصيغة YYYY-MM-DD
                status:
                  type: string
                  enum:
                    - ACTIVE
                    - FLAGGED
                    - BLOCKED
                  description: >-
                    حالة دورة حياة المستخدم. يتم تسجيل التغيير كنشاط
                    `STATUS_CHANGED`، وتؤدي القيمة `BLOCKED` إلى إضافة
                    `vendor_data` إلى قائمة الحظر في النظام (والانتقال من
                    `BLOCKED` يزيل هذا الإدخال).
                metadata:
                  type: object
                  nullable: true
                  description: >-
                    كائن JSON عشوائي ترفقه بالمستخدم. **يستبدل بالكامل**
                    البيانات الوصفية الحالية عند التحديث — قم بالدمج من جانب
                    العميل إذا كنت تريد إضافة مفاتيح فقط.
                approved_emails:
                  type: array
                  items:
                    type: string
                  description: >-
                    عناوين البريد الإلكتروني التي تم التحقق منها لهذا المستخدم،
                    على سبيل المثال `["john@example.com"]`. تستبدل القائمة
                    المخزنة بالكامل.
                approved_phones:
                  type: array
                  items:
                    type: string
                  description: >-
                    أرقام الهواتف التي تم التحقق منها لهذا المستخدم. تستبدل
                    القائمة المخزنة بالكامل.
                issuing_states:
                  type: array
                  items:
                    type: string
                  description: >-
                    دول الإصدار (ISO 3166-1 alpha-3)، على سبيل المثال `["USA"]`.
                    تستبدل القائمة المخزنة بالكامل.
                reason:
                  type: string
                  nullable: true
                  maxLength: 1000
                  description: >-
                    سبب تغيير الحالة. يُسجّل في قيد تغيير الحالة ضمن سجل نشاط
                    المستخدم (`comments[].comment`، و**Activity** في Business
                    Console)، فقط عندما تتغير الحالة فعلياً. لا تتضمنه أحداث
                    webhook.
            examples:
              Rename:
                summary: عيّن اسم العرض
                value:
                  display_name: Jane S.
              Override status:
                summary: وضع علامة على المستخدم للمراجعة
                value:
                  status: FLAGGED
              Add metadata:
                summary: استبدال كائن JSON للبيانات الوصفية
                value:
                  metadata:
                    tier: premium
                    risk_level: low
              Fix extracted DOB:
                summary: حقول الملف الشخصي الصحيحة المستخرجة
                value:
                  full_name: Jane Elizabeth Smith
                  date_of_birth: '1985-11-22'
              Flag with reason:
                summary: وضع علامة على المستخدم وتسجيل السبب
                value:
                  status: FLAGGED
                  reason: Address does not match the billing country
      responses:
        '200':
          description: >-
            تم تحديث المستخدم. يتم إرجاع سجل المستخدم المحدث بالكامل (بنفس شكل
            Get User).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserDetailItem'
              examples:
                Updated:
                  value:
                    didit_internal_id: f4e5e1f2-94a9-4f86-8c16-2b7d9b4db418
                    vendor_data: user-abc-123
                    display_name: Jane S.
                    full_name: Jane Elizabeth Smith
                    date_of_birth: '1985-11-22'
                    effective_name: Jane S.
                    status: FLAGGED
                    metadata:
                      tier: premium
                    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
                        tag:
                          uuid: e1f2a3b4-c5d6-4e7f-8a9b-0c1d2e3f4a5b
                          name: VIP
                          color: '#2567FF'
                          description: null
                          source: custom
                          created_at: '2025-05-01T09:00:00Z'
                          updated_at: '2025-05-01T09:00:00Z'
                        added_by_email: analyst@acme.com
                        added_by_name: Jane Analyst
                        created_at: '2025-06-02T11:00:00Z'
                    comments: []
                    created_at: '2025-06-01T08:00:00Z'
                    updated_at: '2025-06-15T10:30:00Z'
        '400':
          description: >-
            جسم الطلب غير صالح — عادةً ما يكون `status` غير معروفة أو
            `date_of_birth` ليس بتنسيق `YYYY-MM-DD`.
          content:
            application/json:
              examples:
                Bad status:
                  value:
                    status:
                      - '"INVALID" is not a valid choice.'
                Bad date_of_birth:
                  value:
                    date_of_birth:
                      - >-
                        Date has wrong format. Use one of these formats instead:
                        YYYY-MM-DD.
                Reason too long:
                  value:
                    reason:
                      - Ensure this field has no more than 1000 characters.
        '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.
        '404':
          description: لا يوجد مستخدم بقيمة `vendor_data` المقدمة لهذا التطبيق.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: Not found.
        '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 PATCH 'https://verification.didit.me/v3/users/user-abc-123/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"display_name": "Jane S.", "status": "FLAGGED"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.users.update(
                "user-abc-123",
                display_name="Jane S.",
            )
            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.users.update("user-abc-123", {
              display_name: "Jane S.",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Users.Update(ctx, \"user-abc-123\", didit.UsersUpdateParams{\n\tDisplayName: didit.String(\"Jane S.\"),\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.UsersUpdateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result = client.users().update("user-abc-123",
            UsersUpdateParams.builder()
                    .displayName("Jane S.")
                    .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->users->update('user-abc-123', [
                'display_name' => 'Jane S.',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.users.update(
              "user-abc-123",
              display_name: "Jane S."
            )
            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.Users.UpdateAsync("user-abc-123", new
            UsersUpdateParams

            {
                DisplayName = "Jane S.",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    UserDetailItem:
      type: object
      description: >-
        تفاصيل المستخدم الكاملة. يوسع UserListItem بالبيانات الوصفية،
        والتعليقات، وحقل updated_at.
      allOf:
        - $ref: '#/components/schemas/UserListItem'
        - type: object
          properties:
            metadata:
              type: object
              description: >-
                بيانات وصفية مخصصة بتنسيق JSON أرفقتها بهذا المستخدم. القيمة
                الافتراضية هي `{}`.
            tags:
              type: array
              description: >-
                تعيينات العلامات. ملاحظة: في استجابات التفاصيل يكون كل إدخال
                كائن *ربط* علامة (`{uuid, tag: {...}, added_by_email,
                added_by_name, created_at}`)، على عكس التنسيق المسطح `{uuid,
                name, color}` المُستخدم في استجابات القوائم.
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                    description: معرّف UUID لتعيين الوسم (وليس الوسم نفسه).
                  tag:
                    type: object
                    properties:
                      uuid:
                        type: string
                        format: uuid
                      name:
                        type: string
                      color:
                        type: string
                      description:
                        type: string
                        nullable: true
                      source:
                        type: string
                        enum:
                          - didit
                          - custom
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type: string
                        format: date-time
                  added_by_email:
                    type: string
                    nullable: true
                  added_by_name:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                    format: date-time
            comments:
              type: array
              items:
                type: object
                properties:
                  uuid:
                    type: string
                    format: uuid
                  comment_type:
                    type: string
                    enum:
                      - COMMENT
                      - STATUS_CHANGED
                      - METADATA_UPDATED
                      - TAG_ADDED
                      - TAG_REMOVED
                      - PROFILE_UPDATED
                  comment:
                    type: string
                    nullable: true
                  actor_email:
                    type: string
                    nullable: true
                  actor_name:
                    type: string
                    nullable: true
                  previous_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  new_status:
                    type: string
                    nullable: true
                    enum:
                      - ACTIVE
                      - FLAGGED
                      - BLOCKED
                      - null
                  previous_value:
                    type: object
                    nullable: true
                    description: قيم الحقول السابقة لإدخالات PROFILE_UPDATED.
                  new_value:
                    type: object
                    nullable: true
                    description: قيم الحقول الجديدة لمدخلات PROFILE_UPDATED.
                  changed_fields:
                    type: array
                    items:
                      type: string
                    description: أسماء الحقول التي تم تغييرها بواسطة إدخال PROFILE_UPDATED.
                  metadata:
                    type: object
                    nullable: true
                  mentioned_emails:
                    type: array
                    items:
                      type: string
                  created_at:
                    type: string
                    format: date-time
              description: >-
                سجل الأنشطة والتعليقات الخاصة بهذا المستخدم (تغييرات الحالة،
                تعديلات الملف التعريفي، الملاحظات اليدوية).
            updated_at:
              type: string
              format: date-time
    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.