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

# استيراد البيانات من مزوّد آخر

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

يوضح هذا الدليل كيفية اختيار مسار الاستيراد المناسب عند نقل بياناتك من مزود آخر إلى Didit. يُطلق العملاء غالباً اسم «استيراد» على مهمتين مختلفتين:- **استيراد عمليات التحقق التاريخية:** إعادة إنشاء سجلات KYC وKYB ومراقبة المعاملات أو سجلات قواعد سير العمل المكتملة، بحيث تعرض Didit سجل المزود السابق. استخدم `POST /v3/session/imports/`.
- **استيراد بيانات التشغيل:** إنشاء المستخدمين والشركات وصور الوجه الشخصية وإدخالات قائمة الحظر أو قائمة السماح، حتى تتمكن Didit من استخدامها في الفحوصات المستقبلية. استخدم واجهات برمجة الكيانات وواجهات الوجوه والقوائم.تُنشئ عمليات استيراد التحقق سجلات تاريخية بقيمة `session_type: "MIGRATED"` لـ KYC وKYB. لا ترسل رسائل بريد إلكتروني إلى المستخدمين النهائيين، ولا توجّه المستخدمين إلى التدفق المستضاف، ولا تعيد تشغيل عملية التحقق الأصلية. تظهر السجلات المستوردة في قوائم الجلسات وملفات الكيانات وعروض المعاملات، وفي `GET /v3/session/{session_id}/decision/` حيثما ينطبق ذلك.## أيّ مسار استيراد تستخدم؟| الهدف | مسار الاستيراد | ما الذي يُنشئه | الأنسب لـ |
| - | - | - | - |
| إعادة إنشاء جلسات KYC التاريخية | `POST /v3/session/imports/` مع `import_type=user_verification` | `Session` وبيانات التحقق من الهوية، وصور المستندات وصور السيلفي اختيارياً، ومقاطع فيديو المستند وكشف الحيوية، والوسوم، والبيانات الوصفية | نقل المتقدمين الذين أكملوا عملية التحقق من Sumsub أو MetaMap أو Veriff أو Onfido أو Persona أو Jumio أو Incode أو iDenfy أو Trulioo أو أي مزود KYC آخر |
| إعادة إنشاء جلسات KYB التاريخية | `POST /v3/session/imports/` مع `import_type=business_verification` | `BusinessSession` وبيانات الشركة من السجل، والمسؤولين، والمستفيدين الحقيقيين، والوسوم، والبيانات الوصفية | نقل فحوصات الشركات المكتملة من مزودي KYB أو مزودي سجلات الشركات أو أدوات KYB الداخلية |
| إعادة إنشاء سجلات مراقبة المعاملات التاريخية | `POST /v3/session/imports/` مع `import_type=transactions` | `Transaction`، والأطراف موضوع المراقبة والأطراف المقابلة، ونتائج المزود، وبيانات Travel Rule، ولقطة الشبكة، والبيانات الوصفية | نقل سجل مراقبة المعاملات من محرك القواعد أو KYT أو فحص المحافظ أو مراقبة المعاملات بالعملات الورقية |
| استيراد قواعد حالات سير العمل المخصصة | `POST /v3/session/imports/` مع `import_type=status_rules` | `VerificationSettings.feature_status_rules` | نقل منطق السياسات من مزود آخر أو من جدول بيانات إلى محرك سير العمل في Didit |
| إنشاء مستخدمين بدون جلسات تاريخية | `POST /v3/users/create/` أو استيراد ملف CSV من Console | صفوف الملف الشخصي `VendorUser` | تحميل قائمة المستخدمين قبل بدء عمليات تحقق جديدة في Didit |
| إرفاق صور وجه موثوقة بالمستخدمين | `POST /v3/organization/{organization_id}/application/{application_id}/vendor-users/by-id/{didit_internal_id}/faces/upload/` | أدلة صور الوجه الشخصية المفهرسة لاكتشاف التكرار والبحث بالوجه | نقل صور الوجه الشخصية من مزود KYC آخر دون إعادة إنشاء الجلسات كاملة |
| إدراج وجوه في قائمة الحظر أو قائمة السماح | `POST /v3/lists/{list_uuid}/entries/face-upload/` أو `POST /v3/lists/{list_uuid}/entries/` مع `reference_session_id` | إدخال في قائمة الوجوه والتضمين البيومتري | نقل وجوه احتيال معروفة، أو وجوه موثوقة في قائمة السماح، أو حظر وجه من جلسة Didit موجودة |
| إنشاء شركات بدون جلسات KYB تاريخية | `POST /v3/businesses/create/` أو استيراد ملف CSV من Console | صفوف الملف الشخصي للشركة `VendorBusiness` | تحميل قائمة عملاء الشركات قبل تشغيل KYB |> [!NOTE]
>
> إذا كنت تحتاج فقط إلى ملف مستخدم أو شركة للفحوصات المستقبلية، فلا تستورد جلسة تحقق تاريخية. استخدم واجهات برمجة كيانات المستخدم أو الشركة. وإذا كنت تريد أن يظهر قرار المزود السابق أو حقول المستندات أو التحذيرات أو الأدلة كسجل امتثال في Didit، فاستخدم `POST /v3/session/imports/`.## ما الذي يمكن ترحيله من كل مزوّديقبل Didit ملف CSV أو NDJSON بالمخطط القياسي، لذا يمكنك الترحيل من أي مزوّد بعد تصدير البيانات وتحويلها. عقد الاستيراد هو دائماً مخطط Didit القياسي.| عائلة المزوّد | المصادر المعتادة | القابل للترحيل عادةً | ملاحظات |
| - | - | - | - |
| مزودو KYC | Sumsub وMetaMap وVeriff وOnfido وPersona وJumio وIncode وiDenfy وTrulioo وHyperVerge وAU10TIX وMitek وOndato | معرّف المتقدم، ومعرّف المستخدم لدى المزوّد، وحالة القرار، وحقول المستند، وصور المستند، وصورة السيلفي أو صورة كشف الحيوية، وتسميات الرفض، والوسوم، والبيانات الوصفية الخام للمزوّد | استخدم `import_type=user_verification`. إذا لم يستطع المزوّد تصدير الصور، فاستورد الحقول المنظمة واترك روابط الصور فارغة. |
| مزودو KYB | مزودو سجلات الشركات، وKYB من Sumsub، وKYB من Trulioo، وتصديرات السجلات بنمط Creditsafe، وأدوات KYB الداخلية | اسم الشركة، ورقم التسجيل، والدولة، وحالة السجل، والمسؤولون، والمستفيدون الحقيقيون، ومستوى المخاطر، والـ payload الخام للسجل | استخدم `import_type=business_verification`. يُمرَّر المسؤولون والمستفيدون الحقيقيون كمصفوفات JSON. |
| مزودو مراقبة المعاملات أو KYT | Sumsub Transaction Monitoring، وتصديرات KYT بنمط Chainalysis، وCrystal، وMerkle Science، وSardine، وUnit21، وAlloy، ومحركات القواعد الداخلية | معرّف المعاملة، والمبلغ، والعملة، والاتجاه، والجهة المعنية أو الطرف المقابل، ونتائج القواعد، ونتائج المزوّد، وحالة Travel Rule، ولقطة مخطط الشبكة | استخدم `import_type=transactions`. المعاملات المستوردة سجلات تاريخية، ولا تُعاد فحصها افتراضياً. |
| جداول بيانات سير العمل والسياسات | تصديرات سياسات الامتثال، وجداول قواعد المزوّد، وجداول المخاطر الداخلية | قواعد الحالة لكل ميزة، مثل "إذا كانت دولة الإصدار هي X، فاضبط التحقق من الهوية على قيد المراجعة" | استخدم `import_type=status_rules`. يتم التحقق من القواعد مقابل كتالوج حقول سير العمل في Didit قبل حفظها. |
| مخازن المستخدمين والملفات الشخصية | نظام CRM، وقاعدة بيانات العملاء، وتصدير مستخدمي المزوّد، ومستودع البيانات | `vendor_data`، والاسم المعروض، والبيانات الوصفية، والوسوم، وصور الوجه الموثوقة | استخدم User APIs ورفع صورة وجه الملف الشخصي. وهذا ليس مماثلاً لجلسة تحقق مكتملة. |
| بيانات قائمة الحظر وقائمة السماح | قوائم الاحتيال لدى المزوّدين، وجداول عمليات مكافحة الاحتيال الداخلية، وقوائم ردّ المبالغ، وقوائم داخلية ذات صلة بالعقوبات | رسائل البريد الإلكتروني، وأرقام الهواتف، والمستندات، والمحافظ، وعناوين IP، وبصمات الأجهزة، والوجوه، والدول، والمستخدمين، والشركات | استخدم Lists APIs. بالنسبة لصور الوجه، استخدم نقطة رفع الوجه المخصصة حتى يستخرج Didit التضمين البيومتري. |## سير عمل الترحيل1) حدّد ما إذا كنت تستورد السجل التاريخي أو الملفات الشخصية أو الوجوه أو القوائم أو المعاملات أو القواعد.
2) صدّر البيانات من المزوّد القديم بنفسك. لا ترسل مفاتيح API الخاصة بالمزوّد القديم إلى Didit.
3) حوّل تصدير المزوّد إلى قالب CSV أو NDJSON المطابق من Didit.
4) في الترحيلات الكبيرة، فضّل NDJSON وقسّم الملفات إلى ملفات يمكن إعادة محاولتها بشكل مستقل.
5) أنشئ مهمة الاستيراد واستعلم عن تقدمها.
6) اجلب أخطاء الصفوف، وأصلح الصفوف الفاشلة فقط، ثم أعد محاولتها. جميع مهام الاستيراد تتمتع بخاصية idempotency على أساس معرّفها الخارجي الطبيعي.## إنشاء مهمة استيرادأنشئ مهمة استيراد بطلب multipart واحد:```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/imports/ \
  -H "x-api-key: YOUR_API_KEY" \
  -F "import_type=user_verification" \
  -F "workflow_id=YOUR_KYC_WORKFLOW_ID" \
  -F "file=@didit-import.ndjson"
