سجل التحديثات — كل جديد في الـAPI أولًا بأول.
تتطوّر واجهة «وثائق» البرمجية باستمرار دون أن تُعطّل تكاملك، ويُثبَّت الإصدار بترويسة مؤرّخة Wthaiq-Version: 2026-07-01: فالتغييرات المتوافقة — مثل نقطة نهاية جديدة أو حقل اختياري أو نوع حدث جديد — تُطرح تباعًا على إصدارك نفسه، أما التغييرات الجذرية فتأتي في إصدار مؤرّخ جديد لا يسري عليك حتى تقرّر الترقية إليه بنفسك. وتوثّق هذه الصفحة كل تغيير بتاريخه ووسمه.
Wthaiq-Version: 2026-07-01
دليل الوسوم
يحمل كل تغيير في السجل وسمًا بلونه ونوعه، لتعرف أثره في تكاملك من النظرة الأولى.
الإصدارات الأحدث أولًا.
يبدأ الخط الزمني من الإطلاق العام للواجهة v1 في 4 أكتوبر 2026، ثم تحديثاتها بتواريخها ووسومها الدقيقة.
- إضافةتصدر رسالة الخطأ بالإنجليزية مع رأس الطلب
Accept-Language: enأو المعامل?lang=en، وتبقى العربية افتراضيًّا، ولا تتغيّر رموز الأخطاء. - إصلاحصار المسار
/en/api/v1/…يعمل كالمسار/api/v1/…تمامًا، ورسائل أخطائه بالإنجليزية. - إضافة
upgrade_urlصار حقلًا في الخطأين402 plan_requiredو402 plan_expired، وverify_urlحقلًا في الخطأ403 kyb_required، وmax_signersحقلًا في الخطأ400 too_many_signers. - تغيير
GET /v1/verifications/{reference}لمرجع غير موجود يعود بخطأ 404 بالصيغة الموحّدة والرمزnot_found، بدل جسم يشبه ردّ النجاح. - إصلاح
GET /v1/webhook_endpointsصار يعيدnext_cursorويقبلstarting_after، فتصل إلى كل نقاط الاستقبال صفحةً بعد صفحة. - إصلاحيشير الحقل
docsفيGET /v1إلى التوثيق في لوحة المطوّرين.
- إضافةبعد تأكيد الهوية نطابق الاسم في وثيقة الموقّع بالاسم المرسَل في الطلب. وحين يختلفان يُوقَف التوقيع حتى قرارك، ويصلك الحدث
signer.identity_match_holdثمsigner.identity_match_decidedبعد القرار. - إضافةنقطة جديدة للقرار:
POST /v1/signers/{id}/identity_matchبالقيمة approve أو reject، وصفحة «مراجعة الهوية» في لوحة المطوّرين بدور جديد «مراجع الهوية». - إضافةيحمل كائن الموقّع
identity.name_matchبحالة المطابقة والاسمين، ويمكنك من الصفحة نفسها اختيار «سجّل الاختلاف فقط» بدل إيقاف التوقيع.
- تغييرصارت لوحة المطوّرين منتجًا مستقلًّا بحساب مطوّر منفصل يُنشأ من صفحة التسجيل فيها، ولا يرتبط بحسابات منصّة وثائق في الدخول ولا في البيانات ولا في الأرصدة.
- تغييريتطلّب الإرسال الحيّ باقة سنوية مدفوعة وشركة موثّقة، وإلّا عاد الخطأ
402 plan_requiredأو402 plan_expiredأو403 kyb_required. ويبقى مفتاح التجربة مجانيًّا بحدود يومية. - تغييريُحتسب كل موقّع في الطلب الحيّ إرسالًا من رصيد باقتك السنوي، والحدّ الأقصى خمسة موقّعين في الطلب الواحد، وبعد نفاده تُخصم الزيادة من المحفظة بسعر باقتك، ويُخصم تأكيد الهوية من المحفظة دائمًا. وإن لم يكفِ الرصيد عاد الخطأ
402 insufficient_balanceولا يُنشأ الطلب. - إضافةيعود الخطأ
403 plan_feature_unavailableحين يطلب الطلب قدرة لا تتضمّنها باقتك، ويحمل الحقولfeatureوrequired_planوupgrade_url. - تغييرتعيد نقطتا
GET /v1/usageوGET /v1/balanceالمبالغ كائناتٍ بعملة محفظتك ومعها الباقة وأسعارها، وأُزيلت المفاتيحamount_egpوmonth_spent_egpوsend_egp. وصار الحقلcostفي الجلسة كائنًا بالمبلغ والعملة والمصدر. - إيقاف تدريجيأُلغيت الطلبات الحيّة المجانية التي كانت تُتاح قبل توثيق الحساب، ويبقى الحقل
trialفي الطلبات القديمة وحدها.
- إضافةطلبات التوقيع على المسار
POST /v1/signature_requestsبدورة حياتها الكاملة، ونقاط النهايةsendوcancelوremindersوdownloadوcertificateوevidence. - إضافةالقوالب عبر
GET /v1/templatesوإنشاء طلب التوقيع من قالب بتمرير قيم حقوله، والتحقّق العلني بالرقم المرجعي عبرGET /v1/verifications/{reference}. - إضافةالتوقيع المضمَّن داخل تطبيقك عبر
POST /v1/signers/{id}/signing_sessionو/v1/sessions، وتأكيد هوية الموقّع عبر مزوّد متخصّص بالحقلrequire_identityوالكائنidentity_verification. - إضافةإشعارات أحداث آلية (Webhooks) موقّعة بالترويسة
Wthaiq-Signatureبخوارزمية HMAC-SHA256، وإعادة المحاولة على فترات متزايدة حتى 24 ساعة، ومنها أحداث مراجعة تأكيد الهويةsigner.identity_in_reviewوsigner.identity_resubmission_requestedوsigner.identity_declined. - إضافةمفاتيح حيّة بالبادئتين
sk_وpk_، ومفاتيح تجربة بالبادئتينsk_test_وpk_test_لا تُخصم بها قيمة ولا تُرسَل بها رسالة إلى أحد، ويبيّن الحقلlivemodeأيَّهما أنشأ الكائن. - تغييرتعود الأخطاء كلها ببنية موحّدة، ويُقبل
Idempotency-Keyعلى طلباتPOSTلتكون إعادة المحاولة آمنة، والحدّ 100 طلب في كل 10 ثوانٍ مع الترويساتX-RateLimit-LimitوRetry-After، وتحمل كل استجابةWthaiq-Request-Id. - متاححِزم تطوير البرمجيات (SDKs) الرسمية:
wthaiq/wthaiq-php(PHP) ·wthaiq(Node.js) ·wthaiq(Python) — تثبّت ترويسة الإصدار افتراضيًّا، وتتبع نظام الترقيم الدلالي (SemVer). ومعها مكتبتا التوقيع داخل التطبيق (iOS · Android)؛ وأوامر التثبيت في صفحة المكتبات الرسمية.
كيف نُصدر التغييرات دون أن نكسر تكاملك.
نعتمد ترقيم الإصدارات بالتاريخ (date-based versioning)، فلا يتغيّر سلوك إصدارك المثبّت أبدًا بسبب تغيير جذري، وأنت وحدك من يقرّر موعد ترقيته.
تغييرات جذرية
تتطلّب إصدارًا مؤرّخًا جديدًا
- حذف نقطة نهاية أو حقل أو قيمة
enum، أو إعادة تسميتها. - تغيير نوع حقل قائم (مثلًا من
stringإلىinteger). - إضافة معامل إلزامي جديد (
required) إلى طلب قائم. - تشديد قواعد التحقّق بحيث تُرفض طلبات كانت تُقبل سابقًا.
- تغيير المعنى الافتراضي لاستجابة، أو تغيير ترتيب عناصر قائمة.
تغييرات متوافقة
تُطرح تباعًا على إصدارك نفسه
- إضافة نقطة نهاية جديدة كليًّا.
- إضافة حقل جديد اختياري إلى جسم استجابة.
- إضافة قيمة
enumجديدة (احرص على معالجة القيم غير المعروفة بمرونة). - إضافة نوع حدث جديد إلى قائمة الإشعارات الآلية.
- إضافة معامل اختياري جديد إلى طلب قائم.
Wthaiq-Deprecation مع الاستجابات المعنيّة، ونُبقي السلوك القديم عاملًا مدةً لا تقل عن 6 أشهر قبل إزالته في إصدار مؤرّخ جديد، ليتّسع لك الوقت للترقية بأمان. ثبّت الإصدار بإرسال ترويسة Wthaiq-Version مع كل طلب. وإن لم تُرسلها، فسيُستخدم آخر إصدار مؤرّخ مثبّت على حسابك (أو أحدث إصدار افتراضي). ولا يتغيّر سلوك إصدارك المثبّت أبدًا بسبب تغيير جذري. مثال:
curl https://wthaiq.com/api/v1/signature_requests \
-H "Authorization: Bearer sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Wthaiq-Version: 2026-07-01"
# الاستجابة تعيد الإصدار المستخدم فعليًّا في الترويسة:
# Wthaiq-Version: 2026-07-01
# Wthaiq-Request-Id: req_9f2a1c
Wthaiq-Version في بيئة الإنتاج. ولا حاجة إلى ترقية كل تكاملاتك دفعة واحدة؛ فكل تكامل يُرقّى بالإيقاع الذي يناسبه. جاهز لبناء تكاملك؟
ابدأ من الوثائق الكاملة للواجهة البرمجية، وثبّت إصدارك المؤرّخ، واشترك لتصلك كل التحديثات أولًا بأول.