توثيق API

كل ما تقدمه اللوحة متاح عبر واجهتين برمجيتين (API) منفصلتين. تعمل الاثنتان بالحساب نفسه والرصيد نفسه وقائمة الخدمات نفسها، والفرق بينهما في الصيغة والإمكانات.

كل ما تقدمه اللوحة متاح عبر واجهتين برمجيتين (API) منفصلتين. تعمل الاثنتان بالحساب نفسه والرصيد نفسه وقائمة الخدمات نفسها، والفرق بينهما في الصيغة والإمكانات.

لماذا واجهتان برمجيتان؟

يعتمد القطاع كله على API الموزّعين الكلاسيكي (v2): تُرسل إليه البيانات كنموذج (form) عبر نقطة اتصال واحدة، ويرد دائمًا برمز HTTP 200. وهذه بالضبط الصيغة التي تتوقعها برامج اللوحات الجاهزة، لذلك يبقى كما هو. أما المطورون الذين يبنون أنظمتهم الخاصة فكانوا يصطدمون بحدوده مرة بعد مرة: لا يمكن التمييز بين الأخطاء، وقائمة الخدمات تصل كتلة واحدة، ومعرفة حالة الطلب تتطلب استعلامًا متكررًا بلا نهاية. من أجلهم كُتب v3.

لن نوقف API القديم. لا يوجد موعد لإنهاء دعمه، ولن تحتاج أبدًا إلى تغيير تكامل يعمل لديك.

مقارنة

الميزةالقديم (v2)الجديد (v3)
البنيةنقطة اتصال واحدة، وإرسال نموذج، والمُعامل actionREST قائم على الموارد، وجسم طلب بصيغة JSON
رمز حالة HTTPدائمًا 200، حتى عند الفشلرموز حقيقية (400، 401، 402، 404، 409، 429، 502)
الأخطاءنص حرtype + code ثابت + رسالة مترجمة + param + doc_url
حالة الطلبنص مترجم فقطقيمة آلية ثابتة مع تسمية عرض منفصلة
وصف الخدمةلا يوجدوصف بـ 16 لغة، ومتوسط الوقت، والمنصة، والفئة
حقول الطلبتُستنتج من اسم النوعكل خدمة تنشر مخطط حقولها الخاص
وحدة التسعيرغير مذكورة (مصدر لخطأ بمقدار 1000 ضعف في الباقات)صريحة: per_1000 أو per_order
قائمة الخدماتكل الخدمات في استجابة واحدةعوامل تصفية مع ترقيم صفحات بالمؤشر (cursor)
الحماية من التكرارلا توجدIdempotency-Key
تحديثات الحالةاستعلام متواصلWebhooks موقّعة أو تدفق أحداث
المخططلا يوجدOpenAPI 3.1
اللغاتالإنجليزية والتركية (بعنواني URL منفصلين)16 لغة (عبر ترويسة أو مُعامل)
جودة الخدمةلا توجددرجة ومستوى ثقة وأدلة لكل خدمة، مع قائمة مختصرة مرتبة

أيهما أستخدم؟

الإصدار القديم (v2)

اختر API القديم إذا كنت تستخدم برنامج لوحة جاهزًا أو بوتًا أو لوحة موزّعين. أغلب هذه البرامج لا تطلب منك سوى تغيير عنوان API والمفتاح، ثم تبدأ العمل خلال دقائق.

API الجديد (v3)

اختر v3 إذا كنت تكتب تطبيقك الخاص أو متجرك أو أدوات الأتمتة لديك. معالجة الأخطاء والحماية من التكرار والإشعارات مدمجة فيه، ويمكنك توليد نموذج الطلب مباشرة من مخطط الخدمة.

خطوات البدء

  1. 1أنشئ مفتاح API من تبويب «المفاتيح».
  2. 2اجلب قائمة الخدمات، واقرأ المعرف (id) ومخطط الحقول للخدمة التي تحتاجها.
  3. 3تحقق من الطلب أولًا عبر preview، ثم أنشئه.
  4. 4سجّل Webhook أو اقرأ تدفق الأحداث لتتبع تغيرات الحالة.

الأخطاء (48)