```استخدم CSV للترحيلات الأصغر المعتمدة على الجداول، واستخدم NDJSON للترحيلات الكبيرة. بالنسبة لـ 100k+ صف، يكون NDJSON أسهل في البث والتقسيم والتحقق وإعادة المحاولة.يمكن للتطبيق تشغيل ما يصل إلى 4 مهام استيراد في الوقت نفسه، لذا قسّم الترحيل الكبير إلى عدة ملفات، وابدأ مهمة لكل ملف. تُنزّل كل مهمة ملفات الوسائط الخاصة بالصف بالتوازي. والمهمة التي تتوقف بسبب عملية نشر أو إعادة تشغيل للعامل تكمل تلقائياً من آخر صف تم استيراده، لذا لا تحتاج إلى إعادة تشغيلها.بالنسبة لاستيراد المعاملات، احذف `workflow_id`:```bash theme={null}
curl -X POST https://verification.didit.me/v3/session/imports/ \
  -H "x-api-key: YOUR_API_KEY" \
  -F "import_type=transactions" \
  -F "file=@didit-transactions.ndjson"
```### حقول الطلب| الحقل | مطلوب | الوصف |
| - | - | - |
| `import_type` | لا، القيمة الافتراضية `user_verification` | إحدى القيم `user_verification` أو `business_verification` أو `status_rules` أو `transactions`. |
| `workflow_id` | نعم، إلا في حالة `transactions` | معرّف UUID لسير العمل الذي ترتبط به السجلات المستوردة. تحتاج `user_verification` و`status_rules` إلى سير عمل للتحقق من المستخدمين، بينما تحتاج `business_verification` إلى سير عمل للتحقق من الشركات. |
| `file` | إما `file` أو `source_file_url` | ملف CSV أو NDJSON بالمخطط القياسي، يُرفع مباشرةً داخل الطلب. |
| `source_file_url` | إما `file` أو `source_file_url` | عنوان HTTPS الذي يُنزّل منه Didit الملف. تُرفض عناوين الشبكة الخاصة. |
| `source_format` | لا | `csv` أو `ndjson`. يُستنتج من امتداد الملف عند إغفاله. |### كيفية تتبّع السجلات وإزالة التكرارلا يوجد في الطلب حقل لمصدر البيانات، إذ يستخدم كل استيراد مخطط Didit القياسي. ويحفظ كل سجل مستورد القيمة `metadata.imported_from = "generic"` لأغراض التتبع.تُزيل استيرادات `user_verification` و`business_verification` تكرار الصفوف حسب `external_id` داخل التطبيق، لذا لن تُنشئ إعادة محاولة الملف نفسه سجلات مكررة. أما استيرادات `transactions` فتُزيل التكرار حسب `transaction_id`.يخزّن ترحيل المزوّد (`source=provider`) كل سجل بالصيغة `<provider>:<id>`، مثل `sumsub:5f8c0e2a9b1d4c3e2f1a0b9c`.
يُعامَل استيراد ملف التحقق من المستخدمين الذي أرسل المعرّف الخام للمزوّد (`5f8c0e2a9b1d4c3e2f1a0b9c`) على أنه السجل نفسه في الاتجاهين. لذلك يمكنك بدء الترحيل عبر الملفات وإنهاءه بترحيل المزوّد، أو العكس، دون استيراد أي سجل مرتين.## استيراد صور المستندات والفيديوهات وأدلة السيلفيبالنسبة إلى `import_type=user_verification`، يمكنك استيراد صور المستندات الأصلية، وفيديوهات التقاط المستند والحيوية، وصورة سيلفي من المزوّد السابق.استخدم هذه الأعمدة المعيارية:| الدليل | العمود المفضل | البديل للاستيراد الصغير | يُخزَّن في Didit كـ |
| - | - | - | - |
| صورة المستند الأمامية | `document_front_url` | `document_front_base64` | صورة OCR الأمامية في التحقق من الهوية |
| صورة المستند الخلفية | `document_back_url` | `document_back_base64` | صورة OCR الخلفية في التحقق من الهوية |
| صورة السيلفي / الحيوية | `selfie_url` | `selfie_base64` | صورة مرجعية للوجه/الحيوية |
| فيديو المستند الأمامي | `document_front_video_url` | رابط URL فقط | فيديو OCR الأمامي في التحقق من الهوية |
| فيديو المستند الخلفي | `document_back_video_url` | رابط URL فقط | فيديو OCR الخلفي في التحقق من الهوية |
| فيديو الحيوية | `liveness_video_url` | رابط URL فقط | فيديو التقاط الوجه/الحيوية |بالنسبة إلى عمليات الترحيل الكبيرة، استخدم **روابط HTTPS**. تُنزّل Didit كل ملف، وتتحقق من أن الرابط آمن، وتخزّن نسخة مملوكة لـ Didit، وتربطها بالجلسة المستوردة. تُضغط الصور، أما الفيديوهات فتُخزَّن كما هي. يُقبل ترميز base64 المضمّن للصور في عمليات الاستيراد الصغيرة، لكن **يجب دائماً تقديم الفيديوهات كروابط URL**، لأن base64 سيزيد حجم كل فيديو بنحو 33% وسيتجاوز بسرعة حد الاستيراد لكل ملف.مثال على صف NDJSON يحتوي على روابط وسائط مستضافة لدى المزوّد:```json theme={null}
{
  "external_id": "applicant-123",
  "vendor_data": "user-42",
  "created_at": "2025-01-12T10:30:00Z",
  "status": "Approved",
  "email": "user@example.com",
  "phone": "+34687020083",
  "first_name": "Jane",
  "last_name": "Doe",
  "date_of_birth": "1990-05-15",
  "document_type": "P",
  "issuing_state": "USA",
  "document_number": "123456789",
  "expiration_date": "2030-01-15",
  "document_front_url": "https://provider-export.example.com/files/applicant-123-front.jpg",
  "document_back_url": "https://provider-export.example.com/files/applicant-123-back.jpg",
  "selfie_url": "https://provider-export.example.com/files/applicant-123-selfie.jpg",
  "document_front_video_url": "https://provider-export.example.com/files/applicant-123-front.webm",
  "document_back_video_url": "https://provider-export.example.com/files/applicant-123-back.webm",
  "liveness_video_url": "https://provider-export.example.com/files/applicant-123-liveness.mp4",
  "reject_reasons_json": "[]",
  "provider_metadata_json": "{\"source\":\"sumsub-export\"}"
}
```قواعد الوسائط المهمة:- يجب أن تستخدم الروابط البروتوكول `https`.
- يجب ألا تُحلّ الروابط إلى عناوين IP خاصة أو إلى localhost أو نطاقات الارتباط المحلي أو مضيفي البيانات الوصفية الداخلية.
- تقبل الصور إما عمود رابط أو بديله `*_base64`، وإذا تم ضبط الاثنين معاً تكون الأولوية لـ base64. الفيديوهات تُقبل كروابط URL فقط، ولا يوجد عمود `*_video_base64`.
- يجب أن تكون الفيديوهات بصيغة `mp4` أو `webm` أو `mov`، وألا يتجاوز حجم كل فيديو **10 MB**. تُرفض الملفات الأكبر أو التي ليست فيديوهات كأخطاء صفوف.
- تُطبّق Didit مهلات الاتصال والقراءة، وحداً أقصى لحجم الملف، ولا تُعيد المحاولة إلى ما لا نهاية.
- تُسجَّل إخفاقات تنزيل الوسائط كأخطاء صفوف حتى يستمر باقي الاستيراد.
- إذا لم تكن لديك وسائط من المزوّد، فاترك هذه الأعمدة فارغة. ستستورد Didit القرار المنظم وحقول المستند على كل حال.
- الصور والفيديوهات المستوردة أدلة للمراجعة التاريخية. لا تُعيد Didit تشغيل OCR أو تحليل الحيوية أو تحليل احتيال المستندات على الوسائط التاريخية المستوردة بشكل افتراضي.

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



      
      

\<pre>

\`You are helping migrate historical User Verification (KYC) sessions into Didit.

Goal:
Transform the customer's Sumsub, MetaMap, or provider export into Didit's canonical verification import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=user_verification
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for a User Verification workflow
\- Provider export file or API output

Canonical columns:
external_id, vendor_data, created_at, status, email, phone, first_name, last_name, date_of_birth, gender, nationality, document_type, issuing_state, document_number, personal_number, expiration_date, document_front_url, document_back_url, selfie_url, document_front_base64, document_back_base64, selfie_base64, document_front_video_url, document_back_video_url, liveness_video_url, is_blocklisted, reject_reasons_json, tags, provider_metadata_json

Rules:
\- phone is optional and accepts international format (for example +34687020083); it is stored on the imported session.
\- external_id must be the provider's unique verification/applicant id.
\- vendor_data must be the customer's stable user id. If absent, use the provider identity/user id.
\- status must be Approved, Declined, In Review, or Expired.
\- date_of_birth and expiration_date must use YYYY-MM-DD.
\- created_at must be ISO 8601.
\- nationality and issuing_state must be ISO-3166 alpha-3, for example USA, ESP, BRA.
\- document_type must use Didit codes: P, ID, DL, RP, SSC, HIC, WP, TC, VISA, PSC, BC, OTHER.
\- reject_reasons_json must be a JSON array. provider_metadata_json must be a JSON object.
\- Use document_front_url, document_back_url, and selfie_url when the provider can export evidence images. Use HTTPS media URLs for large imports. Avoid inline base64 unless the import is small.
\- Use document_front_video_url, document_back_video_url, and liveness_video_url to import capture videos. Videos must be mp4, webm, or mov and at most 10 MB each; otherwise the row is rejected.
\- If only one document side exists, fill document_front_url and leave document_back_url empty.
\- Never call the import API with provider credentials. The customer downloads provider data themselves.
\- The import is idempotent by external_id inside one Didit application, so retries are safe.

Steps:
1\. Inspect the provider export schema.
2\. Map each provider row to the canonical fields.
3\. Write NDJSON for large files; one JSON object per line.
4\. Validate the first 10 rows locally before uploading.
5\. Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=user_verification" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-import.ndjson"
6\. Poll until status is COMPLETED or FAILED.
7\. If failed_count is greater than 0, fetch /errors/ and produce a corrected file containing only failed rows.

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A short summary of created, skipped, and failed rows.`

