> ## 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: قائمة الحظر وقائمة السماح

> أضف إدخالاً (وجه، مستند، عنوان IP، محفظة، بريد إلكتروني، هاتف) إلى قائمة حظر أو سماح أو مخصصة في Didit. ضوابط امتثال واحتيال برمجياً.



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



      
      

\<pre>

\`Add an entry to a Didit list (blocklist, allowlist, or custom) through the Management API.

Endpoint:
POST https://verification.didit.me/v3/lists/{list_uuid}/entries/

Authentication:
Use the x-api-key header with my Didit API key. A scoped API key needs workflows: write.

Goal:
\- Insert a single entry into a list. Three add modes are supported:
1\. By value: pass value matching the list's entry_type.
2\. From a verification session: pass reference_session_id and Didit reads the value from the session's most recent record of the list's entry_type (face, document, phone, email, ip_address, device_fingerprint) and links the entry to the session.
3\. With a source reference: pass value plus reference_object_uuid and metadata.reference_type so the console links the entry back to the transaction, user or business it came from.

Path parameter:
\- list_uuid: list UUID from GET /v3/lists/. For a face without a session, use POST /v3/lists/{list_uuid}/entries/face-upload/ instead.

Request body (application/json):
\{
"value": "string",                  // required unless reference_session_id is sent
"reference_session_id": "uuid",     // optional: read the value from this session of my application
"reference_object_uuid": "uuid",    // optional: transaction UUID, or didit_internal_id of a user or business
"face_image_source": "liveness" | "front_image_camera_front" | "back_image_camera_front", // optional, system face blocklist + reference_session_id only; default liveness
"reference_node_id": "string",      // optional, with a document-capture face_image_source: which ID verification node's selfie to use
"display_label": "string",          // optional, at most 512 characters
"comment": "string",                // optional, reason or note
"metadata": {                       // optional, free-form; reference_image_url and front_image_url are ignored
"reference_type": "transaction" | "vendor_user" | "vendor_business",
"reference_id": "uuid"
}
}

Value validation by entry_type:
\- email: valid email address.
\- phone: valid international phone number (stored in E.164).
\- ip_address: IP address or CIDR range (e.g. 10.0.0.0/8).
\- device_fingerprint: at least 8 characters among letters, digits, -, _, : and . (a blocklist refuses a fingerprint that several distinct devices have reported).
\- country: ISO 3166-1 alpha-2 or alpha-3 (stored as alpha-3).
\- user, business: the vendor_data to block.
\- face, document, wallet_address, bank_account, key: any non-empty string.
Values are case-insensitive: country codes are stored in upper case, phone numbers in E.164, everything else in lower case.
A list holds each value once: adding a value that is already there returns 400.

Adding from a session, what Didit does:
\- Looks up the session (it must belong to the same application).
\- Reads the value from the session's most recent record of the list's entry_type:
\- face: the liveness face (value is the face UUID). With face_image_source = front_image_camera_front / back_image_camera_front, the face from the selfie the front camera took while the user photographed the front / back of their document instead (system face blocklist only, leave value empty).
\- document: the document number; full_name, issuing_state, document_type, region and document_number go into metadata.
\- phone / email: the phone number / email address.
\- ip_address: the session's IP address.
\- device_fingerprint: a fingerprint that identifies one device. On a blocklist, Didit refuses a session that only has a device-class fingerprint or was completed on more than one device; pass the exact fingerprint as value in that case.
\- Links the entry to the session (reference_session_id) and to that record (reference_object_uuid).
\- If I also send value, Didit stores my value but still links the most recent record. To list a value from an earlier record, add it by value without reference_session_id.

Example calls:
\# By value
curl -X POST "https://verification.didit.me/v3/lists/{list_uuid}/entries/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"value": "+14155552671", "comment": "Reported fraud"}'

\# From a session
curl -X POST "https://verification.didit.me/v3/lists/{list_uuid}/entries/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"reference_session_id": "33333333-4444-5555-6666-777777777777"}'

\# The face from the selfie taken during document capture (system face blocklist)
curl -X POST "https://verification.didit.me/v3/lists/{list_uuid}/entries/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"reference_session_id": "33333333-4444-5555-6666-777777777777", "face_image_source": "front_image_camera_front"}'

\# From a transaction
curl -X POST "https://verification.didit.me/v3/lists/{list_uuid}/entries/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"value": "0x52908400098527886E0F7030069857D2E4169EE7", "reference_object_uuid": "55555555-6666-7777-8888-999999999999", "metadata": {"reference_type": "transaction"}}'

Failure modes:
\- 400: value fails the entry_type validator or is already in the list, neither value nor reference_session_id was sent, reference_session_id is not a session of this application, or the session has no data of the list's entry_type.
\- 400 (face_image_source): the list is not the system face blocklist, value was sent, the session has no image for that source, no clear face was found in that selfie, or that selfie is already in the blocklist.
\- 401: the API key has expired.
\- 403: missing x-api-key (a wrong, revoked or expired key gets 401) ({ "detail": "You do not have permission to perform this action." }), or a scoped key without workflows: write.
\- 404: list not found in this application ({ "detail": "List not found." }).
\- 503 (face_image_source): face analysis is temporarily unavailable; nothing was added, retry later.
\- 429: rate limited (see /integration/rate-limiting); back off and retry.

Side effects:
\- System face, document, phone and email blocklists: a record read from a session is flagged as blocklisted at once, and new sessions that match it are declined.
\- System user and business blocklists: users or businesses of the application whose vendor_data equals value (or whose UUID equals reference_object_uuid) are set to BLOCKED.
\- Sessions and transactions that already finished are not changed.

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

\</pre>



      
      

الصق في

أضف إدخالاً إلى قائمة. تُتحقق القيمة وفق نوع إدخال القائمة:* **email**: عنوان بريد إلكتروني صالح
* **phone**: رقم هاتف دولي صالح، يُخزَّن بصيغة E.164 (مثل `+14155552671`)
* **ip\_address**: عنوان IP صالح أو نطاق CIDR (مثل `192.168.1.1` أو `10.0.0.0/8`)
* **device\_fingerprint**: ما لا يقل عن 8 أحرف من بين الحروف والأرقام و`-` و`_` و`:` و`.`. ترفض قائمة الحظر بصمةً أبلغت عنها عدة أجهزة مختلفة، لأن حظرها سيرفض أشخاصاً لا علاقة لهم بالأمر.
* **country**: [رمز الدولة وفق ISO 3166-1 alpha-3](https://docs.didit.me/ar/core-technology/id-verification/supported-documents-id-verification.md) صالح (مثل `USA` و`GBR` و`ESP`). تُقبل رموز alpha-2 (مثل `US`) وتُحوَّل تلقائياً إلى alpha-3.
* **user**، **business**: القيمة `vendor_data` الخاصة بالمستخدم أو الشركة
* **face**، **document**، **wallet\_address**، **bank\_account**، **key**: أي سلسلة نصية غير فارغة> [!NOTE]
>
> جميع قيم الإدخال **غير حساسة لحالة الأحرف**. تُوحَّد القيم التي ترسلها عند التخزين (أرقام الهواتف إلى E.164، ورموز الدول إلى أحرف كبيرة، وكل ما عداها إلى أحرف صغيرة)، وتُطابَق دون تمييز لحالة الأحرف أثناء التحقق. مثلاً، حظر `User@Example.COM` سيلتقط أيضاً `user@example.com`. تحتوي القائمة على كل قيمة مرة واحدة فقط، وإضافة قيمة موجودة في القائمة تُرجع `400`.بالنسبة إلى الوجه، استخدم [رفع الوجه](https://docs.didit.me/ar/management-api/lists/upload-face.md) عندما تملك صورة فقط، أو أرسل `reference_session_id` لأخذ وجه من جلسة موجودة. يحتاج إدخال الوجه إلى وجه مخزَّن للمطابقة معه، ولا توفر ذلك القيمةُ `value` المكتوبة يدوياً.## الإضافة من جلسةعندما تُرسل `reference_session_id`، يقوم Didit بما يلي:1) يبحث عن الجلسة (ويجب أن تنتمي إلى التطبيق نفسه)
2) يقرأ القيمة من **أحدث** سجل في الجلسة من نوع إدخال القائمة:
   * **face**: وجه صورة السيلفي الخاصة بكشف الحيوية؛ والقيمة `value` هي معرّف UUID للوجه
   * **document**: رقم المستند؛ ويُخزَّن الاسم الكامل والولاية المُصدِرة ونوع المستند والمنطقة ورقم المستند في `metadata`، ويكون `display_label` افتراضياً اسم صاحب المستند ورقم المستند
   * **phone**: رقم الهاتف
   * **email**: عنوان البريد الإلكتروني
   * **ip\_address**: عنوان IP الخاص بالجلسة
   * **device\_fingerprint**: بصمة تُعرّف جهازاً واحداً، مع تفضيل جهاز أكمل خطوة تحقق. في قائمة الحظر، يرفض Didit الجلسة التي تحتوي فقط على بصمة من نوع الجهاز، أو التي اكتملت على أكثر من جهاز واحد. في هذه الحالة أرسل البصمة الدقيقة بوصفها `value`.
3) يربط الإدخال بالجلسة (`reference_session_id`) وبالسجل (`reference_object_uuid`) لتتبع المصدرفي قوائم الحظر الخاصة بالوجه والمستند والهاتف والبريد الإلكتروني على مستوى النظام، يُوسَم السجل أيضاً بأنه في قائمة الحظر، فتُرفض الجلسات الجديدة المطابقة له. لأي نوع إدخال آخر، أرسل `value` أيضاً.يُرجع `400` إذا لم يتم العثور على الجلسة، أو إذا لم تحتوِ على بيانات لنوع الإدخال المطلوب.### الوجوه من صورة السيلفي الملتقطة أثناء تصوير المستندأثناء تصوير المستخدم لمستنده، يمكن للكاميرا الأمامية التقاط صورة سيلفي له (الصورتان `front_image_camera_front` و`back_image_camera_front` من [تقرير التحقق من الهوية](https://docs.didit.me/ar/core-technology/id-verification/report-id-verification.md)). يمكن إضافة هذا الوجه إلى قائمة حظر الوجوه إلى جانب وجه كشف الحيوية، وذلك بتمرير `face_image_source` مع الصورة التي تريدها.```json theme={null}
{
  "reference_session_id": "33333333-4444-5555-6666-777777777777",
  "face_image_source": "front_image_camera_front"
}
```- يُنشأ الإدخال فقط في **قائمة حظر الوجوه** على مستوى النظام، ويجب ترك `value` فارغة: يأخذ Didit الوجه من صورة السيلفي في الجلسة.
- يجب أن تحتوي صورة السيلفي على وجه واحد واضح. إن لم تكن كذلك، يُرجع الطلب `400` ولا يُضاف شيء.
- يمكن إضافة كل صورة سيلفي مرة واحدة فقط. يوضح `metadata.face_image_source` و`metadata.reference_node_id` أي صورة سيلفي جاء منها الإدخال.
- في سير عمل فيه أكثر من خطوة تحقق من الهوية، يحدد `reference_node_id` الخطوة التي ستُستخدم صورة السيلفي الخاصة بها. افتراضياً، يستخدم Didit أحدث تحقق من الهوية يحتوي على تلك الصورة.
- من تلك اللحظة يُفحص الوجه كأي وجه محظور آخر: مقابل صورة السيلفي الخاصة بكشف الحيوية في كل جلسة جديدة، ومقابل كل صورة سيلفي جديدة من تصوير المستند (انظر [`FRONT_CAMERA_FACE_IN_BLOCKLIST`](https://docs.didit.me/ar/core-technology/id-verification/warnings-id-verification)).
- حذف الإدخال يزيل الوجه من قائمة الحظر، ويتوقف عن مطابقة الجلسات الجديدة.### جلسات تحتوي على عدة سجلات من النوع نفسهقد تحتوي الجلسة على أكثر من سجل من النوع نفسه، مثل رقمي هاتف في سير عمل متعدد الخطوات. يقرأ Didit دائماً **الأحدث**. إذا أرسلت `value` مع `reference_session_id`، يخزّن الإدخال القيمة `value` التي أرسلتها، لكنه يظل مرتبطاً بالسجل الأحدث، وفي قائمة حظر على مستوى النظام يكون هذا السجل هو المُعلَّم.لإضافة قيمة من سجل أقدم، أضفها باستخدام `value` وحدها دون `reference_session_id`:```json theme={null}
{
  "value": "+34612345678",
  "comment": "First phone number of session 42"
}
```## الإشارة إلى المعاملات والمستخدمين والشركاتعند حظر بيانات من معاملة أو من مستخدم أو شركة لدى البائع، مرّر معرّف UUID الخاص بالكيان في `reference_object_uuid`، وحدد نوع المصدر في `metadata`:```json theme={null}
{
  "value": "0x52908400098527886E0F7030069857D2E4169EE7",
  "reference_object_uuid": "55555555-6666-7777-8888-999999999999",
  "metadata": {
    "reference_type": "transaction",
    "reference_id": "55555555-6666-7777-8888-999999999999"
  }
}
```يتيح لك ذلك الانتقال من إدخال قائمة الحظر إلى المعاملة أو المستخدم أو الشركة الأصلية في وحدة التحكم. يحفظ Didit مفاتيح `metadata` التي ترسلها، باستثناء `reference_image_url` و`front_image_url`، وهما مفتاحان يضبطهما Didit وحده. أما الإدخال المأخوذ من جلسة، فيضيف Didit إلى مفاتيحك مفاتيحه الخاصة، وتكون مفاتيحه هي الغالبة.| مصدر الكيان | `reference_object_uuid` | `metadata.reference_type` |
| - | - | - |
| جلسة التحقق | يضبطه Didit (سجل الوجه أو المستند أو الهاتف أو البريد الإلكتروني) | غير مطلوب: استخدم `reference_session_id` |
| معاملة | معرّف UUID للمعاملة | `"transaction"` |
| مستخدم لدى البائع | `didit_internal_id` | `"vendor_user"` |
| شركة لدى البائع | `didit_internal_id` | `"vendor_business"` |في قائمتي حظر **المستخدمين** و**الشركات** على مستوى النظام، يضبط Didit أيضاً المستخدمين أو الشركات المطابقين على `BLOCKED`: أي الذين يساوي `vendor_data` لديهم القيمة `value`، أو الذين يساوي `didit_internal_id` لديهم القيمة `reference_object_uuid`. انظر [قائمة حظر المستخدمين](https://docs.didit.me/ar/entities/users/blocklist.md) و[قائمة حظر الشركات](https://docs.didit.me/ar/entities/businesses/blocklist.md).


## OpenAPI

````yaml ar/openapi-25.json POST /v3/lists/{list_uuid}/entries/
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/lists/{list_uuid}/entries/:
    post:
      tags:
        - Lists
      summary: أنشئ إدخالاً في القائمة
      description: >-
        يضيف إدخالاً واحداً إلى القائمة بإحدى طرق ثلاث: عبر `value`؛ أو من جلسة
        تحقق باستخدام `reference_session_id`، حيث تقرأ Didit القيمة من أحدث سجل
        في الجلسة لنوع إدخال القائمة وتربط الإدخال به؛ أو عبر `value` مع
        `reference_object_uuid` و`metadata.reference_type` للإشارة إلى معاملة أو
        مستخدم أو شركة. في قوائم الحظر التابعة للنظام الخاصة بالوجه والمستند
        والهاتف والبريد الإلكتروني، يتم أيضاً تمييز السجل المقروء من الجلسة
        كمحظور، بحيث يتم رفض الجلسات المطابقة الجديدة؛ وفي قوائم الحظر التابعة
        للنظام الخاصة بالمستخدمين والشركات، يتم تعيين المستخدمين أو الشركات
        المطابقة إلى `BLOCKED`. لا يتم تغيير الجلسات والمعاملات التي انتهت
        بالفعل. يتطلب مفتاح API محدد النطاق `workflows: write`. راجع [إنشاء
        إدخال قائمة](https://docs.didit.me/ar/management-api/lists/create-entry)
        لكل وضع.
      operationId: create_list_entry
      parameters:
        - name: list_uuid
          in: path
          required: true
          description: >-
            معرّف UUID للقائمة المراد الإضافة إليها. بالنسبة للوجه الذي يتوفر
            لديك كصورة فقط، استخدم تحميل وجه إلى قائمة بدلاً من ذلك.
          schema:
            type: string
            format: uuid
          example: 11111111-2222-3333-4444-555555555555
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                أرسل `value` أو `reference_session_id` أو كليهما. تعتمد الحقول
                المستخدمة على `entry_type` الخاص بالقائمة.
              properties:
                value:
                  type: string
                  description: >-
                    القيمة المراد إدراجها، ويتم التحقق منها وفقاً لـ
                    `entry_type` الخاص بالقائمة: `email` عنوان بريد إلكتروني
                    صالح؛ `phone` رقم دولي صالح، مخزن بتنسيق E.164؛ `ip_address`
                    عنوان IP أو نطاق CIDR (على سبيل المثال `10.0.0.0/8`)؛
                    `device_fingerprint` 8 أحرف على الأقل من الحروف والأرقام
                    و`-` و`_` و`:` و`.` (ترفض قائمة الحظر البصمة التي أبلغت عنها
                    عدة أجهزة مختلفة)؛ `country` رمز ISO 3166-1 alpha-2 أو
                    alpha-3، مخزن بتنسيق alpha-3؛ `user` و`business` هما
                    `vendor_data`؛ وأي نوع آخر هو سلسلة نصية غير فارغة. تخزن
                    بأحرف صغيرة باستثناء أرقام الهواتف ورموز الدول، وتحتفظ
                    القائمة بكل قيمة مرة واحدة فقط (غير حساسة لحالة الأحرف).
                    مطلوب ما لم يتم إرسال `reference_session_id`؛ ويجب تركه
                    فارغاً عند استخدام `face_image_source` لالتقاط المستندات.
                reference_session_id:
                  type: string
                  format: uuid
                  description: >-
                    جلسة تحقق من شخص أو شركة تابعة لتطبيقك لأخذ القيمة منها.
                    يقرأ Didit أحدث سجل للجلسة من نوع إدخال القائمة (`face` أو
                    `document` أو `phone` أو `email` أو `ip_address` أو
                    `device_fingerprint`)، ويربط الإدخال بالجلسة وبذلك السجل،
                    ويملأ `display_label` و `metadata` للمستندات. بالنسبة لقائمة
                    حظر `device_fingerprint`، يتم رفض الجلسة التي تحتوي فقط على
                    بصمة فئة الجهاز أو التي اكتملت على أكثر من جهاز واحد: أرسل
                    البصمة الدقيقة كـ `value`. بالنسبة لأنواع الإدخال الأخرى، أو
                    عندما لا تحتوي الجلسة على مثل هذا السجل، أرسل `value` أيضاً؛
                    ويتم بعد ذلك تخزين `value` الخاصة بك مع استمرار ربط الإدخال
                    بالجلسة.
                reference_object_uuid:
                  type: string
                  format: uuid
                  description: >-
                    معرّف UUID للسجل الذي يمثله الإدخال عندما لا يأتي من جلسة:
                    معرّف UUID للمعاملة، أو `didit_internal_id` لمستخدم أو شركة.
                    قم بإقرانه مع `metadata.reference_type`. يُستبدل بسجل الجلسة
                    عندما يوفره `reference_session_id`.
                face_image_source:
                  type: string
                  enum:
                    - liveness
                    - front_image_camera_front
                    - back_image_camera_front
                  default: liveness
                  description: >-
                    قوائم الوجوه التي تحتوي على `reference_session_id`: تحدد
                    الصورة التي تم أخذ الوجه منها من صور الجلسة. القيمة
                    `liveness` (الافتراضية) هي صورة السيلفي لكشف الحيوية.
                    والخاصيتان `front_image_camera_front`
                    و`back_image_camera_front` هما صورتا السيلفي اللتان
                    التقطتهما الكاميرا الأمامية أثناء تصوير المستخدم للوجه
                    الأمامي أو الخلفي لمستنده: تُقبلان فقط في قائمة حظر الوجوه
                    الخاصة بالنظام، مع `reference_session_id` وقيمة `value`
                    فارغة. يمكن إضافة كل صورة سيلفي مرة واحدة ويجب أن تُظهر
                    وجهاً واحداً واضحاً.
                reference_node_id:
                  type: string
                  nullable: true
                  maxLength: 100
                  description: >-
                    مع `face_image_source` لالتقاط المستند: عقدة التحقق من
                    الهوية التي تُستخدم صورتها السيلفي، في مسارات سير العمل التي
                    تحتوي على أكثر من عقدة. القيمة الافتراضية هي أحدث عملية تحقق
                    من الهوية تحتوي على تلك الصورة. يُرفض استخدامه مع
                    `liveness`.
                display_label:
                  type: string
                  maxLength: 512
                  description: >-
                    تسمية سهلة القراءة. عندما تكون فارغة، تستنتج Didit واحدة من
                    الجلسة متى أمكنها ذلك (على سبيل المثال اسم حامل المستند
                    ورقمه).
                comment:
                  type: string
                  description: ملاحظة بنص حر، مثل سبب الإدراج في القائمة.
                metadata:
                  type: object
                  additionalProperties: true
                  description: >-
                    كائن JSON بصيغة حرة يُخزن مع القيد ويُعاد كما تم تخزينه.
                    استخدم `reference_type` و `reference_id` لتربط لوحة التحكم
                    بالمصدر. يتم تعيين `reference_image_url` و `front_image_url`
                    بواسطة Didit فقط ويتم تجاهلهما إذا أرسلتهما. بالنسبة لقيد
                    تمت قراءته من جلسة، يتم دمج مفاتيح Didit مع مفاتيحك.
                  properties:
                    reference_type:
                      type: string
                      enum:
                        - transaction
                        - vendor_user
                        - vendor_business
                      description: ما يشير إليه `reference_object_uuid`.
                    reference_id:
                      type: string
                      description: معرّف السجل المصدر.
            examples:
              By value:
                value:
                  value: '+14155552671'
                  comment: Reported fraud
              From a session:
                value:
                  reference_session_id: 33333333-4444-5555-6666-777777777777
              Face from a document-capture selfie:
                value:
                  reference_session_id: 33333333-4444-5555-6666-777777777777
                  face_image_source: front_image_camera_front
              From a transaction:
                value:
                  value: '0x52908400098527886E0F7030069857D2E4169EE7'
                  reference_object_uuid: 55555555-6666-7777-8888-999999999999
                  comment: Linked to a chargeback
                  metadata:
                    reference_type: transaction
                    reference_id: 55555555-6666-7777-8888-999999999999
              Country:
                value:
                  value: PRK
                  comment: Sanctioned jurisdiction
      responses:
        '201':
          description: تم إنشاء الإدخال.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComplianceListEntry'
              examples:
                By value:
                  value:
                    uuid: aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
                    value: '+14155552671'
                    display_label: ''
                    comment: Reported fraud
                    added_by: api
                    reference_session_id: null
                    reference_session_number: null
                    reference_session_type: null
                    reference_object_uuid: null
                    metadata: null
                    created_at: '2026-10-12T10:04:51.220391Z'
                Document from a session:
                  value:
                    uuid: bbbbbbbb-cccc-dddd-eeee-ffffffffffff
                    value: X1234567
                    display_label: Jane Doe - X1234567
                    comment: ''
                    added_by: api
                    reference_session_id: 33333333-4444-5555-6666-777777777777
                    reference_session_number: 1042
                    reference_session_type: kyc
                    reference_object_uuid: 66666666-7777-8888-9999-000000000000
                    metadata:
                      full_name: Jane Doe
                      issuing_state: ESP
                      document_type: ID
                      region: ''
                      document_number: X1234567
                    created_at: '2026-10-12T10:06:12.774915Z'
                From a transaction:
                  value:
                    uuid: dddddddd-eeee-ffff-0000-111111111111
                    value: '0x52908400098527886e0f7030069857d2e4169ee7'
                    display_label: ''
                    comment: Linked to a chargeback
                    added_by: api
                    reference_session_id: null
                    reference_session_number: null
                    reference_session_type: null
                    reference_object_uuid: 55555555-6666-7777-8888-999999999999
                    metadata:
                      reference_type: transaction
                      reference_id: 55555555-6666-7777-8888-999999999999
                    created_at: '2026-10-12T10:20:40.117062Z'
        '400':
          description: >-
            نص الطلب غير صالح، أو القيمة موجودة بالفعل في القائمة، أو يتعذر على
            الجلسة تقديم القيمة.
          content:
            application/json:
              examples:
                Nothing to list:
                  value:
                    value:
                      - >-
                        Either 'value' or 'reference_session_id' must be
                        provided.
                Duplicate value:
                  value:
                    value:
                      - An entry with this value already exists in this list.
                Invalid phone:
                  value:
                    value:
                      - >-
                        Invalid phone number. Provide a valid international
                        number (e.g. +1234567890).
                Invalid IP:
                  value:
                    value:
                      - >-
                        Invalid IP address or CIDR range (e.g. 192.168.1.1 or
                        10.0.0.0/24).
                Invalid country:
                  value:
                    value:
                      - >-
                        Invalid country code: XX. Provide a valid ISO 3166-1
                        alpha-2 or alpha-3 country code.
                Device-class fingerprint:
                  value:
                    value:
                      - >-
                        This value is a device-class fingerprint: several
                        distinct devices have reported it, so blocklisting it
                        would decline unrelated people. Block the user by
                        document, face, email or phone instead.
                Unknown session:
                  value:
                    reference_session_id:
                      - >-
                        Session not found or does not belong to this
                        application.
                No data in session:
                  value:
                    value:
                      - >-
                        Either provide a 'value' or ensure the session contains
                        data for this entry type.
                Selfie on another list:
                  value:
                    face_image_source:
                      - >-
                        A document-capture selfie can only be added to the face
                        blocklist.
                No clear face in selfie:
                  value:
                    face_image_source:
                      - >-
                        No clear face was found in this selfie, so it cannot be
                        blocklisted.
                Selfie already listed:
                  value:
                    face_image_source:
                      - This selfie is already in the blocklist.
        '401':
          description: >-
            انتهت صلاحية مفتاح API محدد النطاق. تُرجع حالات فشل المصادقة الأخرى
            الرمز `403`.
          content:
            application/json:
              examples:
                Expired API key:
                  value:
                    detail: This API key has expired.
        '403':
          description: >-
            رأس `x-api-key` مفقود (المفتاح الخاطئ أو الملغى أو منتهي الصلاحية
            يحصل على `401`)، أو أن مفتاح API محدد النطاق يفتقر إلى `workflows:
            write` أو تم استخدامه من عنوان IP خارج قائمة السماح الخاصة به.
          content:
            application/json:
              examples:
                Missing or invalid API key:
                  value:
                    detail: You do not have permission to perform this action.
                Scoped key without workflows access:
                  value:
                    detail: This API key has no write access to workflows.
        '404':
          description: >-
            لا توجد قائمة بهذا المعرّف UUID في التطبيق المرتبط بمفتاح API، أو قد
            تم حذفها.
          content:
            application/json:
              examples:
                Not found:
                  value:
                    detail: List not found.
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
        '503':
          description: >-
            تحليل الوجه لصورة سيلفي ملتقطة مع المستند غير متاح مؤقتًا. لم تتم
            إضافة أي شيء؛ يُرجى إعادة المحاولة لاحقًا.
          content:
            application/json:
              examples:
                Unavailable:
                  value:
                    detail: Service temporarily unavailable. Please try again later.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X POST
            'https://verification.didit.me/v3/lists/11111111-2222-3333-4444-555555555555/entries/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"value": "+14155552671", "comment": "Reported fraud"}'
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.lists.entries.create(
                "11111111-2222-3333-4444-555555555555",
                value="+14155552671",
                comment="Reported fraud",
            )
            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.lists.entries.create("11111111-2222-3333-4444-555555555555", {
              value: "+14155552671",
              comment: "Reported fraud",
            });

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Lists.Entries.Create(ctx, \"11111111-2222-3333-4444-555555555555\", didit.ListsEntriesCreateParams{\n\tValue:   didit.String(\"+14155552671\"),\n\tComment: didit.String(\"Reported fraud\"),\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.ListsEntriesCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.lists().entries().create("11111111-2222-3333-4444-555555555555",
            ListsEntriesCreateParams.builder()
                    .value("+14155552671")
                    .comment("Reported fraud")
                    .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->lists->entries->create('11111111-2222-3333-4444-555555555555',
            [
                'value' => '+14155552671',
                'comment' => 'Reported fraud',
            ]);

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

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

            result = didit.lists.entries.create(
              "11111111-2222-3333-4444-555555555555",
              value: "+14155552671",
              comment: "Reported fraud"
            )
            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.Lists.Entries.CreateAsync("11111111-2222-3333-4444-555555555555",
            new ListsEntriesCreateParams

            {
                Value = "+14155552671",
                Comment = "Reported fraud",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    ComplianceListEntry:
      type: object
      description: قيمة واحدة في قائمة.
      required:
        - uuid
        - value
        - display_label
        - comment
        - added_by
        - reference_session_id
        - reference_session_number
        - reference_session_type
        - reference_object_uuid
        - metadata
        - created_at
      properties:
        uuid:
          type: string
          format: uuid
          description: معرّف المُدخل. استخدمه كـ `entry_uuid` في حذف مُدخل من قائمة.
        value:
          type: string
          description: >-
            القيمة المدرجة: رقم هاتف بصيغة E.164، أو عنوان بريد إلكتروني، أو رقم
            مستند، أو عنوان IP أو نطاق CIDR، أو بصمة جهاز، أو عنوان محفظة، أو
            حساب مصرفي، أو رمز دولة وفق معيار ISO 3166-1 alpha-3، أو
            `vendor_data`، أو أي سلسلة نصية في قائمة `key`، أو UUID للوجه المخزن
            في قائمة الوجوه. تُخزن القيم التي ترسلها بأحرف صغيرة، باستثناء أرقام
            الهواتف ورموز الدول. مطابقة النصوص غير حساسة لحالة الأحرف.
        display_label:
          type: string
          nullable: true
          maxLength: 512
          description: >-
            تسمية سهلة القراءة. تملؤها Didit للإدخالات المأخوذة من جلسة (على
            سبيل المثال اسم حامل المستند ورقمه) إذا لم ترسل أياً منها.
        comment:
          type: string
          description: ملاحظة بنص حر. سلسلة فارغة عند عدم التعيين.
        added_by:
          type: string
          nullable: true
          description: >-
            من أضاف الإدخال: `api` (مفتاح API)، أو عنوان البريد الإلكتروني
            لمستخدم لوحة التحكم أو `console`، أو `system` أو `migration`
            (إدخالات أنشأتها Didit)، أو `rule` (إجراء قاعدة معاملات أو قاعدة
            مراقبة).
        reference_session_id:
          type: string
          format: uuid
          nullable: true
          description: >-
            جلسة التحقق التي تم أخذ الإدخال منها. `null` عندما تتم إضافة الإدخال
            حسب القيمة.
        reference_session_number:
          type: integer
          nullable: true
          description: رقم لتلك الجلسة بنطاق التطبيق، كما يظهر في وحدة التحكم.
        reference_session_type:
          type: string
          nullable: true
          enum:
            - kyc
            - kyb
            - null
          description: >-
            `kyc` لجلسة التحقق من شخص، و`kyb` لجلسة التحقق من شركة، و`null`
            عندما لا توجد جلسة.
        reference_object_uuid:
          type: string
          format: uuid
          nullable: true
          description: >-
            السجل الذي يمثله الإدخال: سجل الوجه، أو المستند، أو الهاتف، أو
            البريد الإلكتروني المقروء من الجلسة، أو الوجه الذي تم إنشاؤه عبر
            تحميل وجه إلى قائمة، أو UUID الذي أرسلته (على سبيل المثال UUID
            لمعاملة أو `didit_internal_id` الخاص بالمستخدم).
        metadata:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            سياق إضافي. يحتوي على المفاتيح التي تعينها Didit (المدرجة هنا) مدمجة
            مع أي `metadata` أرسلتها عند إنشاء الإدخال، وتُعاد كما تم تخزينها.
            ويكون `null` عند عدم وجود أي منها.
          properties:
            reference_image_url:
              type: string
              description: >-
                مدخلات الوجه: عنوان URL قصير الأجل وموقّع، يُصدَر مجددًا مع كل
                استدعاء؛ ويكون `null` لمفتاح API ذي نطاق محدد بدون `media:
                read`. غير موجود عندما لا تنتمي أي صورة إلى المدخل.
            front_image_url:
              type: string
              description: >-
                مدخلات المستند التي تتضمن صورة أمامية للمستند: رابط URL موقّع
                قصير الأجل، يُصدر مجدداً عند كل استدعاء؛ `null` لمفتاح API ذي
                نطاق محدد دون صلاحية `media: read`.
            full_name:
              type: string
              description: 'مدخلات المستند المأخوذة من الجلسة: الاسم الكامل لحامل المستند.'
            issuing_state:
              type: string
              description: >-
                مدخلات المستند المأخوذة من الجلسة: دولة الإصدار بتنسيق ISO
                3166-1 alpha-3.
            document_type:
              type: string
              description: >-
                مدخلات المستند المأخوذة من الجلسة: رمز نوع المستند، على سبيل
                المثال `P` أو `ID` أو `DL`.
            region:
              type: string
              description: >-
                مدخلات المستند المأخوذة من الجلسة: الولاية أو المقاطعة المصدرة
                لمستند صادر إقليمياً، وتكون فارغة عندما لا تنطبق. لا يتم ضبطها
                بواسطة إضافة عناصر الجلسة إلى قائمة الحظر.
            document_number:
              type: string
              description: 'مدخلات المستند المأخوذة من الجلسة: رقم المستند.'
            face_image_source:
              type: string
              enum:
                - front_image_camera_front
                - back_image_camera_front
              description: >-
                مدخلات الوجه المأخوذة من صورة سيلفي ملتقطة مع المستند: أي صورة
                سيلفي. غير موجودة لوجوه كشف الحيوية.
            reference_node_id:
              type: string
              nullable: true
              description: >-
                مدخلات الوجه المأخوذة من صورة سيلفي ملتقطة مع المستند: عقدة
                التحقق من الهوية التي وردت منها صورة السيلفي.
            fingerprint_tier:
              type: string
              nullable: true
              enum:
                - persistent_id
                - composite_hash
                - legacy_fp
                - unknown
                - null
              description: >-
                مدخلات بصمة الجهاز المأخوذة من جلسة: كيفية استخلاص البصمة. يحدد
                `persistent_id` جهازاً واحداً؛ بينما يمكن مشاركة
                `composite_hash` و`legacy_fp` بين أجهزة من نفس الطراز.
            sandbox:
              type: boolean
              description: >-
                تكون القيمة `true` لمدخل وجه تم رفعه في تطبيق في البيئة
                التجريبية؛ ولا يطابق هذا المدخل أي شيء.
            reference_type:
              type: string
              enum:
                - transaction
                - vendor_user
                - vendor_business
              description: >-
                مُعيَّن بواسطتك: ما يشير إليه `reference_object_uuid`، لتربط
                لوحة التحكم به مجدداً.
            reference_id:
              type: string
              description: 'مُعيَّن بواسطتك: معرّف السجل المصدر.'
        created_at:
          type: string
          format: date-time
          description: وقت إضافة المُدخل.
  responses:
    RateLimitedWrite:
      description: >-
        تم تجاوز حد الكتابة المشترك البالغ 300 طلب في الدقيقة لكل مفتاح API.
        التزم بالمدة المحددة في `Retry-After` قبل إعادة المحاولة.
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
            properties:
              detail:
                type: string
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
  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.