صورة من فيسبوك
03 ساعات و10 دقائق و31 ثانية
وثائق المطورين

Rapid Translate واجهة برمجة التطبيقات (API)

قم بوضع طلبات ترجمة المستندات المعتمدة وتتبعها برمجيًا. واجهة برمجة تطبيقات REST عبر HTTPS، يتم التحقق من صحتها باستخدام رمز مميز وتعيد بيانات JSON - مع روابط ويب موقعة لكل حدث.

عنوان URL الأساسي https://www.rapidtranslate.org/api/v1
إصدار v1
شكل JSON
create-order.sh
curl -X POST https://www.rapidtranslate.org/api/v1/orders \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "reference=APO-10432" \
  -F "source_language=Spanish" \
  -F "target_language=English (US)" \
  -F "translation_type=certified" \
  -F "files[]=@document.pdf"

→ {
  "id": "9b1c2d3e-…",
  "status": "pending",
  "livemode": true
}

مقدمة

ال Rapid Translate تتيح واجهة برمجة التطبيقات (API) لتطبيقك إرسال المستندات للترجمة المعتمدة، واسترجاع أحدث المعلومات حول حالة الطلب والأسعار، واستلام الملفات النهائية - دون الحاجة إلى تدخل فريقك في عملية الدفع. وهي مصممة خصيصًا للشركات التي تقدم طلبات الترجمة نيابةً عن عملائها.

جميع الطلبات موجهة إلى https://www.rapidtranslate.org/api/v1 عبر بروتوكول HTTPS. الطلبات والاستجابات بتنسيق JSON، باستثناء عملية إنشاء الطلب، التي يتم فيها تحميل الملفات بتنسيق JSON. multipart/form-dataتُعاد جميع المبالغ على النحو التالي: سنتات عددية صحيحة بالدولار الأمريكي، وجميع الطوابع الزمنية بتوقيت UTC ISO-8601.

الوصول إلى واجهة برمجة التطبيقات (API) متاح لحسابات المؤسسات. أضف نشاطك التجاري من لوحة التحكم، ثم أنشئ المفاتيح من إعدادات الأعمال ← مفاتيح واجهة برمجة التطبيقات . إذا لم يكن لديك حساب أعمال بعد، تواصل مع support@rapidtranslate.org .

مجموعة ساعي البريد

هل تفضل تصفح واجهة برمجة التطبيقات قبل كتابة أي كود؟ تحتوي مجموعة Postman الخاصة بنا على جميع نقاط النهاية مهيأة مسبقًا - بما في ذلك المصادقة، ونصوص الأمثلة، ومعلمات الاستعلام.

قم بتنزيل مجموعة بوستمان

  1. في برنامج Postman، اختر ملف ← استيراد وحدد الملف الذي تم تنزيله.
  2. افتح المجموعة المتغيرات وضبط مفتاح API إلى مفتاح من إعدادات الأعمال ← مفاتيح واجهة برمجة التطبيقات.
  3. (اختياري) مجموعة baseUrl بالنسبة لبيئتك — يتم ضبطها افتراضياً على بيئة الإنتاج.
  4. أرسل أي طلب. استخدم مفتاح Sandbox للاختبار دون تقديم طلبات مدفوعة.

المصادقة

قم بمصادقة كل طلب باستخدام مفتاح API السري الخاص بك كرمز مميز، واطلب استجابة بتنسيق JSON. كلا العنوانين مطلوبان:

المصادقة: حامل مفتاح API الخاص بك، القبول: تطبيق/json

يمكنك إنشاء المفاتيح وتدويرها في لوحة التحكم ضمن إعدادات الأعمال ← مفاتيح واجهة برمجة التطبيقات . تُعرض المفاتيح مرة واحدة عند إنشائها وتُخزن مشفرةً - إذا فقدت مفتاحًا، فقم بتدويره. ينتمي كل مفتاح إلى وضع واحد (الوضع الفعلي أو وضع الاختبار) ويحمل مجموعة ثابتة من النطاقات.

النطاقات

تتطلب كل نقطة نهاية قدرة محددة على المفتاح. المفتاح الذي يفتقر إلى النطاق المطلوب يُرجع قيمة خاطئة. 403 نطاق محظور.