\</pre>



      
      

الصق في



موجّه استيراد التحقق من الشركات (KYB)
        نسخ الموجّه إلى الحافظة



      
      

\<pre>

\`You are helping migrate historical Business Verification (KYB) sessions into Didit.

Goal:
Transform the customer's KYB provider export into Didit's canonical business verification import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=business_verification
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for a Business Verification workflow
\- Provider export file or API output

Canonical business columns:
external_id, vendor_data, created_at, status, company_name, registration_number, country_code, registry_status, verification_status, company_type, tax_number, risk_level, incorporation_date, registered_address, is_from_registry, officers_json, beneficial_owners_json, provider_metadata_json, tags

Rules:
\- external_id must be the provider's unique business verification id.
\- vendor_data must be the customer's stable business id.
\- status must be Approved, Declined, In Review, or Expired.
\- country_code must be ISO-3166 alpha-3.
\- officers_json and beneficial_owners_json must be JSON arrays of objects.
\- provider_metadata_json must be a JSON object.
\- The import is idempotent by external_id inside one Didit application.

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=business_verification" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-business-import.ndjson"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A short summary of created, skipped, and failed rows.`

\</pre>



      
      

الصق في



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



      
      

\<pre>

\`You are helping import custom status rules into a Didit workflow.

Goal:
Transform the customer's policy spreadsheet into Didit's feature_status_rules format, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=status_rules
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- DIDIT_WORKFLOW_ID for the workflow to update
\- A policy spreadsheet or JSON policy definition

Canonical status-rule columns:
feature, rules_json, mode

Rules:
\- feature must be a Didit feature key such as OCR, LIVENESS, FACE_MATCH, AML, KYB_REGISTRY, KYB_DOCUMENTS, or KYB_KEY_PEOPLE.
\- rules_json must be a JSON array of rule objects.
\- Each rule needs field, operator, status, and usually value.
\- mode is replace or append. Default is replace.
\- Do not reference status fields such as kyc.status; status rules compute status and must use other report fields.

Example rules_json:
\[{"field":"kyc.issuing_state","operator":"in","value":["VEN","IRN"],"status":"In Review"}]

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=status_rules" \
-F "workflow_id=$DIDIT_WORKFLOW_ID" \
-F "file=@didit-status-rules.csv"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A summary of updated and failed rule rows.`

