> ## 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 مهمة تصدير وقائمة الإخفاقات الحالية لها. يساوي `failed_count` طول `failed_item_ids`، ويتم استبعاد الجلسات المحذوفة.

ابحث عن التقرير باستخدام [سرد التقارير غير المتزامنة](https://docs.didit.me/ar/management-api/reports/list.md)، ثم اتبع [إرشادات إعادة المحاولة](https://docs.didit.me/ar/console/export-pdf-csv.md#إعادة-محاولة-عناصر-التصدير-الفاشلة) أو [أعد محاولة التصدير](https://docs.didit.me/ar/management-api/reports/retry.md).


## OpenAPI

````yaml ar/openapi-25.json GET /v3/organization/{organization_id}/application/{application_id}/reports/{report_uuid}/
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}/:
    get:
      tags:
        - Reports
      summary: استرجاع تقرير غير متزامن
      description: >-
        يتطلب أذونات قراءة لكل مورد يشمله التقرير. يجب أن تنتمي بيانات اعتماد
        التطبيق أو مفتاح API إلى التطبيق في المسار. يجب أن تملك رموز Bearer
        الخاصة بالأعضاء وصولاً إلى التطبيق. يستثني failed_item_ids الجلسات
        المحذوفة، و failed_count هو طوله.
      operationId: retrieve_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 للتقرير.
      responses:
        '200':
          description: استرجع تقريراً غير متزامن.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncReport'
        '401':
          description: بيانات الاعتماد مفقودة أو غير صالحة أو منتهية الصلاحية.
        '403':
          description: ليس لدى المستدعي صلاحية الوصول إلى هذا التطبيق أو الأذونات المطلوبة.
        '404':
          description: لم يتم العثور على التقرير في هذا التطبيق.
        '429':
          $ref: '#/components/responses/RateLimitedRead'
      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.retrieve(
                "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.retrieve("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.Retrieve(ctx, \"11111111-2222-3333-4444-555555555555\")\nif err != nil {\n\tlog.Fatal(err)\n}\nfmt.Printf(\"%+v\\n\", result)"
        - lang: java
          label: Java
          source: >-
            import me.didit.Didit;


            // Reads DIDIT_API_KEY, DIDIT_ORGANIZATION_ID

            // and DIDIT_APPLICATION_ID.

            Didit client = new Didit();


            var result =
            client.reports().retrieve("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->retrieve('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.retrieve("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.RetrieveAsync("11111111-2222-3333-4444-555555555555");

            Console.WriteLine(JsonSerializer.Serialize(result));
components:
  schemas:
    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:
    RateLimitedRead:
      description: >-
        تجاوزت ميزانية القراءة الخاصة بالوسيط. التزم بالرأس Retry-After قبل
        إعادة المحاولة.
      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'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitBudgetError'
          example:
            detail: >-
              GET request rate limit exceeded. You can make up to 600 requests
              per minute.
            reference: RL-00000000000040008000000000000001
            limit: 600
            remaining: 0
            reset: 1794358860
            window_seconds: 60
  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.