نِطَاقالمنح
الطلبات: اكتبإنشاء الطلبات والموافقة عليها
الطلبات: اقرأاسترجاع الطلبات وعرضها
السعر: اقرأاقرأ قائمة الأسعار
حافظ على سرية المفاتيح. يمكن للمفتاح النشط أن يُفعّل عمليات الشراء المدفوعة. لا تُفصح عنه أبدًا في كود جانب العميل، أو المتصفحات، أو المستودعات العامة.

وضع الاختبار والوضع التجريبي

وضع الاختبار هو خاصية للمفتاح ، وليس لحسابك. يعمل مفتاح Sandbox في بيئة محاكاة كاملة، بينما يقوم مفتاح Live بوضع طلبات حقيقية قابلة للفوترة. يمكنك استخدام كليهما في الوقت نفسه.

تستخدم طلبات بيئة الاختبار نفس عمليات التحقق من الصحة، وتعيين الحقول، والتسعير الحقيقي، ولكنها تتجاوز تخزين الملفات، والتعرف الضوئي على الأحرف، والتنفيذ. عند الإنشاء، يمر طلب بيئة الاختبار تلقائيًا بدورة حياته (عملية → مكتملة)، وإطلاق نفس روابط الويب مثل الطلب المباشر، وأخيراً تسليم مستند نموذجي ثابت.

كل استجابة وخطاف ويب يحملان الوضع المباشر قم بتفعيل هذه الخاصية حتى يتمكن التكامل من إنشاء فرع دون فحص المفتاح:

  • الوضع المباشر: صحيح — طلب حقيقي قابل للفوترة
  • الوضع المباشر: خطأ — صندوق الاختبار / طلب تجريبي

حدود المعدل

يتم تحديد عدد الطلبات المسموح بها لكل مؤسسة. الحد الافتراضي هو 120 طلبًا في الدقيقةتجاوز هذا الحد يؤدي إلى إرجاع 429 معدل محدودأعد المحاولة بعد فترة توقف قصيرة. إذا كانت عملية التكامل لديك تتطلب حدًا أعلى، فاتصل بنا. support@rapidtranslate.org.

الردود

كل استجابة ناجحة تغلف حمولتها في بيانات مفتاح. أضف نقاط النهاية المدرجة ميتا كتلة مع ترقيم الصفحات.

مورد واحد

{
  "data": {
    "id": "9b1c...-uuid",
    "reference": "APO-10432",
    "status": "processing",
    "total": 11270,
    "currency": "USD"
  }
}

قائمة مرقمة إلى صفحات

{
  "data": [ ... ],
  "meta": {
    "current_page": 1,
    "per_page": 25,
    "total": 134,
    "last_page": 6
  }
}

أخطاء

تستخدم الأخطاء رموز حالة HTTP القياسية وتعيد بيانات مستقرة وقابلة للقراءة آليًا رمز الخطأ إلى جانب رسالة بشرية. تضيف أخطاء التحقق حقلًا مُفهرسًا أخطاء هدف.

{
  "message": "The given data was invalid.",
  "error_code": "validation_failed",
  "errors": {
    "source_language": ["The selected source language is invalid."]
  }
}
HTTPرمز الخطأمعنى
400اقتراح غير جيدنص الطلب غير صحيح
401غير موثقمفتاح مفقود أو غير صالح أو ملغي
402فشل الدفعتمت الموافقة على الطلب ولكن تعذر تحصيل الدفعة
402رصيد الائتمانتجاوز الطلب الحد الائتماني الخاص بك
403نطاق محظوريفتقر المفتاح إلى النطاق المطلوب
403تم تعليق الحسابتم تعليق عمل المنظمة بسبب فواتير غير مدفوعة
404غير موجودلا يوجد مثل هذا الأمر لهذه المنظمة
409مرجع مكررتمت إعادة استخدام المرجع لطلب مختلف
409غير بانتظار الموافقةالطلب لا ينتظر موافقتك
422فشل التحقق من الصحةالحقول المفقودة أو غير الصالحة
429معدل محدودتم تجاوز الحد الأقصى للسعر
500خطأ في الخادمخطأ غير متوقع في الخادم
503فشلت المعالجةفشلت عمليات المعالجة اللاحقة (التعرف الضوئي على الأحرف / التسعير).

حالة الطلبات