\</pre>



      
      

الصق في



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



      
      

\<pre>

\`You are helping migrate historical transaction monitoring records into Didit.

Goal:
Transform the customer's legacy transaction monitoring export into Didit's canonical transaction import file, then call Didit's import API.

Didit API:
\- Create import job: POST https://verification.didit.me/v3/session/imports/
\- Poll job: GET https://verification.didit.me/v3/session/imports/{import_id}/
\- Read row errors: GET https://verification.didit.me/v3/session/imports/{import_id}/errors/
\- Download template: GET https://verification.didit.me/v3/session/imports/template/?import_type=transactions
\- Authenticate with x-api-key: <DIDIT_API_KEY>

Inputs you need:
\- DIDIT_API_KEY
\- A transaction export file or API output

Canonical transaction columns:
transaction_id, transaction_at, transaction_category, direction, amount, currency, currency_kind, amount_in_default_currency, default_currency, payment_details, payment_reference_id, action_type, status, score, severity, subject_json, counterparty_json, custom_properties_json, provider_results_json, travel_rule_json, network_snapshot_json, metadata_json

Rules:
\- transaction_id is required and is idempotent per Didit application.
\- transaction_category must be one of Didit's transaction categories, for example finance, kyc, travelRule, userPlatformEvent, gamblingBet, gamblingLimitChange, gamblingBonusChange, or auditTrailEvent.
\- direction must be INBOUND or OUTBOUND.
\- status must be APPROVED, IN_REVIEW, DECLINED, or AWAITING_USER.
\- subject_json must include vendor_data and full_name.
\- counterparty_json is optional but should be included when the legacy provider has it.
\- provider_results_json must be a JSON array.
\- travel_rule_json, network_snapshot_json, custom_properties_json, and metadata_json must be JSON objects when present.

Create an import job:
curl -X POST https://verification.didit.me/v3/session/imports/ \
-H "x-api-key: $DIDIT_API_KEY" \
-F "import_type=transactions" \
-F "file=@didit-transactions.ndjson"

Output:
\- A canonical CSV or NDJSON file ready for Didit.
\- The curl command used to create the import job.
\- The import_id and polling command.
\- A summary of created, skipped, and failed transaction rows.`

