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

# استيراد المستخدمين وتصديرهم: عمليات CSV جماعية

> استيراد كيانات مستخدمي البائع في Didit جماعياً من ملفات CSV وتصدير جدول المستخدمين الكامل لأدوات الامتثال الخارجية. متاح من وحدة تحكم الشركات.



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



      
      

\<pre>

\````# Goal — bulk-load (or extract) Didit User entities programmatically

CSV import / export is a console-only UI feature. For programmatic bulk operations, loop `POST /v3/users/create/` for imports, optionally upload trusted profile faces with `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`, and paginate `GET /v3/users/` for exports. There is no public CSV API endpoint.

\## Bulk import — loop the create endpoint

\```bash
\# users.json — array of records you want to seed into Didit
\# [{"vendor_data":"user-1","display_name":"Alice"}, ...]

jq -c '.[]' users.json | while read user; do
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d "$user"
sleep 0.1   # respect rate limits — see /integration/rate-limiting
done
\```

Record shape (matches `POST /v3/users/create/`):

\```json
\{
"vendor_data": "user-42",          // required, unique per app
"display_name": "Jane Doe",        // optional
"metadata": {"tier": "premium"},   // free-form JSON
"tags": ["promo-2026"]             // optional array of strings
}
\```

\`create` is **not** idempotent — a duplicate `vendor_data` returns conflict. Branch on existence:

\```bash
\# Idempotent upsert pattern
if curl -s -o /dev/null -w "%{http_code}" \
 https://verification.didit.me/v3/users/$VD/ \
 -H "x-api-key: $DIDIT_API_KEY" | grep -q 200; then
curl -X PATCH https://verification.didit.me/v3/users/$VD/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
else
curl -X POST https://verification.didit.me/v3/users/create/ \
-H "x-api-key: $DIDIT_API_KEY" -H "Content-Type: application/json" \
-d "$BODY"
fi
\```

\## Import faces from another provider

If each imported user has a trusted face image, upload it after the User exists:

\```bash
\# GET /v3/users/{vendor_data}/ or POST /v3/users/create/ first.
\# Use the returned didit_internal_id for the profile attachment endpoint.
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"image": "<base64-encoded-jpg-or-png>", "comment": "Imported from previous KYC provider"}'
\```

This stores the face on the User profile and enrolls it for duplicate detection and face search. It does not blocklist the face; use /management-api/lists/upload-face for blocklists.

\## Bulk export — paginate the list endpoint

\```bash
PAGE=1
while :; do
RESP=$(curl -sG https://verification.didit.me/v3/users/ \
-H "x-api-key: $DIDIT_API_KEY" \
\--data-urlencode "page=$PAGE" \
\--data-urlencode "page_size=100")
echo "$RESP" | jq -c '.results[]' >> users.ndjson
HAS_NEXT=$(echo "$RESP" | jq -r '.next // empty')
\[ -z "$HAS_NEXT" ] && break
PAGE=$((PAGE+1))
done
\```

Filter with the same query params as `GET /v3/users/` (`status`, `search`, date ranges, etc).

\## What survives on update vs what stays

\| Field | Behaviour |
\|---|---|
\| `display_name`, `metadata`, `tags` | Overwritten by PATCH |
\| `full_name`, `date_of_birth`, `portrait_image` | Read-only after a verified session (you can override via PATCH but it's logged as a manual override) |
\| Aggregate counters (`session_count`, `approved_count`, etc.) | Computed by Didit — never accept writes |
\| `features` map | Computed — never accept writes |

\## Failure modes

\- `409` on create — `vendor_data` exists; switch to PATCH.
\- `429` — rate limit; back off using `Retry-After`. Don't slam the API; insert 100ms+ between calls.
\- `400` — bad JSON or invalid country/status enum. Log the row and continue.
\- Partial failures: track `vendor_data` → status per row and retry only failures.

\## Console fallback

For one-off migrations bigger than 100K rows, the Business Console CSV import/export (Users → Import / Export) is fast and skips writing your own loop. The console runs the same validations and produces an error report.

\## Sources of truth

\- /management-api/users/create — POST /v3/users/create/ schema
\- /management-api/users/list — GET /v3/users/ pagination + filters
\- /entities/users/data-model — mutable vs read-only fields
\- /integration/rate-limiting — rate limits and Retry-After
\- /integration/integration-prompt — canonical end-to-end prompt````

\</pre>



      
      

الصق في

تتيح Business Console لفريقك إدارة كيانات User بالجملة دون كتابة أي كود. يدعم النظام تدفقين: **استيراد CSV** (إنشاء المستخدمين أو تحديثهم على نطاق واسع) و**تصدير CSV** (استخراج جدول المستخدمين لأدوات خارجية).> [!NOTE]
>
> يقتصر استيراد هذه البيانات وتصديرها هنا على إنشاء ملفات تعريف User أو تحديثها فقط. لا يعيد إنشاء جلسات KYC السابقة، أو تحذيرات المستندات، أو أدلة اكتشاف الحيوية، أو قرارات المزوّد. للترحيل الكامل من Sumsub أو MetaMap أو Veriff أو Onfido أو Persona أو أي مزوّد آخر، راجع [استيراد البيانات من مزوّد آخر](https://docs.didit.me/ar/sessions-api/import-verifications.md).## استيراد المستخدمين من ملف CSV### متى تستخدمه- **ترحيل في يوم الإطلاق** من مزوّد KYC آخر: انقل قائمة المستخدمين الحالية إلى Didit.
- **ترحيل صور الوجه من المزوّد**: أرفق صور الوجه الموثوقة بملفات تعريف User المستوردة بعد إنشاء الصفوف.
- **تسجيل جماعي** لقائمة عملاء شريك.
- **تعبئة البيانات الوصفية لاحقًا**: حدّث الوسوم أو المستوى أو المعرّفات الداخلية لعدد كبير من المستخدمين دفعة واحدة.### أعمدة القالبنزّل القالب من *Users → Import → Download template*. الأعمدة:| العمود | مطلوب | الوصف |
| - | - | - |
| `vendor_data` | نعم | معرّفك للمستخدم. يجب أن يكون فريدًا لكل تطبيق. |
| `display_name` | لا | اسم مقروء يظهر في وحدة التحكم. |
| `full_name` | لا | الاسم القانوني. سيُستبدل ببيانات الجلسة المتحقَّق منها. |
| `email` | لا | بريد إلكتروني معروف للتواصل. |
| `phone` | لا | رقم هاتف معروف للتواصل (بصيغة E.164). |
| `country` | لا | رمز الدولة وفق ISO 3166-1 alpha-3. |
| `status` | لا | `ACTIVE` أو `FLAGGED` أو `BLOCKED`. القيمة الافتراضية هي `ACTIVE`. |
| `tags` | لا | وسوم مفصولة بفواصل. |
| `metadata_json` | لا | JSON نصي للبيانات الوصفية المخصصة. |### تشغيل الاستيراد**1. ارفع ملف CSV**انتقل إلى *Users → Import → Upload CSV* واختر ملفك.**2. راجع المعاينة**تتحقق وحدة التحكم من كل صف. تُبرز الصفوف غير الصالحة مع أسباب الخطأ (مثل تكرار `vendor_data` أو رمز دولة غير صالح).**3. ابدأ الاستيراد**يعالج Didit الصفوف بشكل غير متزامن. يمكنك إغلاق علامة التبويب، ويُتابَع التقدم في *Users → Import history*.**4. راجع النتائج**عند انتهاء الاستيراد، يعرض سجل الاستيراد عدد الصفوف التي أُنشئت وحُدّثت وتم تخطيها، مع تقرير أخطاء قابل للتنزيل.### التحديث مقابل الإنشاء- إذا لم يكن `vendor_data` موجودًا، يُنشأ User جديد.
- إذا كان `vendor_data` موجودًا، يحدّث المستخدم الحالي (حقول الملف الشخصي والبيانات الوصفية).
- لا تُستبدل أبدًا العدادات الإجمالية والحقول المتحقَّق منها (`full_name` و`date_of_birth` من الجلسات المقبولة) عند الاستيراد.### استيراد الوجوه بعد إنشاء المستخدمينشئ استيراد CSV صف User أو يحدّثه. ولا يتضمن صور الوجه في ملف CSV. لنقل البيانات البيومترية للوجه من مزوّد آخر، ارفع كل وجه بعد وجود User المستهدف:**1. أنشئ User أو استورده**استخدم استيراد CSV في وحدة التحكم، أو استدعِ [`POST /v3/users/create/`](https://docs.didit.me/ar/management-api/users/create) في حلقة تكرار.**2. اقرأ didit\_internal\_id**استرجع User باستخدام [`GET /v3/users/{vendor_data}/`](https://docs.didit.me/ar/management-api/users/get). تتضمن الاستجابة `didit_internal_id`.**3. ارفع الوجه**استدعِ [`POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/`](https://docs.didit.me/ar/management-api/users/upload-face) مع صورة وجه بترميز base64 خام.```bash theme={null}
curl -X POST https://verification.didit.me/v3/organization/$ORGANIZATION_ID/application/$APPLICATION_ID/vendor-users/by-id/$DIDIT_INTERNAL_ID/faces/upload/ \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<base64-encoded-jpg-or-png>",
    "comment": "Imported from previous KYC provider"
  }'