طلب حالة تتبع دورة حياة مستقرة. هذه القيم الخمس هي أيضاً القيم المقبولة من قبل حالة تفعيل الفلتر قائمة الطلبات:

حالةمعنى
قيد الانتظارتم الاستلام؛ لم يتم الانتهاء من التسعير بعد. المجموع ربما باطل.
في انتظار الموافقةالسعر معروض وينتظر موافقتك على الإجمالي (فقط عند الحاجة إلى الموافقة).
يعالجتمت الموافقة والتفعيل؛ والترجمة جارية.
مكتملتم الانتهاء؛ الوثائق المترجمة متاحة.
تم الإلغاءتم إلغاء الطلب.

أثناء تنفيذ الطلب، يتم إضافة تصنيفات أكثر تفصيلاً (على سبيل المثال تم تعيينه للمترجم, الترجمة, تم الشحنقد يظهر أيضًا ). عندما تكون الموافقة مطلوبة، قد يُبلغ الطلب بإيجاز فشل الدفع أو رصيد الائتمان إذا تعذر تحصيل الرسوم، فقم بحل مشكلة طريقة الدفع وقم بالموافقة عليها مرة أخرى.

قائمة اللغات

يحصل اللغات

يعرض جميع اللغات المدعومة. استخدم اسم القيمة حرفيًا كما لغة المصدر / اللغة المستهدفة عند إنشاء طلب — تتم مطابقة الطلبات بناءً على اسم اللغة، وليس الرمز.

يتطلب مفتاحًا موثقًا.

curl https://www.rapidtranslate.org/api/v1/languages ​​\ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"
{
  "data": [
    { "code": "english-uk", "name": "English (UK)", "active": true },
    { "code": "spanish",     "name": "Spanish",      "active": true }
  ]
}

احصل على قائمة الأسعار

يحصل /الأسعار

يعرض هذا الجدول قائمة أسعار الصرف الأساسية في الولايات المتحدة، بالدولار الأمريكي، والتي تُحاسب عليها طلباتك. المبالغ عبارة عن أرقام عشرية. يتم تجميع الأسعار حسب ترجمة نوع (كل منها مع عادي و سريع لكل-وحدة سعر)، توصيل الطريقة، و تصديق أبوستيل — نفس القيم التي ترسلها عند إنشاء طلب.

نِطَاق: السعر: اقرأ

{
  "data": {
    "country":  { "code": "US", "name": "United States" },
    "currency": { "code": "USD", "symbol": "$" },
    "translation": {
      "certified":   { "unit": "page", "regular": "27.99", "rapid": "37.99" },
      "standard":    { "unit": "word", "regular": "0.11",  "rapid": "0.15" },
      "specialized": { "unit": "page", "regular": "47.99", "rapid": "57.99" },
      "naati":       { "unit": "page", "regular": "42.99", "rapid": "52.99" },
      "sworn": {
        "unit": "page",
        "note": "Sworn pricing depends on the language pair.",
        "language_pairs": [
          { "languages": ["Spanish","English"], "unit": "page", "regular": "57.99", "rapid": "67.99" },
          { "languages": ["Polish","English"],  "unit": "page", "regular": "46.99", "rapid": "56.99" }
        ]
      }
    },
    "delivery": {
      "email": "0.00", "notarized_email": "19.99",
      "mail_standard": "29.99", "mail_next_day": "55.00"
    },
    "apostille": { "base": "79.00", "additional_document": "15.00" }
  }
}

أسعار معتمدة. يتم تسعير الترجمة المعتمدة لكل زوج من اللغات. أزواج اللغات يسرد كل زوج مؤهل للقسم مع خاصته عادي/سريع السعر. أي صيغة إنجليزية مقبولة (الإنجليزية (الأمريكية/البريطانية/الأسترالية/الكندية))، وكل زوج يعمل في كلا الاتجاهين ما لم يكن يحمل "ثنائي الاتجاه": خطأ.

إنشاء طلب

بريد /طلبات

يقوم هذا النظام بإنشاء طلب ترجمة وتحميل الملفات المصدرية. ولأنه يحمل ملفات، فإنه يستخدم multipart/form-data (ليس JSON). تستخدم الحقول المتداخلة صيغة الأقواس، على سبيل المثال العميل[الاسم].

نِطَاق: الطلبات: اكتب

معايير الجسم

