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

# تقرير التوقيع الإلكتروني: مرجع signatures[]

> اقرأ signatures[] في قرار الجلسة والـ webhooks مع Didit، ونزّل ملفات PDF الموقعة ومستند الإثبات، وتحقق من التوقيع مجدداً.

تُنتج كل خطوة من خطوات [التوقيع الإلكتروني](https://docs.didit.me/ar/core-technology/electronic-signature/overview.md) نتيجة واحدة لكل موقِّع. وتجدها كعنصر ضمن `signatures[]` في:

* [`GET /v3/session/{sessionId}/decision/`](https://docs.didit.me/ar/sessions-api/retrieve-session)، لجلسات التحقق من المستخدمين (KYC) والتحقق من الشركات (KYB).
* حقل `decision` في [webhook الخاصة بالجلسة](https://docs.didit.me/ar/integration/webhooks.md) للإصدار V3، والتي تُرسل عندما تكون الجلسة `Approved` أو `Declined` أو `In Review` أو `Abandoned`.
* علامة تبويب **التوقيع** الخاصة بالجلسة في لوحة التحكم، وقسم التوقيع في [تقرير PDF](https://docs.didit.me/ar/sessions-api/generate-pdf.md).

لا يظهر `signatures` في القرار إلا عندما يتضمن سير العمل خطوة التوقيع الإلكتروني. ويكون عبارة عن مصفوفة فارغة حتى يصل الموقِّع إلى هذه الخطوة. وتحتوي خطوة KYC على عنصر واحد؛ بينما تحتوي خطوة KYB على عنصر واحد لكل موقِّع.

## مثال

```json theme={null}
{
  "signatures": [
    {
      "id": "0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10",
      "node_id": "feature_signature",
      "status": "signed",
      "verdict": "Approved",
      "level": "aes",
      "format": "pades",
      "profile": "PAdES-B-LT",
      "signer": {
        "name": "Jane Doe",
        "capacity": "self",
        "company": null,
        "role": null,
        "roles": [],
        "identity_session_id": "11111111-2222-3333-4444-555555555555"
      },
      "identity_used": {
        "session_id": "11111111-2222-3333-4444-555555555555",
        "kyc_id": "6f1e8f6c-1d2b-4c3a-9e8f-7a6b5c4d3e2f",
        "verified": true,
        "expected_name": "Jane Doe"
      },
      "certificate": {
        "issuer": "<certificate issuer>",
        "issued_to": "<certificate subject>",
        "serial": "5A3F9C21",
        "valid_from": "2026-01-01T00:00:00+00:00",
        "valid_until": "2028-01-01T00:00:00+00:00"
      },
      "confirmation": {
        "channel": "email",
        "destination": "j***@example.com",
        "confirmed_at": "2026-11-03T10:42:18.512Z",
        "attempts": 1
      },
      "timestamp": {
        "time": "2026-11-03T10:42:21+00:00",
        "qualified": false,
        "valid": true
      },
      "documents": [
        {
          "id": "9b0a7f44-2c1d-4e5f-8a9b-0c1d2e3f4a5b",
          "uuid": "9b0a7f44-2c1d-4e5f-8a9b-0c1d2e3f4a5b",
          "title": "Account agreement",
          "file_name": "agreement.pdf",
          "pages": 4,
          "size_bytes": 182344,
          "sha256_original": "3b8e5f0c2a9d4e7f1b6c0a5d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f",
          "sha256_signed": "a1f2e3d4c5b6a7980f1e2d3c4b5a69788f7e6d5c4b3a29180f1e2d3c4b5a6978",
          "status": "signed",
          "opened_at": "2026-11-03T10:40:02.118Z",
          "read_at": "2026-11-03T10:41:10.044Z",
          "read_to_end": true,
          "consented_at": "2026-11-03T10:41:12.730Z",
          "consent": true,
          "signed_file": "/v3/session/11111111-2222-3333-4444-555555555555/signatures/feature_signature/documents/9b0a7f44-2c1d-4e5f-8a9b-0c1d2e3f4a5b/file/",
          "mode": "fields",
          "source_format": "pdf",
          "conversion": null,
          "fields": [
            {
              "key": "full_name",
              "type": "full_name",
              "role": "verified_person",
              "label": "Full name",
              "page": 1,
              "x": 0.34,
              "y": 0.2326,
              "width": 0.57,
              "height": 0.0325,
              "required": true,
              "value": "Jane Doe",
              "display_value": "Jane Doe",
              "value_source": "identity",
              "filled_at": "2026-11-03T10:40:02.118Z",
              "value_unavailable_reason": null
            },
            {
              "key": "occupation",
              "type": "text",
              "role": "verified_person",
              "label": "Occupation",
              "page": 1,
              "x": 0.34,
              "y": 0.4618,
              "width": 0.57,
              "height": 0.0325,
              "required": true,
              "value": "Architect",
              "display_value": "Architect",
              "value_source": "signer",
              "filled_at": "2026-11-03T10:40:41.502Z",
              "value_unavailable_reason": null
            },
            {
              "key": "signature",
              "type": "signature",
              "role": "verified_person",
              "label": "Signature",
              "page": 4,
              "x": 0.09,
              "y": 0.5303,
              "width": 0.36,
              "height": 0.0849,
              "required": true,
              "value": true,
              "display_value": "Signed",
              "value_source": "signer",
              "filled_at": "2026-11-03T10:41:05.200Z",
              "image_url": "/v3/session/11111111-2222-3333-4444-555555555555/signatures/feature_signature/fields/c4d5e6f7-0a1b-4c2d-8e3f-4a5b6c7d8e9f/image/",
              "value_unavailable_reason": null
            }
          ]
        }
      ],
      "adopted_signature": {
        "method": "drawn",
        "font": null,
        "adopted_at": "2026-11-03T10:41:02.871Z"
      },
      "electronic_signature_consent_at": "2026-11-03T10:41:40.016Z",
      "evidence_file": "/v3/session/11111111-2222-3333-4444-555555555555/signatures/feature_signature/evidence/?signature_id=0e6c2a8e-6c2f-4b8e-9a51-3f2f6a7d9b10",
      "warnings": [],
      "validation": {
        "valid": true,
        "checked_at": "2026-11-03T10:42:24.903Z",
        "documents": [
          {
            "id": "9b0a7f44-2c1d-4e5f-8a9b-0c1d2e3f4a5b",
            "checked_at": "2026-11-03T10:42:24.903Z",
            "valid": true,
            "integrity": true,
            "trusted": true,
            "revoked": false,
            "trusted_list": { "status": "not_applicable", "reason": "aes_not_qualified" },
            "certificate": {
              "issuer": "<certificate issuer>",
              "issued_to": "<certificate subject>",
              "serial": "5A3F9C21",
              "valid_from": "2026-01-01T00:00:00+00:00",
              "valid_until": "2028-01-01T00:00:00+00:00"
            },
            "timestamp": { "time": "2026-11-03T10:42:21+00:00", "qualified": false, "valid": true }
          }
        ]
      },
      "declined_at": null,
      "declined_action": "REVIEW",
      "signed_at": "2026-11-03T10:42:24.903Z",
      "expires_at": "2026-11-10T10:30:00.000Z",
      "email_sent_at": "2026-11-03T10:42:30.011Z",
      "email_unavailable_reason": null,
      "ip_address": "203.0.113.10",
      "place": null,
      "place_unavailable_reason": "not_collected"
    }
  ]
}
```

## كائن التوقيع

| الحقل | النوع | الوصف |
| - | - | - |
| `id` | string (UUID) | توقيع المُوقِّع. مرّره كـ `signature_id` لتنزيل أدلته أو التحقق من صحة توقيعه. |
| `node_id` | string | خطوة سير العمل التي أنشأته. |
| `status` | string | المرحلة التي يوجد فيها المُوقِّع ضمن الخطوة: `intro` أو `review` أو `code` أو `signing` أو `signed` أو `declined`. القيمة `signed` فقط تعني أنه تم توقيع المستندات. |
| `verdict` | string | نتيجة الخطوة: `Not Finished` أو `Approved` أو `In Review` أو `Declined`. يأخذ التوقيع المرفوض أو الفاشل حكم [قاعدته](https://docs.didit.me/ar/core-technology/electronic-signature/warnings-electronic-signature.md)، ويمكن لقواعد الحالة المخصصة تغييره. |
| `level` | string | `simple` (افتراضي) أو `aes`. `qes` هي إضافة غير متوفرة بعد. |
| `format` | string | `pdf` للتوقيع البسيط (Simple)، و `pades` للتوقيع المتقدم (AES). |
| `profile` | string \| null | `PAdES-B-LT` بمجرد توقيع المستندات بتوقيع متقدم (AES)، وإلا `null`. |
| `signer` | object | من قام بالتوقيع. راجع [المُوقِّع](#المُوقِّع). |
| `identity_used` | object | الهوية التي تم التحقق منها والتي يعتمد عليها التوقيع. راجع [المُوقِّع](#المُوقِّع). فارغ للتوقيع البسيط (Simple) بدون هوية تم التحقق منها. |
| `certificate` | object \| null | الشهادة التي تم توقيع المستندات بها: `issuer` و `issued_to` و `serial` و `valid_from` و `valid_until`. تكون `null` حتى يتم التوقيع، وتكون دائمًا `null` للتوقيع البسيط (Simple). |
| `confirmation` | object | الرمز لمرة واحدة: `channel` (`email` أو `sms`)، و `destination` (بيانات الاتصال المقنّعة التي أُرسل إليها)، و `confirmed_at`، و `attempts` (الرموز المُدخلة، شاملاً الرمز الصحيح). لا يحتوي التوقيع البسيط (Simple) على رمز، لذا يكون `channel` و `destination` بقيمة `null`. |
| `timestamp` | object \| null | الطابع الزمني RFC 3161 في التوقيع، الصادر عن Didit: `time` و `qualified` (دائمًا `false` لـ AES) و `valid`. يكون `null` حتى يتم التوقيع، ودائمًا `null` للتوقيع البسيط (Simple). |
| `documents` | array | عنصر واحد لكل مستند. راجع [المستندات](#المستندات). |
| `adopted_signature` | object \| null | التوقيع والأحرف الأولى التي اعتمدها المُوقِّع لحقول التوقيع والأحرف الأولى: `method` (`typed` أو `drawn`)، و `font` (نمط الخط اليدوي للتوقيع المكتوب، أو `null` عند الرسم) و `adopted_at`. يكون `null` حتى يعتمد المُوقِّع توقيعًا. |
| `electronic_signature_consent_at` | string \| null | وقت موافقة المُوقِّع، في شاشة المراجعة، على توقيع المستندات إلكترونيًا. يُعيّن عندما يحتوي أي مستند على حقول. |
| `evidence_file` | string \| null | المسار إلى [ملف PDF للأدلة](#ملف-pdf-الخاص-بالأدلة) الخاص بهذا المُوقِّع، بمجرد التوقيع. |
| `warnings` | array | عناصر `{ "code", "node_id" }` لكل [تحذير](https://docs.didit.me/ar/core-technology/electronic-signature/warnings-electronic-signature.md) تم إطلاقه. |
| `validation` | object \| null | آخر فحص تشفيري للمستندات الموقعة. راجع [التحقق من صحة التوقيع مرة أخرى](#التحقق-من-التوقيع-مجددًا). |
| `declined_at` | string \| null | وقت رفض المُوقِّع. |
| `declined_action` | string | قيمة `signature_declined_action` للخطوة: ما يفعله الرفض بالحكم. |
| `signed_at` | string \| null | وقت توقيع المستندات. |
| `expires_at` | string | وقت توقف رابط التوقيع عن العمل. |
| `email_sent_at` | string \| null | وقت إرسال Didit لنسخة موقعة إلى المُوقِّع عبر البريد الإلكتروني. |
| `email_unavailable_reason` | string \| null | سبب عدم إرسال نسخة عبر البريد الإلكتروني، عند طلبك لذلك. |
| `ip_address` | string \| null | عنوان IP الخاص بالمُوقِّع عندما طلب رمزه. |
| `place` | string \| null | لم يتم جمعه. دائمًا `null`، مع `place_unavailable_reason: "not_collected"`. |

لا تعامل أبدًا أي مُوقِّع على أنه قد وقّع حتى تصبح `status` هي `signed`. في التوقيع المتقدم (AES)، تعني القيمة `null` للشهادة أو الطابع الزمني أو `signed_file` أنه لا يوجد توقيع بعد. يحتوي التوقيع البسيط (Simple) المُوقَّع على `signed_file` ولكنه يحتوي دائمًا على شهادة وطابع زمني بقيمة `null`.

### المُوقِّع

| الحقل | الوصف |
| - | - |
| `signer.name` | الاسم الذي تم التحقق منه للمُوقِّع، من التحقق من الهوية المقبول الخاص به. في المستوى البسيط (Simple)، هو اسم جلسة التحقق عندما تكون موجودة، وإلا فهو الاسم الذي كتبه المُوقِّع، وهو غير متحقق منه. |
| `signer.capacity` | `self` عندما يوقع الشخص لنفسه (KYC)، و `company` عندما يوقع شخص رئيسي نيابة عن شركة (KYB). |
| `signer.company` | اسم الشركة، لـ KYB. |
| `signer.role` | المسمى الوظيفي للشخص الرئيسي، كما تم التصريح به، لـ KYB. |
| `signer.roles` | الأدوار الهيكلية للشخص الرئيسي، مثل `representative` أو `authorized_signatory`، والتي جعلته مُوقِّعًا. هذه هي الأدوار المصرح بها للشركة، وليست تأكيدًا من السجل. |
| `signer.identity_session_id` | جلسة KYC التي تحققت من المُوقِّع. بالنسبة لـ KYB، جلسة KYC الخاصة بالشخص الرئيسي نفسه. غائب للتوقيع البسيط (Simple) بدون هوية تم التحقق منها. |
| `identity_used.session_id` | مثل `signer.identity_session_id`. يكون `identity_used` فارغًا للتوقيع البسيط (Simple) بدون هوية تم التحقق منها، لذلك لا يتوفر أي من حقوله. |
| `identity_used.kyc_id` | التحقق من الهوية الذي استُمدّ منه الاسم. |
| `identity_used.verified` | `true` عندما تم قبول هذا التحقق من الهوية. |
| `identity_used.expected_name` | الاسم الذي كان يجب على المُوقِّع مطابقته. بالنسبة لـ KYB، الاسم المصرح به للشخص الرئيسي. |

### المستندات

| الحقل | الوصف |
| - | - |
| `id`, `uuid` | المستند. استخدمه لتنزيل الملف المُوقَّع. |
| `title`, `file_name` | كما تم تحميله أو إرساله. |
| `pages`, `size_bytes` | للمستند الذي وقّعه المُوقِّع. بالنسبة لـ Word، لملف PDF المُحوَّل. |
| `sha256_original` | قيمة SHA-256 للمستند كما عُرض على المُوقِّع. |
| `sha256_signed` | قيمة SHA-256 لملف PDF المُوقَّع، بمجرد التوقيع. |
| `status` | `signed`؛ أو `declined`؛ أو `not_signed` (تم فتحه، ولم يتم توقيعه)؛ أو `not_reached` (لم يتم فتحه أبدًا). |
| `opened_at` | وقت فتحه للمرة الأولى من قِبل المُوقِّع. |
| `read_at`, `read_to_end` | وقت وصول المُوقِّع إلى نهاية مستند ليس به حقول، عندما تطلب القراءة حتى النهاية. المستند الذي يحتوي على حقول لا يتطلب ذلك. |
| `consented_at`, `consent` | وقت موافقة المُوقِّع على مستند ليس به حقول، عندما تطلب الموافقة لكل مستند، أو وقت إكمال حقول مستند يحتوي على حقول. |
| `signed_file` | المسار إلى ملف PDF المُوقَّع، بمجرد التوقيع. |
| `mode` | `fields` لمستند يحتوي على حقول، و `read_and_agree` لمستند لا يحتوي على حقول. |
| `source_format` | `pdf`، أو `docx` لمستند Word قامت Didit بتحويله. |
| `conversion` | `null` لمستند PDF. لمستند Word، يكون `{ "from": "docx", "file_name", "sha256", "size_bytes", "converter" }`: ملفك الأصلي، وقيمة SHA-256 وحجمه، وإصدار أداة التحويل. |
| `fields` | [الحقول](#الحقول) الموجودة في المستند، مع قيمها. فارغة لمستند بدون حقول. |

### الحقول

يمثل كل عنصر في `documents[].fields[]` حقلاً واحداً من المستند، مع قيمته في نسخة هذا الموقِّع:

| الحقل | الوصف |
| - | - |
| `key` | [مفتاح](https://docs.didit.me/ar/core-technology/electronic-signature/overview.md#الحقول-على-المستند) الحقل، وهو نفس المفتاح الذي تستخدمه في `sign.field_values`. |
| `type`, `role`, `label`, `required` | كما وُضعت على المستند. |
| `page`, `x`, `y`, `width`, `height` | موضع الحقل، ككسور من الصفحة كما يتم عرضها. |
| `value` | سلسلة نصية لحقول `text` و`email` و`full_name` و`date_signed` و`data`، وقيمة منطقية لخانات الاختيار، و`true` للتوقيع أو الأحرف الأولى المُطبقة. `null` عندما يكون الحقل فارغاً. |
| `display_value` | القيمة كما تُختم على الصفحة: التواريخ بتنسيق `date_format` الخاص بالحقل، و`Yes` أو `No` لخانات الاختيار، و`Signed` للتوقيع أو الأحرف الأولى. |
| `value_source` | مصدر القيمة: `signer` (كُتبت أو حُددت أو طُبقت بواسطة الموقِّع)، أو `identity` (الهوية المتحقق منها)، أو `contact` (البريد الإلكتروني أو الهاتف المتحقق منه)، أو `company` (الشركة المتحقق منها)، أو `session` (`vendor_data` الخاصة بالجلسة)، أو `metadata` (`metadata` الخاصة بالجلسة)، أو `api` (`sign.field_values` الخاصة بك)، أو `signing_time` (تاريخ التوقيع). |
| `filled_at` | وقت تعيين القيمة. |
| `image_url` | للتوقيع أو الأحرف الأولى، مسار الصورة المُطبقة، بصيغة PNG. راجع [تنزيل صورة التوقيع](https://docs.didit.me/ar/sessions-api/electronic-signature/download-field-image.md). |
| `value_unavailable_reason` | سبب عدم وجود قيمة لحقل ملأته Didit: `not_verified` (لم يتم التحقق من الهوية أو وسيلة الاتصال)، أو `not_applicable` (حقل خاص بشركة في توقيع الشخص نفسه)، أو `not_provided` (المصدر لا يحتوي على قيمة)، أو `set_at_confirmation` (تاريخ توقيع يسبق تأكيد الموقِّع). خلاف ذلك `null`. |

## تنزيل المستندات الموقعة

استخدم المسارات الموجودة في `signed_file` و`evidence_file` مع مفتاح API الخاص بك. يعيد كل مسار ملف PDF نفسه.

```bash theme={null}
# Signed PDF of one document
curl -L 'https://verification.didit.me/v3/session/{session_id}/signatures/{node_id}/documents/{document_id}/file/' \
  -H 'x-api-key: YOUR_API_KEY' \
  -o agreement-signed.pdf

# Evidence PDF of one signer
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
```

| المسار | المرجع |
| - | - |
| `GET .../documents/{document_id}/file/` | [تنزيل مستند موقّع](https://docs.didit.me/ar/sessions-api/electronic-signature/download-signed-document.md) |
| `GET .../evidence/` | [تنزيل أدلة التوقيع](https://docs.didit.me/ar/sessions-api/electronic-signature/download-evidence.md) |
| `GET .../fields/{field_id}/image/` | [تنزيل صورة التوقيع](https://docs.didit.me/ar/sessions-api/electronic-signature/download-field-image.md) |
| `POST .../validate/` | [التحقق من صحة التواقيع](https://docs.didit.me/ar/sessions-api/electronic-signature/validate-signatures.md) |

قبل الرد، تتحقق Didit من الملف المخزن مقابل قيمة SHA-256 المسجلة له. إذا اختلفا، تُرجع مسارات PDF الموقّع والأدلة الرمز `409`، ويُرجع مسار الصورة الرمز `400`، وكل منها مصحوب بـ `signature_document_changed`. قم دائماً بتمرير `signature_id` إلى مسار الأدلة عندما تتضمن خطوة KYB عدة موقّعين.

## ملف PDF الموقّع

يحتوي ملف PDF الموقّع، بالترتيب، على:

1. صفحات المستند التي عُرضت على الموقِّع، مع ختم قيمة كل حقل في الموضع الذي حددته.
2. صفحة الأدلة، ما لم تقم بإيقاف تفعيل `signature_evidence_page`.
3. بالنسبة إلى المستوى Advanced (AES) فقط، توقيع PAdES، مع الختم الزمني وفق RFC 3161 الصادر عن Didit وبيانات الإلغاء اللازمة للتحقق من صحته في المستقبل. ينتهي ملف Simple PDF بعد صفحة الأدلة ولا يحتوي على توقيع رقمي أو ختم أو ختم زمني.

في ملف PDF من المستوى Advanced (AES)، يغطي التوقيع كل بايت يسبقه، بما في ذلك قيم الحقول وصفحة الأدلة. يؤدي تغيير أي شيء في الملف بعد ذلك إلى إبطال صلاحيته، وتُظهر أي أداة تحقق تدعم PAdES ذلك. توضح تفاصيل التوقيع اسم الموقِّع وتشير إلى جلسة التحقق من هويته وتأكيد الرمز الخاص به.

تصبح قيم الحقول جزءاً من محتوى الصفحة وليست حقول نماذج، لذا لا يمكن تعديلها لاحقاً وتظهر في كل عارض PDF. تُظهر خانة الاختيار المحددة علامة اختيار، بينما تُترك الخانة غير المحددة كما رسمها المستند. يحصل مربع التوقيع الذي يزيد ارتفاعه عن 24 نقطة أيضاً على تسمية توضيحية صغيرة أسفل التوقيع: `Signed with Didit ·` متبوعة بأول 8 أحرف من `id` الخاص بالتوقيع.

تضيف Didit قيم الحقول وصفحة الأدلة والتوقيع بعد بايتات المستند الذي عُرض على الموقِّع. يُعد ذلك المستند بادئة مطابقة تماماً للملف الموقّع، لذا لا يزال من الممكن التحقق من `sha256_original` مقابل ملف PDF الموقّع.

## ملف PDF الخاص بالأدلة

يسجل ملف PDF الخاص بالأدلة، لموقّع واحد:

* المستوى والصيغة.
* اسم الموقِّع، وصفته في التوقيع، والشركة بالنسبة لـ KYB.
* جلسة التحقق من الهوية (Advanced (AES) فقط).
* التأكيد: القناة، والوجهة المحجوبة، والوقت (Advanced (AES) فقط).
* عنوان IP الخاص بالموقِّع.
* كل مستند: العنوان، وعدد الصفحات، وقيمة SHA-256 للمستند الأصلي. بالنسبة لمستند Word، اسم ملف Word وقيمة SHA-256 الخاصة به، وإصدار أداة التحويل، وقيمة SHA-256 لملف PDF.
* التوقيع المعتمد: مكتوباً (مع نمط خط اليد الخاص به) أو مرسوماً، ووقت اعتماده، وصور التوقيع والأحرف الأولى.
* كل حقل لكل مستند: تسميته وصفحته ونوعه، وقيمته (الصورة بالنسبة للتوقيع أو الأحرف الأولى)، ومصدر القيمة (على سبيل المثال **تمت كتابتها بواسطة الموقِّع** أو **الهوية المتحقق منها** أو **API الخاص بك**)، ووقت ملئه (بالتوقيت العالمي الموحد UTC)، وعنوان IP الخاص بالموقِّع في ذلك الوقت بالنسبة للقيمة التي كتبها.
* الموافقة النهائية: النص الذي وافق عليه الموقِّع في شاشة المراجعة، ووقت الموافقة.
* قيمة SHA-256 لكل ملف موقّع، وبالنسبة لـ Advanced (AES)، الشهادة (الجهة الصادرة إليها، والجهة المصدرة، والرقم التسلسلي، والصلاحية) والختم الزمني.

تحتوي الصفحة الملحقة بكل ملف PDF موقّع على نفس المحتوى دون قسم الشهادة، لأنه يُضاف قبل تطبيق التوقيع.

## التحقق من التوقيع مجددًا

يعيد `POST /v3/session/{session_id}/signatures/{node_id}/validate/` قراءة كل مستند PDF موقّع في الخطوة ويتحقق من تجزئة SHA-256 الخاصة به. بالنسبة للتوقيع المتقدم (AES)، فإنه يتحقق أيضًا من صحة توقيع PAdES وشهادته وبيانات الإلغاء والطابع الزمني. لا يحتوي التوقيع البسيط على توقيع رقمي، لذا يقتصر التحقق على سلامة الملف فقط. يتم حفظ النتيجة في `validation` وإرجاع مصفوفة `signatures[]` المُحدّثة. أرسل `signature_id` للتحقق من موقّع واحد فقط. يتطلب ذلك إذن `write:sessions`، وهو ما يقابل زر **التحقق مجددًا** في لوحة التحكم. إذا كان ملف PDF الموقّع والمخزّن لم يعد يطابق `sha256_signed` الخاصة به، فسيتم إرجاع الخطأ `400` مع الرمز `signature_document_changed`.

تكون قيمة `validation` هي `null` حتى يتم توقيع المستندات. إذا لم تتمكن Didit من تأكيد نتيجة التوقيع، فستكون قيمة `validation` هي `{ "valid": null, "reason": "signature_provider_outcome_unknown", "checked_at" }` وستبقى `status` على `signing` حتى يتم حل المشكلة: تعامل معها على أنها غير موقّعة.

| حقل `validation.documents[]` | الوصف |
| - | - |
| `valid` | `true` عندما يكون كل من التوقيع والطابع الزمني صالحين وموثوقين. بالنسبة للتوقيع البسيط، تكون `true` إذا لم يطرأ أي تغيير على الملف. |
| `integrity` | `true` عندما لا يطرأ أي تغيير على المستند منذ توقيعه. |
| `trusted` | `true` عندما ترتبط شهادة التوقيع بسلسلة تؤدي إلى جذر موثوق. تكون `null` للتوقيع البسيط. |
| `revoked` | `true` عندما يتم إلغاء شهادة التوقيع. تكون `null` للتوقيع البسيط. |
| `trusted_list` | `{ "status": "not_applicable", "reason": "aes_not_qualified" }` لتوقيعات AES. ينطبق فحص القائمة الموثوقة للاتحاد الأوروبي (EU Trusted List) على التوقيعات المؤهلة. يعيد التوقيع البسيط `{ "status": "not_applicable", "reason": "simple_not_sealed" }`. |
| `certificate` و `timestamp` | كما وردا في الملف. |

## في تقرير PDF

يطبع [تقرير PDF](https://docs.didit.me/ar/sessions-api/generate-pdf.md) قسمًا خاصًا بالتوقيع يتضمن الموقّع والتأكيد والشهادة والطابع الزمني والمستندات مع قيم التجزئة الخاصة بها. عندما تحتوي المستندات على حقول، تتبعها صفحة **التوقيع الإلكتروني · الحقول** مع جدول واحد لكل مستند: قيمة كل حقل، وصور التوقيع والأحرف الأولى، والأوقات، والمصادر. يأتي قسم التوقيع بعد التحقق البنكي في تقرير KYC، وبعد المستندات في تقرير KYB. مرّر `pages=signature` لطباعة هذا القسم فقط.

## مواضيع ذات صلة

* [نظرة عامة على التوقيع الإلكتروني](https://docs.didit.me/ar/core-technology/electronic-signature/overview.md)
* [تحذيرات التوقيع الإلكتروني](https://docs.didit.me/ar/core-technology/electronic-signature/warnings-electronic-signature.md)
* [نماذج البيانات: التوقيع الإلكتروني](https://docs.didit.me/ar/reference/data-models.md#التوقيع-الإلكتروني)
* [webhook](https://docs.didit.me/ar/integration/webhooks.md)


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