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

# أدلة التوقيع الإلكتروني: تنزيل سجل التدقيق PDF

> نزّل ملف PDF بأدلة توقيع الموقّع من Didit: تجزئات المستندات وقيم الحقول، وهوية التوقيع الإلكتروني المتقدم (AES) ورمزه وشهادته وختمه الزمني.

يُعيد هذا المسار ملف PDF الخاص بالأدلة لموقّع واحد، بعد أن يوقّع. يقع المسار في `signatures[].evidence_file` الخاص بالموقّع، ويتضمن `signature_id` مسبقاً.

```bash theme={null}
curl -L 'https://verification.didit.me/v3/session/{session_id}/signatures/{node_id}/evidence/?signature_id={signature_id}' \
  -H 'x-api-key: YOUR_API_KEY' \
  -o signature-evidence.pdf
```

> [!WARNING]
>
> احرص دائماً على تمرير `signature_id`. قد تحتوي خطوة التحقق من الشركات (KYB) على عدة موقّعين، ومن دون هذا المعامل يختار المسار أحدهم.

يسجّل ملف PDF الخاص بالأدلة المستوى والصيغة، والموقّع، وعنوان IP، وكل مستند مع قيمة SHA-256 الأصلية له، والتوقيع المعتمد، وقيمة كل حقل مع مصدرها ووقتها، والموافقة النهائية، وقيمة SHA-256 لكل ملف موقّع. وبالنسبة إلى التوقيع المتقدم (AES)، يسجّل أيضاً جلسة التحقق من الهوية الموثّقة، وتأكيد الرمز، والشهادة، والختم الزمني؛ أما التوقيع البسيط فلا يتضمن أياً منها. راجع [ملف الأدلة PDF](https://docs.didit.me/ar/core-technology/electronic-signature/report-electronic-signature.md#ملف-pdf-الخاص-بالأدلة).

يُعيد الموقّع الذي لم يوقّع بعد الاستجابة `404` مع `signature_not_signed`. بعد أن [تحذف الجلسة](https://docs.didit.me/ar/sessions-api/delete-session.md)، يُعيد المسار الاستجابة `404`.

## ذات صلة

* [تنزيل مستند موقّع](https://docs.didit.me/ar/sessions-api/electronic-signature/download-signed-document.md)
* [تقرير التوقيع الإلكتروني](https://docs.didit.me/ar/core-technology/electronic-signature/report-electronic-signature.md)


## OpenAPI

````yaml ar/openapi-25.json GET /v3/session/{sessionId}/signatures/{nodeId}/evidence/
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/{sessionId}/signatures/{nodeId}/evidence/:
    get:
      tags:
        - Sessions
      summary: تنزيل أدلة التوقيع
      description: >-
        تنزيل ملف PDF لأدلة الموقِّع: المستوى والتنسيق، والموقِّع، وعنوان IP،
        وكل مستند مع تجزئة SHA-256 الأصلية وقيم الحقول وتجزئة SHA-256 لكل ملف
        موقّع، بالإضافة إلى جلسة الهوية التي تم التحقق منها وتأكيد الرمز
        والشهادة والطابع الزمني بالنسبة للتوقيع المتقدم (AES). استخدم مسار
        `evidence_file` لعنصر الموقِّع في `signatures[]`.


        مرِّر دائماً `signature_id` عندما تتضمن خطوة التحقق من الشركات (KYB) عدة
        موقّعين: فبدونه، يختار المسار أحد موقّعي الخطوة. يتطلب `read:sessions`؛
        ومفتاح API الخاص بك يعمل.
      operationId: get_v3_session_signature_evidence
      parameters:
        - name: sessionId
          in: path
          required: true
          description: جلسة التحقق من المستخدمين (KYC) أو التحقق من الشركات (KYB).
          schema:
            type: string
            format: uuid
            example: 11111111-2222-3333-4444-555555555555
        - name: nodeId
          in: path
          required: true
          description: 'خطوة التوقيع الإلكتروني: `node_id` الخاص بالعنصر في `signatures[]`.'
          schema:
            type: string
            example: feature_signature
        - name: signature_id
          in: query
          required: false
          description: '`id` لعنصر الموقِّع في `signatures[]`.'
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: ملف PDF الخاص بالأدلة.
          headers:
            Content-Disposition:
              description: مرفق باسم الملف.
              schema:
                type: string
                example: attachment; filename="signature-evidence.pdf"
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '403':
          description: >-
            بيانات اعتماد مفقودة، أو بيانات اعتماد لا يمكنها قراءة هذه الجلسة.
            يؤدي المفتاح المفقود إلى إرجاع `403`؛ بينما يؤدي المفتاح الخاطئ أو
            الملغى أو منتهي الصلاحية إلى إرجاع `401`.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: You do not have permission to perform this action.
        '404':
          description: >-
            لا توجد أدلة مطابقة: الجلسة أو الخطوة أو الموقّع غير موجود، أو تم
            حذفه، أو لم يوقّع بعد.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              examples:
                Not signed yet:
                  summary: لم يوقّع الموقّع بعد
                  value:
                    code: signature_not_signed
                    detail: signature_not_signed
                Unknown signer:
                  summary: لا يوجد توقيع كهذا في هذه الخطوة
                  value:
                    code: signature_not_found
                    detail: signature_not_found
        '409':
          description: >-
            الملف المخزن لم يعد يطابق تجزئة SHA-256 المسجلة له. لم يتم إرجاع أي
            شيء.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                  code:
                    type: string
              examples:
                Changed file:
                  summary: الملف المخزن لا يتطابق مع التجزئة (hash) الخاصة به
                  value:
                    code: signature_document_changed
                    detail: signature_document_changed
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: python
          label: Python
          source: |-
            from didit import Didit

            # Reads DIDIT_API_KEY.
            client = Didit()

            content = client.sessions.signatures.download_evidence(
                "11111111-2222-3333-4444-555555555555",
                "feature_signature",
            )
            with open("download.pdf", "wb") as file:
                file.write(content)
        - lang: javascript
          label: Node.js
          source: >-
            import { writeFile } from "node:fs/promises";

            import Didit from "@didit-protocol/sdk-node";


            // Reads DIDIT_API_KEY.

            const didit = new Didit();


            const content = await didit.sessions.signatures.downloadEvidence(
              "11111111-2222-3333-4444-555555555555",
              "feature_signature",
            );

            await writeFile("download.pdf", Buffer.from(await
            content.arrayBuffer()));
        - lang: go
          label: Go
          source: "ctx := context.Background()\n// Reads DIDIT_API_KEY.\nclient := didit.NewClient()\n\nresp, err := client.Sessions.Signatures.DownloadEvidence(ctx, \"11111111-2222-3333-4444-555555555555\", \"feature_signature\", didit.SessionsSignaturesDownloadEvidenceParams{})\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer resp.Body.Close()\nfile, err := os.Create(\"download.pdf\")\nif err != nil {\n\tlog.Fatal(err)\n}\ndefer file.Close()\nif _, err := io.Copy(file, resp.Body); err != nil {\n\tlog.Fatal(err)\n}"
        - lang: java
          label: Java
          source: >-
            import java.nio.file.Path;

            import me.didit.Didit;


            // Reads DIDIT_API_KEY.

            Didit client = new Didit();


            client.sessions().signatures().downloadEvidence("11111111-2222-3333-4444-555555555555",
            "feature_signature")
                    .writeTo(Path.of("download.pdf"));
        - lang: php
          label: PHP
          source: >-
            <?php


            require 'vendor/autoload.php';


            use Didit\DiditClient;


            // Reads DIDIT_API_KEY.

            $didit = new DiditClient();


            $content =
            $didit->sessions->signatures->downloadEvidence('11111111-2222-3333-4444-555555555555',
            'feature_signature');

            $content->saveTo('download.pdf');
        - lang: ruby
          label: Ruby
          source: |-
            require "didit"

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

            content = didit.sessions.signatures.download_evidence(
              "11111111-2222-3333-4444-555555555555",
              "feature_signature"
            )
            File.binwrite("download.pdf", content)
        - lang: csharp
          label: .NET
          source: >-
            using System;

            using Didit;


            // Reads DIDIT_API_KEY.

            using var client = new DiditClient();


            var content = await
            client.Sessions.Signatures.DownloadEvidenceAsync("11111111-2222-3333-4444-555555555555",
            "feature_signature");

            await content.SaveToAsync("download.pdf");
components:
  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.