مجاليكتبملحوظات
مرجعسلسلة مطلوبةمرجع طلبك الفريد الخاص بك. إعادة استخدامه تُعيد الطلب الحالي (انظر خاصية التكرار).
العميل[الاسم]سلسلة مطلوبةالاسم الكامل للعميل النهائي.
customer[email]سلسلة مطلوبةالبريد الإلكتروني للعميل النهائي.
لغة المصدرسلسلة مطلوبةاللغة الدقيقة اسم من قائمة اللغات.
اللغة المستهدفةسلسلة مطلوبةاللغة الدقيقة اسم من قائمة اللغات.
نوع الترجمةسلسلة مطلوبةأحد معتمد, معيار, متخصص, أقسم, ناتي.
التف حولهسلسلة مطلوبةعادي أو سريع.
طريقة التسليمسلسلة مطلوبةأحد بريد إلكتروني, البريد الإلكتروني الموثق, معيار البريد, البريد في اليوم التالي.
عنوان التسليم [...]هدفمطلوب لـ معيار البريد / البريد في اليوم التالي: شارع, مدينة, رمز بريدي, دولة (ولاية خياري). دولة هو رمز ISO، على سبيل المثال نحن.
التصديق [مُفعّل]منطقيأضف إجراءات التصديق. انظر القواعد أدناه.
تصديق المستنداتعدد صحيحعدد المستندات المراد تصديقها. مطلوب عند التفعيل.
تصديق أبوستيل [بلد الوجهة]خيطالبلد الذي صدرت له شهادة التصديق.
ملحوظاتخيطتعليمات نصية حرة.
رمز القسيمةخيطرمز خصم للتطبيق. سيتم رفض الرموز غير الصالحة أو غير القابلة للتطبيق عند الإنشاء. 422 فشل التحققيتم تحديد الخصم نفسه بمجرد تسعير الطلب (انظر الملاحظة أدناه).
ملفات[]ملف[] مطلوبمن 1 إلى 20 ملفًا. الصيغ المسموح بها: pdf، jpg، jpeg، png، doc، docx، tiff، heic. الحد الأقصى لحجم كل ملف 20 ميجابايت.
خاصية التكرار. مرجع يُعدّ هذا الأمر فريدًا لكل منظمة. تكرار عملية إنشاء بنفس الطريقة. مرجع يعيد الطلب الحالي مع 200 بدلاً من إنشاء نسخة مكررة (يتم إرجاع طلب جديد) 201).
قواعد التصديق. لا تتوفر خدمة التصديق القنصلي إلا عندما تكون اللغة المستهدفة هي الإنجليزية (بأي لهجة)، ويجب على هذه الطلبات استخدام معيار البريد طريقة التوصيل. البريد في اليوم التالي مخصص للعناوين الأمريكية فقط.

مثال

curl -X POST https://www.rapidtranslate.org/api/v1/orders \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json" \ -F "reference=APO-10432" \ -F "customer[name]=Jane Doe" \ -F "customer[email]=jane@example.com" \ -F "source_language=Spanish" \ -F "target_language=English (US)" \ -F "translation_type=certified" \ -F "turnaround=regular" \ -F "delivery[method]=email" \ -F "files[]=@/path/to/birth-certificate.pdf"
{
  "data": {
    "id": "9b1c2d3e-...-uuid",
    "reference": "APO-10432",
    "livemode": true,
    "status": "pending",
    "source_language": "Spanish",
    "target_language": "English (US)",
    "translation_type": "certified",
    "turnaround": "regular",
    "total": null,
    "currency": "USD",
    "created_at": "2026-08-28T10:15:00+00:00"
  }
}

يبدأ الطلب الذي تم إنشاؤه حديثًا كـ قيد الانتظار مع باطل الإجمالي أثناء حساب السعر. استطلاع رأي استرجاع طلب أو استمع إلى حالة الطلب رابط الويب للاطلاع على تحديث السعر والحالة.

قسائم الخصم. أ رمز القسيمة يتم التحقق من صحة الكود على مرحلتين. عند الإنشاء، نتحقق مما لا يعتمد على طول المستند - صحة الكود، وحدود استخدامه، وأنواع الترجمة/الخدمات التي ينطبق عليها - ونرفض الكود غير الصحيح فورًا. أما القواعد التي تعتمد على عدد الصفحات/الكلمات (ومبلغ الخصم نفسه) فتُحل بعد حساب طول المستند، بحيث يظهر الخصم في المستند. السعر المجموع، وليس البداية قيد الانتظار الرد. إذا تبين أن القسيمة لا تنطبق بعد معرفة العدد، فسيتم تقديم الطلب بالسعر الكامل وسيتم وضع علامة عليه ليقوم فريقنا بمراجعته.