```يجب أن تكون صورة الوجه صورة صالحة، بحجم أقصى 2 MB بعد فك الترميز، وأن تحتوي على وجه قابل للاكتشاف. يخزّن Didit الصورة في الملف الشخصي ويفهرسها لكشف التكرار والبحث بالوجه. لا تُضاف إلى قائمة الحظر للوجوه إلا إذا استخدمت نقطة النهاية [رفع وجه إلى قائمة](https://docs.didit.me/ar/management-api/lists/upload-face.md) بشكل منفصل.## تصدير المستخدمين إلى ملف CSV### متى تستخدمه- **تدقيقات الامتثال**: سلّم جدول المستخدمين الكامل إلى المدققين.
- **مزامنة مستودع البيانات**: تفريغ دوري إلى أدوات ذكاء الأعمال لديك.
- **طلبات SAR أو طلبات الجهات التنظيمية**: استخرج مجموعات فرعية مصفّاة من المستخدمين.### تشغيل التصدير1. انتقل إلى *Users → Export*.
2. طبّق المرشحات (الحالة، الدولة، النطاق الزمني، البحث).
3. اختر الأعمدة (الافتراضي هو كل الحقول، ويمكنك حذف ما لا تحتاجه).
4. أرسل الطلب. يُنشئ Didit التصدير بشكل غير متزامن ويرسل رابط تنزيل موقّع بالبريد الإلكتروني إلى المشغّل الذي طلبه.> [!NOTE]
>
> لا يتضمن التصدير إلا البيانات التي يُسمح لدورك بقراءتها. يمكن لـ COMPLIANCE\_OFFICER وما فوقه تصدير الجدول الكامل، بينما تخضع أدوار DEVELOPER وREADER لقيود على التصدير.## خصائص الأداء| العملية | الحجم المعتاد | ملاحظات |
| - | - | - |
| الاستيراد | حتى 100,000 صف | تُقسَّم الملفات الأكبر على الخادم؛ تستعلم الواجهة عن التقدم |
| التصدير | حتى 1,000,000 صف | تُبَث عمليات التصدير الأكبر إلى S3 وتُسلَّم عبر رابط موقّع |## سجل التدقيقيُسجَّل كل استيراد وتصدير في [سجل التدقيق](https://docs.didit.me/ar/console/audit-logs.md):- المشغّل الذي بدأ العملية.
- عدد الصفوف (للاستيراد) / لقطة المرشحات (للتصدير).
- الطوابع الزمنية وحالة النجاح أو الفشل.## الخطوات التالية> [card] [واجهة API إنشاء المستخدم](https://docs.didit.me/ar/management-api/users/create.md)
>
> الإنشاء البرمجي لعمليات الاستيراد التي تنفّذها البرامج النصية.> [card] [رفع وجه المستخدم](https://docs.didit.me/ar/management-api/users/upload-face.md)
>
> أرفق صور الوجه المستوردة بملفات تعريف المستخدمين.> [card] [الاحتفاظ بالبيانات](https://docs.didit.me/ar/console/data-retention.md)
>
> المدة التي تبقى فيها البيانات المستوردة محفوظة.> [card] [سجلات التدقيق](https://docs.didit.me/ar/console/audit-logs.md)
>
> راجع سجل الاستيراد والتصدير.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.