\</pre>



      
      

الصق في

## متابعة التقدم```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/ \
  -H "x-api-key: YOUR_API_KEY"
```تتضمن الاستجابة الحقول `status` و`import_type` و`total_rows` و`processed_rows` و`created_count` و`updated_count` و`skipped_count` و`failed_count` و`checkpoint_row`.## تنزيل أخطاء الصفوف```bash theme={null}
curl https://verification.didit.me/v3/session/imports/IMPORT_ID/errors/ \
  -H "x-api-key: YOUR_API_KEY"
```يتضمن كل خطأ الحقول `row_number` و`external_id` و`error` و`raw_row`، حتى تتمكن من إصلاح الصفوف الفاشلة فقط وإعادة المحاولة.## الحماية من إساءة الاستخداممهام الاستيراد التاريخية عبر `POST /v3/session/imports/` معطّلة افتراضياً. تفعّل Didit هذه القدرة لكل مؤسسة بعد المراجعة، لأن هذه المهام قد تعالج ملايين الصفوف وتنزّل الوسائط. أما عمليات الاستيراد العادية لبيانات التشغيل في هذا الدليل، مثل إنشاء المستخدمين، وإنشاء الشركات، ورفع صور الوجه للملفات الشخصية، ورفع قوائم حظر الوجوه، أو إضافة إدخالات القوائم، فلا تتطلب تفعيلاً خاصاً للترحيل، بل تكفيها أذونات مفتاح API العادية، وتوفر المنتج، وحدود المعدل الخاصة بتلك الـ endpoints.تعمل مهام الاستيراد التاريخية أيضاً على عمليات عاملة معزولة مع حدود لحجم الملفات، وحدود لعدد الصفوف، وروابط وسائط HTTPS فقط، وحظر الروابط المؤدية إلى الشبكات الخاصة، وحد أقصى 4 مهام استيراد نشطة لكل تطبيق، وتسجيل أخطاء كل صف على حدة.## الحالات المعيارية| نتيجة المزوّد | حالة Didit |
| - | - |
| مقبولة / أخضر / تم التحقق | `Approved` |
| مرفوضة / أحمر / مرفوضة | `Declined` |
| مراجعة يدوية / قيد الانتظار / بحاجة إلى مراجعة | `In Review` |
| غير مكتمل / التهيئة / صف تاريخي غير معروف | `Expired` |## idempotencyتستخدم Didit الحقل `external_id` مفتاح idempotency للاستيراد في عمليات استيراد التحقق من المستخدمين وعمليات استيراد التحقق من الشركات (KYB)، ضمن نطاق كل تطبيق. أما استيراد المعاملات فيستخدم `transaction_id` ضمن كل تطبيق. عند إعادة محاولة الملف نفسه، يتم تخطي الصفوف التي استُوردت سابقاً وإنشاء الصفوف التي لم تُعالج بعد.## استيراد المستخدمين وصور الوجه للملفات الشخصية وقوائم الحظراستخدم هذه المسارات عندما لا تعيد إنشاء جلسة تحقق مكتملة:### استيراد الملفات الشخصية للمستخدمينأنشئ المستخدمين باستخدام [`POST /v3/users/create/`](https://docs.didit.me/ar/management-api/users/create) أو استيراد CSV في Business Console من [Import and Export Users](https://docs.didit.me/ar/entities/users/import-export.md). يؤدي هذا إلى إنشاء ملف `VendorUser` الشخصي أو تحديثه فقط. ولا يُنشئ جلسة تحقق، أو قرار KYC، أو تقرير مستند، أو تحذيراً، أو سجل webhook.استخدم هذا المسار عندما تريد أن يعرف Didit بوجود العميل قبل عمليات التحقق المستقبلية، أو عندما تحتاج إلى تعبئة حقول شبيهة بحقول CRM مثل `display_name` والوسوم والبيانات الوصفية بأثر رجعي.### رفع صور الوجه الموثوقة للملف الشخصيبعد وجود مستخدم، ارفع صورة وجه موثوقة للملف الشخصي باستخدام [`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). يُرفق هذا الإجراء الدليل البيومتري بالملف الشخصي للمستخدم ويفهرسه لاكتشاف التكرار والبحث بالوجه.**لا** يُدرج هذا الإجراء الوجه في قائمة الحظر. وهو مفيد عندما تملك صورة شخصية موثوقة من مزوّد KYC سابق وتريد أن تُقارَن الفحوصات المستقبلية في Didit بها.### استيراد قوائم الحظر والسماح للوجوهلحظر وجه أو السماح به مباشرة، استخدم [`POST /v3/lists/{list_uuid}/entries/face-upload/`](https://docs.didit.me/ar/management-api/lists/upload-face) مع قائمة مخصّصة للوجوه. يستخرج Didit تضمين الوجه البيومتري ويخزّن إدخالاً في القائمة.استخدم هذا المسار لصور المحتالين المعروفين، أو الوجوه المدرجة في قائمة السماح الموثوقة، أو ترحيل قوائم الاحتيال من مزوّد آخر. إذا كان الوجه مأخوذاً من جلسة Didit موجودة، ففضّل [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/ar/management-api/lists/create-entry) مع `reference_session_id`؛ إذ يستخرج Didit الوجه الصحيح من الجلسة ويربط الإدخال بمصدره.### استيراد قوائم المستخدمين أو الشركات أو المستندات أو المحافظ أو البريد الإلكتروني أو الهاتف أو IP أو الجهازاستخدم [`POST /v3/lists/{list_uuid}/entries/`](https://docs.didit.me/ar/management-api/lists/create-entry) لقيم القوائم غير المتعلقة بالوجوه. هذا هو المسار الصحيح لقوائم الحظر والسماح الواردة من المزوّدين، وقوائم الاسترداد المالي (ردّ المبالغ)، وعناوين المحافظ، وعناوين IP المعروفة بالمخاطر، وبصمات الأجهزة، وأرقام المستندات، وعناوين البريد الإلكتروني، وأرقام الهواتف، والمستخدمين، والشركات.## الخطوات التالية> [card] [استيراد المستخدمين](https://docs.didit.me/ar/entities/users/import-export.md)
>
> تحميل الملفات الشخصية للمستخدمين وإرفاق صور الوجه الموثوقة بها.> [card] [استيراد الشركات](https://docs.didit.me/ar/entities/businesses/import-export.md)
>
> تحميل الملفات الشخصية للشركات قبل تشغيل KYB.> [card] [رفع صورة الوجه للملف الشخصي](https://docs.didit.me/ar/management-api/users/upload-face.md)
>
> إرفاق صور وجه موثوقة بالمستخدمين المستوردين.> [card] [رفع وجه إلى قائمة](https://docs.didit.me/ar/management-api/lists/upload-face.md)
>
> إضافة وجوه إلى قوائم الحظر أو السماح.> [card] [إنشاء إدخال في قائمة](https://docs.didit.me/ar/management-api/lists/create-entry.md)
>
> استيراد أرقام الهواتف أو عناوين البريد الإلكتروني أو المحافظ أو المستندات أو عناوين IP أو الأجهزة أو المستخدمين أو الشركات إلى القوائم.> [card] [حدود المعدل](https://docs.didit.me/ar/integration/rate-limiting.md)
>
> تصميم حلقات ترحيل آمنة وإعادة المحاولات.


## OpenAPI

````yaml ar/openapi-25.json POST /v3/session/imports/
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/session/imports/:
    post:
      tags:
        - Sessions
      summary: أنشئ مهمة استيراد للتحقق
      description: >-
        إنشاء مهمة استيراد غير متزامنة لجلسات التحقق من المستخدمين التاريخية، أو
        جلسات التحقق من الشركات (KYB)، أو سجلات مراقبة المعاملات، أو قواعد
        الحالات المخصصة لسير العمل. عيّن `source=provider` للترحيل من مزود آخر:
        يقرأ Didit كلاً من Sumsub وOnfido وPersona وComplyCube باستخدام مفتاحك
        المخصص للقراءة فقط، ويقرأ سجلات Veriff وiDenfy وMetaMap عبر المعرّفات
        التي ترفعها في `file`، ويستورد ملف تصدير بتنسيق Didit للمزودين الآخرين.
        تضاف مساحة أسماء إلى معرّفات السجلات بحسب المزود (`sumsub:<id>`) بحيث
        يتخطى تشغيل العملية مجدداً كل ما هو موجود بالفعل في Didit، كما يتم
        التعرف على السجل المستورد عبر ملف بالمعرّف المجرّد للمزود في كلا
        الاتجاهين، وبالتالي فإن التبديل بين استيراد ملف والترحيل من مزود لن
        يستورد سجلاً مرتين أبداً. يمكن للتطبيق تشغيل ما يصل إلى 4 مهام استيراد
        في وقت واحد؛ وتستأنف المهمة التي توقفت بسبب عملية نشر أو إعادة تشغيل
        عامل المعالجة من آخر صف تم استيراده تلقائياً. تكون عمليات الاستيراد
        معطلة افتراضياً ويجب تفعيلها لكل مؤسسة بواسطة Didit.
      operationId: post_v3_session_imports_create
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                import_type:
                  type: string
                  enum:
                    - user_verification
                    - business_verification
                    - status_rules
                    - transactions
                  default: user_verification
                  description: >-
                    ما سيتم استيراده: جلسات التحقق من المستخدمين التاريخية، أو
                    جلسات التحقق من الشركات التاريخية، أو قواعد الحالة المخصصة
                    لسير العمل، أو سجلات مراقبة المعاملات التاريخية.
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    معرّف UUID لسير العمل الذي يجب إرفاق الجلسات المستوردة أو
                    قواعد الحالة به. مطلوب لـ user_verification
                    وbusiness_verification وstatus_rules. لا تُدرجه للمعاملات.
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: اختياري. يُستنتج من امتداد الملف المرفوع عند حذفه.
                file:
                  type: string
                  format: binary
                  description: >-
                    ملف CSV أو NDJSON قياسي. استخدم NDJSON لعمليات الاستيراد
                    الكبيرة. الحد الأقصى لحجم الرفع 25 ميغابايت (استخدم
                    `source_file_url` للملفات الأكبر). يتعارض مع
                    `source_file_url`.
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    بديل لتحميل الملفات. يجب أن يكون رابط HTTPS يوجه إلى عنوان
                    عام (يتم رفض الشبكات الخاصة أو شبكات الاسترجاع). لا يمكن
                    استخدامه مع `file`.
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider` يجعل هذا نقلاً من مزود آخر للتحقق من الهوية.
                    احذفه عند استيراد ملف.
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    مصدر الترحيل، من `GET /v3/session/imports/providers/`. مطلوب
                    عندما يكون `source` هو `provider`.
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    المفتاح المخصص للقراءة فقط الخاص بالمزود، بأسماء الحقول التي
                    تسردها `credential_fields`. مشفر في وضع السكون، ولا يُعاد
                    أبداً، ويتم محوه عند انتهاء الاستيراد. أرسله كسلسلة JSON
                    نصية في multipart.
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: >-
                        منطقة المزود، إحدى `regions` التابعة له (Onfido: `eu`،
                        `us`، `ca`).
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    تعديلات على تعيين الحالة الافتراضي للمزود: من حالة المصدر
                    إلى حالة Didit. يتم تخطي الحالتين `Not Finished`
                    و`Abandoned` وحسابهما، ولا يتم استيرادهما أبداً.
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    حساب ما ستستورده عملية الترحيل (حسب الحالة، موجود بالفعل في
                    Didit، نفس الشخص، غير مكتمل) وعدم كتابة أي شيء. تنتهي المهمة
                    بالحالة `READY`؛ ابدأها باستخدام `POST
                    /v3/session/imports/{importId}/start/`.
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    إنشاء قوالب بيومترية للوجوه من صور السيلفي المستوردة والبحث
                    عنها ومقارنتها بوجوه التطبيق وقائمة الحظر. يتم وضع علامة على
                    التطابقات للمراجعة فقط. يتطلب `lawful_basis_confirmed`.
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: >-
                    يؤكد أن لديك أساساً قانونياً لمشاركة صور السيلفي هذه مع
                    Didit كمعالج.
          application/json:
            schema:
              type: object
              required:
                - source_file_url
              properties:
                import_type:
                  type: string
                  enum:
                    - user_verification
                    - business_verification
                    - status_rules
                    - transactions
                  default: user_verification
                  description: >-
                    ما سيتم استيراده: جلسات التحقق من المستخدمين التاريخية، أو
                    جلسات التحقق من الشركات التاريخية، أو قواعد الحالة المخصصة
                    لسير العمل، أو سجلات مراقبة المعاملات التاريخية.
                workflow_id:
                  type: string
                  format: uuid
                  description: >-
                    معرّف UUID لسير العمل الذي يجب إرفاق الجلسات المستوردة أو
                    قواعد الحالة به. مطلوب لـ user_verification
                    وbusiness_verification وstatus_rules. لا تُدرجه للمعاملات.
                source_format:
                  type: string
                  enum:
                    - csv
                    - ndjson
                  description: اختياري. يُستنتج من امتداد ملف الرابط عند حذفه.
                source_file_url:
                  type: string
                  format: uri
                  description: >-
                    بديل لتحميل الملفات. يجب أن يكون رابط HTTPS يوجه إلى عنوان
                    عام (يتم رفض الشبكات الخاصة أو شبكات الاسترجاع). لا يمكن
                    استخدامه مع `file`.
                source:
                  type: string
                  enum:
                    - file
                    - provider
                  description: >-
                    `provider` يجعل هذا نقلاً من مزود آخر للتحقق من الهوية.
                    احذفه عند استيراد ملف.
                provider:
                  type: string
                  enum:
                    - sumsub
                    - jumio
                    - veriff
                    - onfido
                    - persona
                    - metamap
                    - socure
                    - idnow
                    - shufti
                    - idenfy
                    - ondato
                    - trulioo
                    - au10tix
                    - complycube
                    - other
                  description: >-
                    مصدر الترحيل، من `GET /v3/session/imports/providers/`. مطلوب
                    عندما يكون `source` هو `provider`.
                credentials:
                  type: object
                  additionalProperties:
                    type: string
                  description: >-
                    المفتاح المخصص للقراءة فقط الخاص بالمزود، بأسماء الحقول التي
                    تسردها `credential_fields`. مشفر في وضع السكون، ولا يُعاد
                    أبداً، ويتم محوه عند انتهاء الاستيراد. أرسله كسلسلة JSON
                    نصية في multipart.
                options:
                  type: object
                  properties:
                    region:
                      type: string
                      description: >-
                        منطقة المزود، إحدى `regions` التابعة له (Onfido: `eu`،
                        `us`، `ca`).
                status_mapping:
                  type: object
                  additionalProperties:
                    type: string
                    enum:
                      - Approved
                      - Declined
                      - In Review
                      - Expired
                      - Not Finished
                      - Abandoned
                  description: >-
                    تعديلات على تعيين الحالة الافتراضي للمزود: من حالة المصدر
                    إلى حالة Didit. يتم تخطي الحالتين `Not Finished`
                    و`Abandoned` وحسابهما، ولا يتم استيرادهما أبداً.
                dry_run:
                  type: boolean
                  default: false
                  description: >-
                    حساب ما ستستورده عملية الترحيل (حسب الحالة، موجود بالفعل في
                    Didit، نفس الشخص، غير مكتمل) وعدم كتابة أي شيء. تنتهي المهمة
                    بالحالة `READY`؛ ابدأها باستخدام `POST
                    /v3/session/imports/{importId}/start/`.
                face_templates:
                  type: boolean
                  default: false
                  description: >-
                    إنشاء قوالب بيومترية للوجوه من صور السيلفي المستوردة والبحث
                    عنها ومقارنتها بوجوه التطبيق وقائمة الحظر. يتم وضع علامة على
                    التطابقات للمراجعة فقط. يتطلب `lawful_basis_confirmed`.
                lawful_basis_confirmed:
                  type: boolean
                  default: false
                  description: >-
                    يؤكد أن لديك أساساً قانونياً لمشاركة صور السيلفي هذه مع
                    Didit كمعالج.
            examples:
              URL-based import:
                value:
                  import_type: user_verification
                  workflow_id: 9f9b1234-aaaa-bbbb-cccc-1234567890ab
                  source_file_url: https://files.example.com/exports/sessions.ndjson
      responses:
        '201':
          description: >-
            تم قبول مهمة الاستيراد. قم بالاستقصاء الدوري لـ `uuid` المُعاد حتى
            تصبح `status` هي `COMPLETED` أو `FAILED`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionImportJob'
              examples:
                Job accepted:
                  value:
                    uuid: 3f9c1a2b-4d5e-4f60-8a7b-9c0d1e2f3a4b
                    status: PENDING
                    import_type: user_verification
                    source_format: ndjson
                    source_filename: sessions.ndjson
                    total_rows: 0
                    processed_rows: 0
                    checkpoint_row: 0
                    created_count: 0
                    updated_count: 0
                    skipped_count: 0
                    failed_count: 0
                    total_media_bytes: 0
                    last_error: null
                    created_at: '2026-05-17T08:42:11Z'
                    updated_at: '2026-05-17T08:42:11Z'
                    started_at: null
                    completed_at: null
        '400':
          description: >-
            سير عمل، أو نوع ملف، أو حجم ملف، أو رابط مصدر، أو توليفة محددات غير
            صالحة. عملية الترحيل التي يرفض المزود مفتاحها تُرجع `code`
            (`invalid_credentials` أو `missing_permission` أو `wrong_region` أو
            `provider_unavailable` أو `rate_limited` أو `ids_required` أو
            `record_not_found`) و `missing_permissions` و `suggested_region`.
          content:
            application/json:
              examples:
                Invalid workflow:
                  value:
                    workflow_id:
                      - Invalid workflow_id.
                Workflow required:
                  value:
                    workflow_id:
                      - This field is required for this import type.
                Wrong file type:
                  value:
                    file:
                      - Only CSV and NDJSON files are supported.
                File too large:
                  value:
                    file:
                      - Import file exceeds the maximum allowed size.
                No source:
                  value:
                    file:
                      - Upload a file or provide source_file_url.
                Both sources:
                  value:
                    file:
                      - Use either file or source_file_url, not both.
        '403':
          description: >-
            عمليات الاستيراد غير مفعّلة، أو أن التطبيق في البيئة التجريبية، أو
            مفتاح API مفقود (المفتاح الخاطئ أو الملغى أو منتهي الصلاحية يتلقى
            `401`). يتم تعطيل استيراد عمليات التحقق افتراضياً ويجب تمكينه لكل
            مؤسسة بواسطة Didit.
          content:
            application/json:
              examples:
                Imports not enabled:
                  value:
                    detail: >-
                      Verification imports are not enabled for this
                      organization.
                Sandbox:
                  value:
                    detail: >-
                      Verification imports are not enabled for sandbox
                      applications.
                Bad API key:
                  value:
                    detail: You do not have permission to perform this action.
        '429':
          description: >-
            لدى التطبيق بالفعل 4 مهام استيراد نشطة (PENDING/PROCESSING/PAUSED)،
            وهو الحد الأقصى الذي يمكنه تشغيله في وقت واحد. انتظر حتى تكتمل
            إحداها قبل بدء مهمة أخرى.
          content:
            application/json:
              examples:
                Active job:
                  value:
                    detail: >-
                      This application already has 4 active import jobs, the
                      most it can run at once. Wait for one to finish before
                      starting another.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            result = client.sessions.imports.create(
                import_type="user_verification",
                workflow_id="9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                source_file_url="https://files.example.com/exports/sessions.ndjson",
            )
            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.sessions.imports.create({
              import_type: "user_verification",
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              source_file_url: "https://files.example.com/exports/sessions.ndjson",
            });
            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresult, err := client.Sessions.Imports.Create(ctx, didit.SessionsImportsCreateParams{\n\tImportType:    didit.Some(didit.SessionsImportsCreateParamsImportType(\"user_verification\")),\n\tWorkflowID:    didit.String(\"9f9b1234-aaaa-bbbb-cccc-1234567890ab\"),\n\tSourceFileURL: didit.String(\"https://files.example.com/exports/sessions.ndjson\"),\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.SessionsImportsCreateParams;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            var result =
            client.sessions().imports().create(SessionsImportsCreateParams.builder()
                    .importType(SessionsImportsCreateParams.ImportType.of("user_verification"))
                    .workflowId("9f9b1234-aaaa-bbbb-cccc-1234567890ab")
                    .sourceFileUrl("https://files.example.com/exports/sessions.ndjson")
                    .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->sessions->imports->create([
                'import_type' => 'user_verification',
                'workflow_id' => '9f9b1234-aaaa-bbbb-cccc-1234567890ab',
                'source_file_url' => 'https://files.example.com/exports/sessions.ndjson',
            ]);
            print_r($result->toArray());
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            result = didit.sessions.imports.create(
              import_type: "user_verification",
              workflow_id: "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
              source_file_url: "https://files.example.com/exports/sessions.ndjson"
            )
            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.Sessions.Imports.CreateAsync(new
            SessionsImportsCreateParams

            {
                ImportType = new SessionsImportsCreateParamsImportType("user_verification"),
                WorkflowId = "9f9b1234-aaaa-bbbb-cccc-1234567890ab",
                SourceFileUrl = "https://files.example.com/exports/sessions.ndjson",
            });

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    SessionImportJob:
      type: object
      required:
        - uuid
        - status
        - import_type
        - source_format
        - source_filename
        - total_rows
        - processed_rows
        - created_count
        - updated_count
        - skipped_count
        - failed_count
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            معرّف مهمة الاستيراد. استخدم هذه القيمة لمتابعة التقدم بشكل دوري
            وجلب أخطاء الصفوف.
        status:
          type: string
          enum:
            - PENDING
            - PROCESSING
            - COMPLETED
            - FAILED
            - PAUSED
            - CANCELLED
            - READY
        import_type:
          type: string
          enum:
            - user_verification
            - business_verification
            - status_rules
            - transactions
        source_format:
          type: string
          enum:
            - csv
            - ndjson
        source_filename:
          type: string
        total_rows:
          type: integer
          format: int64
        processed_rows:
          type: integer
          format: int64
        checkpoint_row:
          type: integer
          format: int64
        created_count:
          type: integer
          format: int64
        updated_count:
          type: integer
          format: int64
        skipped_count:
          type: integer
          format: int64
        failed_count:
          type: integer
          format: int64
        total_media_bytes:
          type: integer
          format: int64
        last_error:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        started_at:
          type: string
          format: date-time
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        state:
          type: string
          enum:
            - ready
            - queued
            - running
            - paused
            - completed
            - errors
            - failed
            - cancelled
          description: >-
            حالة المهمة كما تعرضها لوحة التحكم؛ تشير `errors` إلى مهمة مكتملة
            تحتوي على صفوف مرفوضة.
        source:
          type: string
          enum:
            - file
            - api
            - provider
        provider:
          type: string
          description: مصدر الترحيل؛ فارغ لعمليات الاستيراد عبر الملفات أو API.
        provider_options:
          type: object
        credential_hint:
          type: string
          description: >-
            الأحرف الأولى من المفتاح الذي يحتفظ به الترحيل. لا يتم إرجاع المفتاح
            نفسه أبداً.
        credentials_expires_at:
          type: string
          format: date-time
          nullable: true
        resumes_at:
          type: string
          format: date-time
          nullable: true
          description: عندما تُستأنف تلقائياً مهمة أوقفها حد المعدل لدى المزود مؤقتاً.
        status_mapping:
          type: object
          additionalProperties:
            type: string
        is_dry_run:
          type: boolean
        dry_run_summary:
          type: object
          description: >-
            ما وجده التشغيل التجريبي: `total`، و`by_status`،
            و`already_in_didit`، و`same_person`، و`not_finished`، و`failed`،
            و`unmapped_statuses`.
        face_templates_enabled:
          type: boolean
        lawful_basis_confirmed_at:
          type: string
          format: date-time
          nullable: true
        not_finished_count:
          type: integer
          format: int64
        same_person_count:
          type: integer
          format: int64
        face_templates_count:
          type: integer
          format: int64
        face_duplicates_count:
          type: integer
          format: int64
        face_blocklist_hits_count:
          type: integer
          format: int64
        created_by_name:
          type: string
          nullable: true
        created_by_email:
          type: string
          nullable: true
  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.