استرجاع طلب

يحصل /orders/{id}

يجلب طلبًا واحدًا من خلال بطاقة تعريف (معرّف UUID الذي تم إرجاعه عند الإنشاء). الإرجاع 404 غير موجود إذا لم يكن الطلب تابعًا لمنظمتك.

نِطَاق: الطلبات: اقرأ

curl https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"

قائمة الطلبات

يحصل /طلبات

يعرض طلبات مؤسستك، بدءًا من الأحدث، مع ترقيم الصفحات. ميتاجميع معلمات الاستعلام اختيارية.

نِطَاق: الطلبات: اقرأ

استفسارملحوظات
حالةأحد قيد الانتظار, في انتظار الموافقة, يعالج, مكتمل, تم الإلغاء.
مرجعقم بالتصفية حسب مرجعك.
لغة المصدر / اللغة المستهدفةقم بالتصفية حسب اسم اللغة.
تم إنشاؤه من / تم إنشاؤه لـنطاق التاريخ (شاملاً).
نوع-created_at (افتراضي، الأحدث أولاً) أو تاريخ الإنشاء (الأقدم أولاً).
لكل صفحةمن 1 إلى 100. القيمة الافتراضية هي حجم الصفحة القياسي.
صفحةرقم الصفحة.
curl "https://www.rapidtranslate.org/api/v1/orders?status=completed&per_page=50" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"

الموافقة على الطلب

بريد /orders/{id}/approve

يوافق على الإجمالي المحسوب للطلب الذي في انتظار الموافقة، مما يؤدي إلى تفعيلها وإتمامها. هذا مطلوب فقط عندما يتطلب حسابك موافقة قبل بدء العمل. الاستدعاء متكرر لا يتأثر بالتغييرات.

نِطَاق: الطلبات: اكتب

curl -X POST https://www.rapidtranslate.org/api/v1/orders/9b1c2d3e-...-uuid/approve \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Accept: application/json"

عند نجاح العملية، يتم إرجاع الطلب المُحدَّث. أما إذا لم يكن الطلب بانتظار الموافقة، فستحصل على 409 ليس في انتظار الموافقةإذا كان مطلوبًا دفع رسوم ولكن فشل ذلك، فستحصل على 402 فشل الدفع أو 402 credit_hold.

قيم الحقول

المجموعات الثابتة المقبولة عند إنشاء الطلب.

أنواع الترجمة

قيمةوصف
معتمدترجمة معتمدة (سعرها للصفحة الواحدة).
معيارالترجمة القياسية (بسعر الكلمة الواحدة).
متخصصترجمة متخصصة / ترجمة خبيرة (لكل صفحة).
أقسمترجمة معتمدة (لكل صفحة).
ناتيترجمة معتمدة من NAATI (لكل صفحة).

التف حوله

قيمةوصف
عاديمدة التنفيذ القياسية.
سريعإنجاز سريع.

طرق التوصيل

قيمةعنوانوصف
بريد إلكترونيلاالتسليم الرقمي عبر البريد الإلكتروني (مجانًا).
البريد الإلكتروني الموثقلاتسليم رقمي موثق.
معيار البريدنعمالبريد العادي؛ يشحن إلى الدول المدعومة.
البريد في اليوم التالينعمخدمة البريد في يوم العمل التالي (للعناوين الأمريكية فقط).

روابط الويب

بدلاً من الاستقصاء، قم بتهيئة نقطة نهاية Webhook لاستقبال الأحداث فور وقوعها. حدد عنوان URL الخاص بك واطلع على سر التوقيع في إعدادات الأعمال ← Webhooks . تُعدّ Webhooks وسيلةً مُيسّرة، حيث أن استرجاع الطلب يتم دائمًا بشكل موثوق.

الفعاليات

