> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# إعادة محاولة التقرير غير المتزامن API

> أعد محاولة تصدير Didit غير المتزامن أو اختر عناصر التحقق الفاشلة، مع قصر الوصول على الطالب، واستبعاد الجلسات المحذوفة، ومعالجة إعادة التشغيل.

تُعيد واجهة Reports API غير المتزامنة الخاصة بـ Didit تشغيل تصدير، أو تضع في قائمة الانتظار عناصر التحقق الفاشلة المحددة. تُرجع إعادة المحاولة الجديدة الاستجابة `201`، أما التحديد المطابق لعناصر فاشلة سبق اختيارها فيُرجع التقرير الموجود بالاستجابة `200`.

> [!WARNING]
>
> تتطلب إعادة المحاولة الانتقائية هوية المستخدم الأصلي الذي قدّم الطلب. يتلقى مفتاح API أو رمز التطبيق الذي لا يحمل هذه الهوية الاستجابة `403` عند إرسال `item_ids`، حتى لتطبيقه نفسه. يُعيد مثال مفتاح API المُولَّد تشغيل التصدير كاملاً بجسم طلب فارغ.

اقرأ المعرّفات الفعلية من [استرجع التقرير غير المتزامن](https://docs.didit.me/ar/management-api/reports/retrieve.md) واتبع [إرشادات إعادة محاولة العناصر الفاشلة](https://docs.didit.me/ar/console/export-pdf-csv.md#إعادة-محاولة-عناصر-التصدير-الفاشلة). أرسل من 1 إلى 1000 معرّف من `SESSION_EXPORT` بحالة `READY` أو `FAILED`، دون نطاق تاريخ بديل. لا يمكن إعادة محاولة الجلسات المحذوفة.


## OpenAPI

````yaml ar/openapi-25.json POST /v3/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/
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/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/retry/:
    post:
      tags:
        - Reports
      summary: إعادة محاولة التقرير غير المتزامن
      description: >-
        يتطلب أذونات قراءة لكل مورد يشمله التقرير. يجب أن تنتمي بيانات اعتماد
        التطبيق أو مفتاح API إلى التطبيق في المسار. يجب أن تملك رموز Bearer
        الخاصة بالأعضاء وصولاً إلى التطبيق. ويتطلب أيضاً أذونات كتابة للموارد
        المراد تصديرها. احذف item_ids لإعادة تشغيل التصدير الأصلي، ويمكنك
        اختيارياً تحديد نطاق تاريخ بديل. التقرير الذي أُنشئ كإعادة محاولة لعنصر
        فاشل يتطلب تحديد item_ids صراحةً لأي إعادة محاولات لاحقة. مع item_ids،
        لا يمكن إعادة محاولة تصدير SESSION_EXPORT بحالة READY أو FAILED إلا
        للمستخدم الذي طلب التصدير الأصلي، أي أن يكون requested_by_user_id غير
        فارغ ومطابقاً للمستخدم المصادق عليه. يتلقى مفتاح API أو رمز التطبيق الذي
        لا يحمل هوية مستخدم الرمز 403 عند إعادة المحاولة الانتقائية. اختر
        الجلسات الفاشلة النشطة فقط من التصدير الأصلي؛ لا يمكن إعادة تصدير
        الجلسات المحذوفة. يبقى التقرير الأصلي دون تغيير. يُنشئ التحديد الأول
        تقريراً جديداً (201)، وإعادة إرسال المجموعة المحددة نفسها تُرجع تقرير
        إعادة المحاولة الموجود (200). التحديدات المتداخلة أو المختلفة التي سبق
        تخصيصها لإعادة محاولة أخرى تُرجع 400. راجع [إعادة محاولة عناصر التصدير
        الفاشلة](https://docs.didit.me/ar/console/export-pdf-csv#إعادة-محاولة-عناصر-التصدير-الفاشلة).
      operationId: retry_reports
      parameters:
        - name: organization_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف المؤسسة.
        - name: application_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف التطبيق.
        - name: report_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: معرّف UUID للتقرير.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AsyncReportRetryRequest'
            example: {}
      responses:
        '200':
          description: >-
            إعادة تشغيل مطابقة لاختيار العناصر الفاشلة نفسه؛ تُعيد تقرير إعادة
            المحاولة الموجود دون إضافة طلب جديد إلى قائمة الانتظار.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '201':
          description: تمت إضافة تصدير جديد إلى قائمة الانتظار.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '400':
          description: >-
            اختيار فارغ أو غير صالح، أو أكثر من 1000 معرّف، أو معرّفات ليست ضمن
            جلسات الفشل الحية لهذا التقرير، أو تصدير غير مكتمل أو غير قائم على
            الجلسات، أو اختيار متعارض لإعادة المحاولة، أو نطاق تاريخ غير صالح أو
            مختلط.
        '401':
          description: بيانات الاعتماد مفقودة أو غير صالحة أو منتهية الصلاحية.
        '403':
          description: >-
            الإذن مفقود للقراءة أو الكتابة، أو جرت محاولة إعادة المحاولة
            الانتقائية من شخص غير الطالب الأصلي، بما في ذلك المتصل الذي لا يملك
            هوية مستخدم.
        '404':
          description: لم يتم العثور على التقرير في هذا التطبيق.
        '409':
          description: التقرير قيد الحذف، ولا يمكن إعادة محاولته.
        '429':
          $ref: '#/components/responses/RateLimitedWrite'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            client = Didit()

            result = client.reports.retry(
                "11111111-2222-3333-4444-555555555555",
            )
            print(result)
        - lang: javascript
          label: Node.js
          source: >-
            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            const didit = new Didit();


            const result = await
            didit.reports.retry("11111111-2222-3333-4444-555555555555");

            console.log(result);
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID\n// and DIDIT_APPLICATION_ID.\nclient := didit.NewClient()\n\nresult, err := client.Reports.Retry(ctx, \"11111111-2222-3333-4444-555555555555\", didit.AsyncReportRetryRequest{})\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.AsyncReportRetryRequest;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.reports().retry("11111111-2222-3333-4444-555555555555");

            System.out.println(result);
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            $didit = new DiditClient();


            $result =
            $didit->reports->retry('11111111-2222-3333-4444-555555555555');

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

            # Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID
            # and DIDIT_APPLICATION_ID.
            didit = Didit::Client.new

            result = didit.reports.retry("11111111-2222-3333-4444-555555555555")
            puts result.to_h
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using System.Text.Json;

            using Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            using var client = new DiditClient();


            var result = await
            client.Reports.RetryAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    AsyncReportRetryRequest:
      type: object
      properties:
        item_ids:
          type: array
          description: >-
            اختيار اختياري من 1 إلى 1000 معرّف UUID لجلسة مباشرة فاشلة من هذا
            التصدير. تُدمج المعرّفات المكررة. يمكن للطالب الأصلي وحده إعادة
            محاولة مجموعة فرعية. لا يمكن دمجه مع date_from/date_to.
          items:
            type: string
            format: uuid
          minItems: 1
          maxItems: 1000
        date_from:
          type: string
          description: >-
            بداية فترة الاستبدال الاختيارية. أرسل التاريخين بالترتيب الصحيح؛
            احذفهما عند إعادة المحاولة لعنصر فاشل.
          format: date
        date_to:
          type: string
          description: >-
            نهاية فترة الاستبدال الاختيارية، ويجب أن تكون في تاريخ date_from أو
            بعده.
          format: date
        notify_on_ready:
          type: boolean
          description: >-
            إرسال بريد إلكتروني إلى مقدّم الطلب عند الجاهزية، إذا كان بريده
            الإلكتروني متاحاً.
          default: false
    AsyncReport:
      type: object
      required:
        - uuid
        - report_type
        - report_type_display
        - status
        - status_display
        - parameters
        - requested_by_user_id
        - requested_by_email
        - requested_by_name
        - row_count
        - failed_item_ids
        - failed_count
        - file_size
        - files
        - scheduled_report
        - error_message
        - deletion_pending
        - eta_seconds
        - started_at
        - completed_at
        - expires_at
        - created_at
        - updated_at
      properties:
        uuid:
          type: string
          description: معرّف التقرير.
          format: uuid
        report_type:
          type: string
          description: نوع التصدير أو تقرير الامتثال.
          enum:
            - SESSION_EXPORT
            - TRANSACTION_EXPORT
            - BUSINESS_EXPORT
            - VENDOR_USER_EXPORT
            - VENDOR_BUSINESS_EXPORT
            - CASE_EXPORT
            - CASE_SLA_EXPORT
            - LIST_ENTRY_EXPORT
            - EVENT_EXPORT
            - COMPLIANCE_KYC_KYB
            - COMPLIANCE_AML_LOG
            - COMPLIANCE_TRAVEL_RULE
            - COMPLIANCE_SANCTIONS_PEP
            - COMPLIANCE_RISK_SUMMARY
            - COMPLIANCE_SAR_STR_DRAFT
            - COMPLIANCE_CTR
            - COMPLIANCE_CASE_SUMMARY
        report_type_display:
          type: string
          description: عنوان العرض لنوع التقرير.
        status:
          type: string
          description: >-
            حالة التوليد. قد تتضمن الحالة READY حالات فشل فردية؛ تحقّق من
            failed_count.
          enum:
            - PENDING
            - PROCESSING
            - READY
            - FAILED
        status_display:
          type: string
          description: عنوان العرض لحالة التوليد.
        parameters:
          type: object
          description: خيارات التصدير الأصلية؛ تختلف المفاتيح حسب report_type.
          additionalProperties: true
        requested_by_user_id:
          type: string
          description: هوية الطالب الأصلي، أو null للمتصلين الذين لا يملكون هوية مستخدم.
          format: uuid
          nullable: true
        requested_by_email:
          type: string
          description: البريد الإلكتروني للطالب، عند توفره.
          nullable: true
        requested_by_name:
          type: string
          description: اسم عرض الطالب، عند توفره.
          nullable: true
        row_count:
          type: integer
          description: عدد السجلات المصدّرة، أو null قبل إنشاء التقرير.
          nullable: true
        failed_item_ids:
          type: array
          description: >-
            معرّفات UUID للجلسات المباشرة التي فشلت في تصدير التحقق هذا. تُستبعد
            الجلسات المحذوفة. استخدم هذه المعرّفات لإعادة المحاولة الانتقائية.
          items:
            type: string
            format: uuid
        failed_count:
          type: integer
          description: عدد العناصر في failed_item_ids.
          minimum: 0
        file_size:
          type: integer
          description: إجمالي حجم الملف المُنشأ بالبايت، أو null قبل الإنشاء.
          format: int64
          nullable: true
        files:
          type: array
          description: البيانات الوصفية للملف المُولَّد؛ ولا تحتوي على روابط تنزيل.
          items:
            $ref: '#/components/schemas/AsyncReportFile'
        scheduled_report:
          type: string
          description: معرّف الجدولة، أو null للتقرير غير المجدول.
          format: uuid
          nullable: true
        error_message:
          type: string
          description: خطأ التوليد، عند توفره.
          nullable: true
        deletion_pending:
          type: boolean
          description: ما إذا كان الحذف المطلوب ما زال قيد التنفيذ.
        eta_seconds:
          type: integer
          description: >-
            الوقت المقدّر بالثواني حتى الاكتمال لتقرير قيد الانتظار أو المعالجة؛
            تكون القيمة null في غياب السجل أو عند الاكتمال.
          nullable: true
        started_at:
          type: string
          description: وقت بدء التوليد.
          format: date-time
          nullable: true
        completed_at:
          type: string
          description: وقت اكتمال التوليد.
          format: date-time
          nullable: true
        expires_at:
          type: string
          description: وقت انتهاء صلاحية التقرير.
          format: date-time
        created_at:
          type: string
          description: وقت الإنشاء.
          format: date-time
        updated_at:
          type: string
          description: وقت آخر تحديث.
          format: date-time
      example:
        uuid: 00000000-0000-4000-8000-000000000002
        report_type: SESSION_EXPORT
        report_type_display: Verifications
        status: READY
        status_display: Ready
        parameters: {}
        requested_by_user_id: null
        requested_by_email: null
        requested_by_name: null
        row_count: 9
        failed_item_ids:
          - 00000000-0000-4000-8000-000000000001
        failed_count: 1
        file_size: 1200
        files:
          - name: verifications.csv
            format: csv
            rows: 9
            bytes: 1200
        scheduled_report: null
        error_message: null
        deletion_pending: false
        eta_seconds: null
        started_at: '2026-11-11T01:00:00Z'
        completed_at: '2026-11-11T01:01:00Z'
        expires_at: '2026-12-11T01:00:00Z'
        created_at: '2026-11-11T01:00:00Z'
        updated_at: '2026-11-11T01:01:00Z'
    AsyncReportFile:
      type: object
      required:
        - name
        - format
        - rows
        - bytes
      properties:
        name:
          type: string
          description: اسم الملف.
        format:
          type: string
          description: صيغة الملف.
        rows:
          type: integer
          description: السجلات المُصدَّرة في هذا الملف، عند الاقتضاء.
          nullable: true
        bytes:
          type: integer
          description: حجم الملف بالبايت.
          format: int64
    RateLimitBudgetError:
      type: object
      description: >-
        تُرجع فقط عند رفض ميزانية وسيط تحديد المعدل. أخطاء 429 الأخرى، بما في
        ذلك تعارضات idempotency والحدود الخاصة بنقطة النهاية، لا تضمن هذه الحقول
        الوصفية.
      required:
        - detail
        - reference
        - limit
        - remaining
        - reset
        - window_seconds
      properties:
        detail:
          type: string
          description: رسالة رفض الميزانية الحالية المقروءة للإنسان.
        reference:
          type: string
          pattern: ^RL-[0-9a-f]{32}$
          description: >-
            مرجع الدعم المعتم: RL- متبوعة بـ 32 حرفًا سداسيًا عشريًا صغيرًا من
            UUID.
        limit:
          type: integer
          description: الميزانية للنطاق الذي تجاوز الحد؛ تساوي X-RateLimit-Limit.
        remaining:
          type: integer
          minimum: 0
          description: >-
            الميزانية المتبقية، محدودة بحيث لا تقل عن الصفر؛ تساوي
            X-RateLimit-Remaining.
        reset:
          type: integer
          format: int64
          description: >-
            وقت إعادة تعيين النافذة بالثواني منذ حقبة Unix، ويساوي
            X-RateLimit-Reset.
        window_seconds:
          type: integer
          description: >-
            مدة النافذة الثابتة بالثواني، وليست الفترة المتبقية للانتظار. يجب
            احترام Retry-After قبل إعادة المحاولة.
      example:
        detail: >-
          Write request rate limit exceeded. You can make up to 300 requests per
          minute.
        reference: RL-00000000000040008000000000000001
        limit: 300
        remaining: 0
        reset: 1794358860
        window_seconds: 60
  responses:
    RateLimitedWrite:
      description: >-
        تم تجاوز حد الكتابة المشترك البالغ 300 طلب في الدقيقة لكل مفتاح API.
        التزم بالمدة المحددة في `Retry-After` قبل إعادة المحاولة.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              Write request rate limit exceeded. You can make up to 300 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 300
            remaining: 0
            reset: 1794358860
            window_seconds: 60
      headers:
        Retry-After:
          $ref: '#/components/headers/BudgetRetryAfter'
        X-RateLimit-Scope:
          $ref: '#/components/headers/BudgetXRateLimitScope'
        X-RateLimit-Limit:
          $ref: '#/components/headers/BudgetXRateLimitLimit'
        X-RateLimit-Remaining:
          $ref: '#/components/headers/BudgetXRateLimitRemaining'
        X-RateLimit-Reset:
          $ref: '#/components/headers/BudgetXRateLimitReset'
  headers:
    BudgetRetryAfter:
      description: >-
        عدد الثواني للانتظار، مقرّباً إلى أعلى حتى بداية النافذة التالية. يظهر
        في حالات رفض ميزانية الوسيط.
      schema:
        type: integer
    BudgetXRateLimitScope:
      description: النطاق الذي تجاوز ميزانيته. يظهر في حالات رفض ميزانية الوسيط.
      schema:
        type: string
    BudgetXRateLimitLimit:
      description: >-
        الميزانية المخصصة للنطاق الذي تم تجاوزه؛ وتساوي حد جسم الطلب. تظهر في
        حالات الرفض الصادرة عن ميزانية البرمجية الوسيطة.
      schema:
        type: integer
    BudgetXRateLimitRemaining:
      description: >-
        الميزانية المتبقية، محدودة بحيث لا تقل عن الصفر؛ تساوي remaining في
        الجسم. تظهر في حالات رفض الميزانية من الوسيط.
      schema:
        type: integer
    BudgetXRateLimitReset:
      description: >-
        وقت إعادة التعيين بالثواني منذ حقبة Unix؛ يساوي قيمة reset في جسم
        الاستجابة. يظهر في حالات رفض ميزانية الوسيط.
      schema:
        type: integer
  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.
    BearerAuth:
      type: http
      scheme: bearer
      description: token الوصول الخاص باعتماد العميل للتطبيق.

````

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