سجل التغييرات
تُدوَّن في هذه الصفحة التغييرات التي تطرأ على الـ API وعلى هذا التوثيق. تبدأ المدخلات من 2026-09-19: وكل ما تغيّر قبل وجود هذه الصفحة غير مدرج بأثر رجعي، فاعتبر المدخل الغائب “غير مدوَّن” لا “غير متغيّر”.
كيف تقرأه
Section titled “كيف تقرأه”| النوع | المعنى |
|---|---|
| API | تغيّرت الخدمة — نقطة نهاية، أو حقل، أو حد. |
| العقد | تغيّر مستند OpenAPI المنشور. |
| المستندات | تغيّر التوثيق. والـ API لم يتحرك. |
| تصحيح | كان التوثيق يصف الـ API وصفًا خاطئًا. |
تُبرز مدخلات التصحيح منفصلةً عن قصد. فهي تصف تغيّرًا فيما كنت ستقرأه، لا فيما يفعله الـ API — فلا ينكسر شيء في تكاملك، لكن أي شيء بنيته على الوصف القديم قد يكون خاطئًا.
2026-10-27 — مرجع رموز الدول
Section titled “2026-10-27 — مرجع رموز الدول”المستندات · إضافة
- صفحة رموز الدول قابلة للبحث تُدرج جميع رموز ISO 3166-1 alpha-2 المخصصة رسميًا، مرتبطة من نقاط النهاية التي تقبل حقل
country.
2026-09-19 — إعادة هيكلة التوثيق ونشر العقد
Section titled “2026-09-19 — إعادة هيكلة التوثيق ونشر العقد”المستندات · إضافة
- قسم مرجع: OpenAPI والإصدارات والإهمال والحالة والدعم والأمان والمعجم.
- أصبح مستند OpenAPI 3.1 منشورًا على
https://docs.zelnum.com/openapi.yaml، وهو مرآة مطابقة بايت ببايت لنسخة المنصة، وقابل للاستيراد في Postman وInsomnia ومولّدات العملاء. - أمثلة عملاء بـ Python وNode.js وPHP وGo لنمطي الفحص كليهما، إلى جانب أمثلة cURL القائمة. وكانت قائمة التنقل تعد بأمثلة SDK بينما لم يكن موجودًا سوى cURL.
- جداول استجابة حقلًا بحقل لفحص الوقت الفعلي، والإرسال الجماعي، وحالة المهمة، ونقاط نهاية النتائج.
- حاجزان جديدان في البناء: يفشل البناء الآن عند وجود جدول مشوّه في أي لغة، ويطابق كل نقطة نهاية يسمّيها هذا التوثيق مع مستند OpenAPI المضمَّن في الاتجاهين — فنقطة نهاية موثّقة يفتقر إليها العقد، ومسار في العقد لا يوثّقه أحد، كلاهما فشل.
العقد · إضافة
- مستند OpenAPI نفسه: 10 مسارات، و9 مخططات، و
deprecated: trueعلىPOST /v1/realtime/detectالقديمة.
المستندات · تصحيحات
- كان الحقل الجماعي
countryموثّقًا كمطلوب في كل إرسال. وهو مطلوب لمنتجات الهاتف ويجب حذفه لمنتجات البريد الإلكتروني. وكما كان مكتوبًا، كانت منتجات البريد الإلكتروني الجماعية التسعة غير قابلة للإرسال — فكل طلب كان سيفشل في التحقق. - كانت قاعدة الحجم الجماعي خاطئة. كانت تقول “من 1,000 إلى 2,000,000 رقم لكل طلب”. والقاعدة الحقيقية هي الحد الأدنى الخاص بالمنتج المختار — 500 أو 1,000 أو 2,000 — حتى حد أقصى للمنصة قدره 2,000,000. وقد استبعد الرقم القديم أحد عشر منتجًا حدها الأدنى 500.
- كان كتالوج الأخطاء يسرد أربعة رموز لا يعيدها الـ API أبدًا. فصفحة التوثيق القديمة للمنصة تسمّي
not_foundوresult_not_readyوresult_expiredوvalidation_failed؛ ولا يُصدر التنفيذ أيًّا منها، ولا تحمل تلك الاستجابات حقلcodeإطلاقًا. ويسرد الجدول الآن الرموز الـ 22 التي يعيدها الـ API فعلًا، ويوثّق جدول ثانٍ الحالات بلا رمز — مع تحذير لكل من نقل تلك الفروع الأربعة. - كانت أمثلة الاستجابة تفتقد حقولًا يعيدها الـ API فعلًا.
seriesوcharged_amountوrefunded_amountفي استجابات الوقت الفعلي؛ وidempotent_replayوrecovery_pendingفي الإرسالات الجماعية؛ وعشرة عدّادات لتقدّم المهمة منهاsubmittedوprefilteredوdedupedوstageوlast_progress_atوfailure_message. - كانت حدود المعدل تسمّي نقطة النهاية الخطأ. قال سطر الوقت الفعلي
POST /v1/realtime/check/phone؛ والحد ينطبق علىPOST /v1/realtime/check/{series}، بما في ذلك البريد الإلكتروني. - وُصفت ترويسات الاستجابة وصفًا خاطئًا. كانت صفحة حدود المعدل توحي بأن مجموعة الترويسات كاملة تظهر على كل استجابة. وهي لا تفعل ذلك: فحاوية الوقت الفعلي لا تُبلّغ عند النجاح إلا عن
X-RateLimit-Remainingولا تُبلّغ أبدًا عنX-RateLimit-Limit، ولا يظهرX-RateLimit-Resetإلا على429عام أو خاص بالفحص. وتوضّح الصفحة الآن أي ترويسة تظهر وأين. - وُصف نموذج المفتاح وصفًا خاطئًا. ادّعت صفحة الأمان أن الحساب يحمل مفتاحًا واحدًا في كل مرة. ويمكن للحساب أن يحمل عدة مفاتيح نشطة، وتُنشئها لوحة التحكم وتعيد توليدها وتحذفها فرادى — فالتدوير التدريجي بلا توقف ممكن، وإعادة التوليد في المكان هي الصيغة التي لا تداخل فيها. ويُبلّغ
GET /v1/api-keyعن أحدث مفتاح نشط لا عن جرد، ويُكتبlast_usedالخاص به مرة كل خمس دقائق على الأكثر. - وُصف التمييز بين المعرّفات ومعرّفات slug وصفًا خاطئًا. قال المعجم إن خلط ID أو slug يُرفض بـ
product_mode_not_supported. وفي نقاط نهاية الوقت الفعلي يُتحقق منproduct_idsكمصفوفة أعداد صحيحة، فيُرفض الـ slug أبكر بـ400 invalid_realtime_request؛ أما422 product_mode_not_supportedفهو جواب نقطة النهاية الجماعية على منتج فوري. - ناقضت صفحة تنسيق الاستجابة صفحة الرصيد في العملة. قالت إحداهما “عملة فوترة الحساب”، وقالت الأخرى USD. وكلتاهما تقول الآن USD، وهو ما يقوله العقد ونقطة نهاية الرصيد.
- ذُكرت وحدة تسعير بلا مصدر. وُصف الجماعي بأنه “يُسعَّر لكل 10,000 فحص”. والكتالوج لا يكشف أي تسعير، فأُزيل الادّعاء بدلًا من إبقائه.
- كان تصحيحان قد وصلا إلى الصفحات المكتوبة يدويًا فقط. صُحّح بيان العملة وادّعاء “لكل 10,000 فحص” في الصفحتين الإنجليزية والصينية المبسّطة، لكن جدول النصوص الذي يولّد اللغات السبع الأخرى كان لا يزال يحملهما، فواصلت سبع لغات نشر كليهما. وقد صُحّحا في الجدول أيضًا.
- كان
/examples/صفحة مختلفة في كل لغة. كانت الصفحة الإنجليزية مركز تنقّل قصيرًا بينما عرضت اللغات الثماني الأخرى جولة جماعية من خمس خطوات. وتطابق الإنجليزية الآن الجولة، فتحمل اللغات التسع المحتوى نفسه.
المستندات · إصلاحات
- فقدت جداول المعاملات عمود وصفها بصمت في اللغات المولَّدة السبع كلها. كان مساعد مشترك يصدر ترويسة من ثلاثة أعمدة لصفوف من أربع خلايا، وGFM يُسقط كل خلية بعد عرض الترويسة — ففي الإسبانية مثلًا ظهرت قيمة “Required” تحت عنوان “Description” واختفى الوصف نفسه، في ثلاث صفحات عبر سبع لغات. ويأخذ المساعد الآن شكل أعمدة صريحًا ويفشل البناء عند وجود صف مشوّه، ويعيد حاجز مرحلة dist فحص كل جدول مُصيَّر في كل لغة باستقلالية.
- كانت اللغات المولَّدة تعرض ترويسات أعمدة جدول المنتجات وملاحظته وسطر مزامنته بالإنجليزية، وكانت علامات backtick في الملاحظة تصل إلى المتصفح كمحارف حرفية. والآن تأتي نصوص المكوّنات من جدول النصوص المترجم، ويفشل البناء عند غياب ترجمة بدلًا من الرجوع إلى الإنجليزية.
الاشتراك في التغييرات
Section titled “الاشتراك في التغييرات”لا توجد تغذية بعد. وإلى أن توجد، فإن الإشارة الموثوقة هي العقد:
npm run openapi:checkفي مهمة مجدولة — فهي تخرج برمز غير صفري لحظة اختلاف المستند المنشور عن النسخة التي ضمّنتها. راجع OpenAPI للرابطين.