حدثتم الإرسال عند
حالة الطلبيتغير وضع الطلب.
مراجعة العميلتم تحديد سعر الطلب وهو بانتظار موافقتك (وضع الموافقة فقط).
تسليم المستنداتالوثائق المترجمة جاهزة، مع روابط التنزيل.
فشل الدفعلم يتم تحصيل رسوم الطلب الموافق عليه - وهذا يحمل فشل حاجز (سبب, رسالةقم بتحديث بطاقة المحفظة ثم وافق عليها مرة أخرى.
رصيد الائتمانسيؤدي الطلب الموافق عليه إلى تجاوز حد الائتمان الخاص بك. رصيد الائتمان حاجز (رسالةقم بتسوية الفواتير أو اطلب حدًا أعلى.

ظرف

كل شحنة تأتي في نفس الظرف: حدث كتلة (بما في ذلك) الوضع المباشر) وحدث محدد بيانات حاجز.

{
  "event": {
    "type": "order_status",
    "id": "evt_9b1c...",
    "livemode": true,
    "sent_at": "2026-08-28T10:20:00+00:00"
  },
  "data": {
    "order": {
      "id": "9b1c2d3e-...-uuid",
      "reference": "APO-10432",
      "status": "completed"
    }
  }
}

ال تسليم المستندات يُضيف الحدث وثائق مصفوفة (كل منها يحتوي على) اسم, رابط التنزيل, إصدار, حالة) و أ منفذ الرابط. الـ مراجعة العميل يُضيف الحدث قائمة مفصلة التسعير كتلة و الإجراءات.الموافقة كائن يحتوي على عنوان URL المطلوب استدعاؤه.

التحقق من التوقيعات

يتم توقيع كل طلب حتى تتمكن من التأكد من أنه صادر من Rapid Translate نرسل ثلاثة رؤوس:

رأس الصفحةقيمة
توقيع X-RapidTranslatesha256=<hmac>
X-RapidTranslate-Timestampالطابع الزمني لنظام يونكس المستخدم في التوقيع
حدث الترجمة السريعة Xمعرّف الحدث الفريد

احسب التوقيع المتوقع كـ HMAC-SHA256 للسلسلة "{timestamp}.{raw_request_body}" باستخدام سر توقيع webhook الخاص بك، ثم قارنه بقيمة الترويسة:

// PHP
$expected = 'sha256=' . hash_hmac(
    'sha256',
    $timestamp . '.' . $rawBody,
    $webhookSecret
);
$valid = hash_equals($expected, $signatureHeader);

Node.js (Express) — قم بتثبيت المسار باستخدام محلل نص خام بحيث يتم الحفاظ على البايتات الدقيقة:

// app.use('/webhooks/rapidtranslate', express.raw({ type: 'application/json' }))
const crypto = require('crypto');

const timestamp = req.get('X-RapidTranslate-Timestamp');
const received  = req.get('X-RapidTranslate-Signature'); // "sha256=..."
const rawBody   = req.body;                               // Buffer, untouched

const expected = 'sha256=' + crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(`${timestamp}.${rawBody}`)
  .digest('hex');

const valid = received &&
  crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));

ثلاثة أشياء تُوقع الناس في الخطأ:

  • ال توقيع X-RapidTranslate يحمل العنوان sha256= البادئة. إما قارنها بـ 'sha256=' + yourHmac (كما سبق) أو قم بإزالة البادئة قبل المقارنة - لا تقم بمطابقة القيمة السداسية العشرية المجردة مع العنوان بأكمله.
  • قم بتشفير نص الطلب الخام تمامًا كما تم استلامه. إعادة تسلسل JSON المُحلل يُغير المسافات البيضاء وترتيب المفاتيح، لذا لن تتطابق التوقيعات - اقرأ النص قبل أن يقوم أي برنامج وسيط JSON بتحليله.
  • قارن في زمن ثابت (hash_equals / crypto.timingSafeEqual), أبداً مع == أو ===.

ال {الطابع الزمني} يُعد جزءًا من السلسلة الموقعة، لذا اقرأه من الترويسة وأضفه قبل التجزئة. كما يتيح لك رفض عمليات التسليم القديمة أو المعاد إرسالها، مثل أي طابع زمني أقدم من خمس دقائق.

تُعاد محاولات التسليم الفاشلة مع تراجع تدريجي (حتى 5 محاولات). رد بـ 2xx يتم إرسال إشعار استلام إلى الحالة.