الرمزالحالةالوصف
missing_api_key401لم يتضمن الطلب مفتاح API. أرسله بالصيغة «Authorization: Bearer <key>».
invalid_api_key401مفتاح API الذي أرسلته غير صالح.
revoked_api_key401تم إبطال مفتاح API هذا، ولم يعد صالحًا للاستخدام.
account_banned403هذا الحساب محظور.
account_suspended403هذا الحساب معلق.
insufficient_scope403لا يملك مفتاح API هذا صلاحية الوصول إلى نقطة الاتصال هذه.
invalid_json400جسم الطلب ليس بصيغة JSON صالحة.
unsupported_content_type415قيمة Content-Type غير مدعومة. استخدم application/json أو application/x-www-form-urlencoded.
method_not_allowed405طريقة HTTP هذه غير مسموح بها في نقطة الاتصال هذه.
payload_too_large413جسم الطلب كبير جدًا.
missing_parameter400أحد المُعاملات الإلزامية مفقود.
invalid_parameter400أحد المُعاملات يحمل قيمة غير صالحة.
invalid_quantity400الكمية ليست عددًا صحيحًا موجبًا.
quantity_out_of_range400الكمية خارج النطاق المسموح به لهذه الخدمة.
invalid_comments400حقل التعليقات فارغ أو يتجاوز عدد الأسطر المسموح به.
invalid_username400اسم المستخدم غير صالح لهذه الخدمة.
invalid_subscription400مُعاملات الاشتراك غير صالحة.
invalid_runs400قيمة «runs» غير صالحة للتنقيط (drip-feed).
invalid_interval400قيمة «interval» غير صالحة للتنقيط (drip-feed).
dripfeed_not_supported400هذه الخدمة لا تدعم التنقيط (drip-feed).
missing_required_field400أحد الحقول الإلزامية لهذا النوع من الخدمات مفقود أو غير صالح.
service_inactive400هذه الخدمة غير متاحة للطلب حاليًا.
invalid_cursor400مؤشر ترقيم الصفحات غير صالح.
invalid_limit400قيمة المُعامل «limit» خارج النطاق المسموح به.
invalid_webhook_url400يجب أن يكون عنوان Webhook عنوانًا عامًا يبدأ بـ https://.
invalid_events400نوع واحد أو أكثر من أنواع الأحداث المطلوبة غير معروف.
batch_too_large400عدد العناصر في الطلب الجماعي الواحد أكبر من المسموح به.
cancel_not_supported400هذه الخدمة لا تدعم الإلغاء.
refill_not_supported400هذه الخدمة لا توفر التعويض.
unknown_endpoint404نقطة اتصال غير معروفة. راجع مرجع API لمعرفة المسارات المتاحة.
service_not_found404لا توجد خدمة بهذا المعرف.
order_not_found404لا يوجد طلب بهذا المعرف في حسابك.
refill_not_found404لا يوجد طلب تعويض بهذا المعرف في حسابك.
webhook_not_found404لا توجد نقطة اتصال Webhook بهذا المعرف في حسابك.
order_not_cancelable409لم يعد إلغاء هذا الطلب ممكنًا بسبب حالته الحالية.
cancel_rejected409رفض المزوّد طلب الإلغاء.
order_not_completed409لا يمكن طلب التعويض إلا لطلب مكتمل.
idempotency_key_reuse409استُخدم مفتاح Idempotency-Key هذا من قبل مع جسم طلب مختلف.
idempotency_in_progress409ما زال طلب بمفتاح Idempotency-Key هذا قيد المعالجة. أعد المحاولة بعد قليل.
webhook_limit_reached409وصلت إلى الحد الأقصى لعدد نقاط اتصال Webhook.
insufficient_balance402رصيدك غير كافٍ لهذا الطلب.
rate_limit_exceeded429تجاوزت حد الطلبات. راجع ترويسة Retry-After في الاستجابة.
provider_error502أعاد المزوّد خطأ. أعد المحاولة.
refill_failed502رفض المزوّد طلب التعويض.
service_temporarily_unavailable503هذه الخدمة غير متاحة مؤقتًا. أعد المحاولة لاحقًا.
internal_error500حدث خطأ غير متوقع من جانبنا.