أنشئ برامج الروبوت والتراكبات وأدوات البث وعمليات التكامل مع بيانات D1Arena.
المصادقة
تتطلب جميع طلبات واجهة برمجة التطبيقات (API) مفتاح واجهة برمجة التطبيقات (API) الذي تم تمريره في الرأس X-API-Key / Authorization: Bearer.
لإنشاء مفتاح API، انتقل إلىإعدادات المطور في لوحة التحكم الخاصة بك. يمكنك الحصول على ما يصل إلى 5 مفاتيح.
429 Too Many Requests مع رأس Retry-After.
عنوان URL الأساسي
جميع نقاط النهاية ترجع JSON. تتضمن نقاط النهاية المقسمة إلى صفحات كائن meta مع current_page وlast_page وtotal.
تيارات
| المعلمة | النوع | الوصف |
|---|---|---|
category_id | integer | التصفية حسب معرف اللعبة/الفئة |
limit | integer | النتائج لكل صفحة (الافتراضي: 20) |
page | integer | رقم الصفحة |
الفئات
| المعلمة | النوع | الوصف |
|---|---|---|
search | string | تصفية الفئات حسب الاسم |
limit | integer | النتائج لكل صفحة (الافتراضي: 50) |
المستخدمين
مقاطع
| المعلمة | النوع | الوصف |
|---|---|---|
streamer_id | integer | تصفية المقاطع حسب معرف المستخدم الخاص باللاعب |
category_id | integer | التصفية حسب معرف اللعبة/الفئة |
limit | integer | النتائج لكل صفحة (الافتراضي: 20) |
البطولات
| المعلمة | النوع | الوصف |
|---|---|---|
status | string | التصفية حسب الحالة (على سبيل المثالopen، in_progress، completed) |
league_id | integer | تصفية حسب معرف الدوري |
limit | integer | النتائج لكل صفحة (الافتراضي: 20) |
تصنيفات إيلو
| المعلمة | النوع | الوصف |
|---|---|---|
category_id | integer | التصفية حسب معرف اللعبة/الفئة |
limit | integer | عدد النتائج (الافتراضي: 50) |
الدوريات
| المعلمة | النوع | الوصف |
|---|---|---|
status | string | تصفية حسب حالة الدوري |
category_id | integer | التصفية حسب معرف اللعبة/الفئة |
limit | integer | النتائج لكل صفحة (الافتراضي: 20) |
ردود الأخطاء
تُرجع جميع الأخطاء مظروف JSON متسقًا. يحتوي الكائن error دائمًا على رمز code يمكن قراءته آليًا وmessage يمكن قراءته بواسطة الإنسان.
رموز الحالة
مرجع رموز الخطأ
| الرمز | حالة HTTP | الوصف |
|---|---|---|
invalid_api_key | 401 | مفتاح API مفقود أو مشوه أو غير موجود |
api_key_disabled | 403 | تم إبطال مفتاح API أو تعطيله |
not_found | 404 | لا يمكن العثور على المورد المطلوب |
validation_error | 422 | معلمة طلب واحدة أو أكثر غير صالحة |
rate_limited | 429 | تم تجاوز حد معدل الطلب لمفتاح واجهة برمجة التطبيقات هذا |
server_error | 500 | خطأ داخلي في الخادم — يرجى إعادة المحاولة أو الاتصال بالدعم |
حدود المعدل
طلبات واجهة برمجة التطبيقات (API) محدودة بمعدل كل مفتاح واجهة برمجة التطبيقات (API). عندما تتجاوز الحد الأقصى، تعود الطلبات 429 Too Many Requests مع رأس Retry-After.
الحدود حسب الطبقة
| الطبقة | الطلبات / الدقيقة (إفتراضي) | ماكس كيز |
|---|---|---|
| بداية (مجاني) | 60 | 5 |
| احترافي | 60 | 5 |
| في نهاية المطاف | 60 | 5 |
| شريك | 60 | 5 |
رؤوس حدود المعدل
طلبات واجهة برمجة التطبيقات (API) محدودة بمعدل كل مفتاح واجهة برمجة التطبيقات (API). عندما تتجاوز الحد الأقصى، تعود الطلبات 429 Too Many Requests مع رأس Retry-After.
| رأس | الوصف |
|---|---|
Retry-After | ثواني للانتظار قبل إعادة المحاولة (موجود فقط في 429 ردًا) |
أفضل الممارسات
- Cache responses locally — stream and tournament data doesn't change every second.
- اشترك في webhooks للأحداث في الوقت الفعلي بدلاً من نقاط النهاية للاقتراع.
- الطلبات المجمعة حيثما أمكن ذلك - استخدم معلمات التصفية للحصول على ما تحتاجه بالضبط في عدد أقل من المكالمات.
خطافات الويب (EventSub)
اشترك في إشعارات الدفع في الوقت الفعلي بدلاً من الاقتراع. عند وقوع حدث ما، ترسل D1Arena HTTP POST إلى عنوان URL لرد الاتصال الخاص بك مع حمولة JSON موقعة باستخدام HMAC-SHA256.
الإعداد
أنشئ اشتراكات خطاف الويب في إعدادات المطور. يتطلب كل اشتراك:
- عنوان URL لرد الاتصال — نقطة نهاية HTTPS يمكن الوصول إليها بشكل عام على الخادم الخاص بك.
- الأحداث — نوع واحد أو أكثر من أنواع الأحداث للاشتراك فيها.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
تنسيق الحمولة
يرسل كل تسليم webhook نص JSON بهذه البنية:
الرؤوس
تتضمن كل عملية تسليم الرؤوس التالية للتوجيه والتحقق:
| رأس | الوصف |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | نوع الحدث (على سبيل المثال stream.online) |
X-D1Arena-Signature | ملخص HMAC-SHA256 السداسي لنص الطلب الأولي |
X-D1Arena-Signature-Version | تنسيق مفتاح التوقيع: v2 للاشتراكات الحالية أو v1-hashed-secret للاشتراكات القديمة |
X-D1Arena-Delivery-Id | UUID للتسليم الفريد — يستخدم لإلغاء البيانات المكررة |
X-D1Arena-Timestamp | الطابع الزمني لنظام Unix للوقت الذي تم فيه إرسال الحدث |
التحقق من التوقيعات
تحقق دائمًا من رأس X-D1Arena-Signature قبل معالجة خطاف الويب. يتم حساب التوقيع كـ HMAC-SHA256(raw_body, webhook_secret).
بالنسبة لعمليات تسليم v2، استخدم السر whsec_ الذي ظهر عند إنشاء الاشتراك. بالنسبة لتسليم v1-hashed-secret للترقية المسبقة، قم أولاً بحساب SHA256(whsec_secret) من هذا السر الأصلي واستخدم الملخص السداسي الصغير الناتج كمفتاح HMAC. أعد إنشاء الاشتراك عندما يكون ذلك عمليًا للانتقال إلى v2.
الأحداث المتاحة
| حدث | الوصف |
|---|---|
| stream.online | تم بث البث المباشر |
| stream.offline | أصبح جهاز البث غير متصل بالإنترنت |
| channel.follow | قام أحد المستخدمين بمتابعة قناة |
| channel.subscribe | اشتراك داعم جديد على القناة |
| channel.tip | تم إرسال نصيحة إلى غاسل |
| tournament.started | بدأت مباراة البطولة |
| tournament.ended | لقد اختتمت البطولة |
| tournament.match.completed | وتم تسجيل نتيجة المباراة |
| clip.created | تم إنشاء مقطع جديد من البث المباشر |
| overdrive.started | بدأ D1 Frenzy على القناة |
| overdrive.level_up | تقدم D1 Frenzy إلى المستوى التالي |
| overdrive.ended | D1 Frenzy اكتمل أو انتهت صلاحيته |
أمثلة على حمولة الحدث
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
سياسة التسليم وإعادة المحاولة
| محاولة | تأخير | ملاحظات |
|---|---|---|
| الأول (الأولي) | فوري | تم إرساله خلال ثوانٍ من الحدث |
| الثاني (إعادة المحاولة) | 30 ثانية | إذا فشلت المحاولة الأولى أو انتهت مهلتها |
| الثالث (إعادة المحاولة) | 2 دقيقة | التراجع الأسي |
| الرابع (النهائي) | 10 دقائق | المحاولة الأخيرة قبل وضع علامة الفاشلة |
2xx status within 10 ثواني. Non-2xx responses or timeouts trigger a retry. After 10 إخفاقات متتالية, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in إعدادات المطور.
أفضل الممارسات
- التحقق دائمًا من التوقيعات قبل معالجة الحمولات لمنع الأحداث المخادعة.
- استخدم معرف التسليم لإلغاء البيانات المكررة — ترسل عمليات إعادة المحاولة نفس المعرف، لذا قم بتخزين المعرفات التي تمت معالجتها لتجنب المعالجة المزدوجة.
- الاستجابة بسرعة، ومعالجة بشكل غير متزامن — return
200 OKعلى الفور والتعامل مع منطق الأعمال في وظيفة الخلفية. - استخدم نقاط نهاية HTTPS فقط — يجب أن تستخدم عناوين URL للخطاف الإلكتروني بروتوكول TLS. تم رفض عمليات الاسترجاعات HTTP.
- التعامل مع الأحداث غير المعروفة بأمان — يمكن إضافة أنواع أحداث جديدة. قم بإرجاع
200للأحداث غير المعروفة بدلاً من الخطأ.
د1 جنون
يتم تشغيل D1 Frenzy من خلال النصائح والاشتراكات السريعة أثناء البث المباشر. يتقدم من خلال 5 مستويات مع زيادة الأهداف.
GET /api/overdrive/{streamerId}
احصل على D1 Frenzy النشط لمقدم البث. يُرجع {"active": false} إذا لم يكن هناك شيء.
أهداف المستوى
| المستوى | النقاط |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
د1 جنون — النقاط: نصيحة $1 → 100; الاشتراك 500 × الطبقة. المدة: 5 دقائق; فترة التهدئة: 30 دقائق.
ملحق SDK
أنشئ لوحة مخصصة وإضافات تراكبية يمكن للقائمين بالبث تثبيتها على صفحات قنواتهم. يتم تشغيل الإضافات في إطارات iframe في وضع الحماية وتتواصل مع الصفحة المضيفة عبر postMessage.
البدء
- قم بإنشاء مفتاح API في إعدادات المطور.
- أنشئ امتدادك كصفحة HTML مستقلة مستضافة على نطاقك (يتطلب HTTPS).
- أرسله للمراجعة في قسم ملحقاتي.
- بمجرد الموافقة عليه، يمكن للقائمين بالبث المباشر تثبيته من Extension Marketplace.
أنواع الامتدادات
| النوع | موقع | السلوك |
|---|---|---|
panel | أسفل مشغل الدفق | تكون مرئية عندما يكون البث مباشرًا. بطاقة كاملة العرض، الارتفاع الافتراضي 300 بكسل. |
overlay | عبر مشغل الفيديو | مرئية عندما تعيش. يتم التحكم في الموضع/الحجم بواسطة جهاز البث عبر أداة تحديد موضع التراكب. |
واجهة برمجة تطبيقات ما بعد الرسالة
يتلقى ملحقك بيانات السياق تلقائيًا عند تحميله. تنفيذ هذه الأحداث:
استخدم الأصل الأصلي D1Arena لكل رسالة. يقوم SDK الرسمي باشتقاق هذا الأصل والتحقق من صحته من صفحة التضمين تلقائيًا.
نظرًا لأن إطارات iframe الملحقة تستخدم عمدًا أصل وضع الحماية غير الشفاف، فإن المضيف D1Arena يقوم بتصديق نافذة iframe المسجلة بالضبط. يجب أن يظل رمز الامتداد يصادق على النافذة الأصلية وأصل D1Arena الدقيق قبل قبول السياق.
1. جاهزية الإشارة
2. تلقي السياق
3. إرسال الإجراءات (اختياري)
نطاقات الأذونات
أعلن عن البيانات التي يحتاجها ملحقك. يتحقق المراجعون من تطابق الكود الخاص بك مع أذوناتك المعلنة.
| النطاق | منح الوصول إلى |
|---|---|
read:stream | حالة الدفق، العنوان، الفئة |
read:viewers | عدد المشاهدين والقائمة |
read:chat | رسائل الدردشة (عبر قناة Pusher) |
read:clips | مقاطع القناة عبر /api/clips/{slug} |
read:tournaments | معلومات المطابقة النشطة عبر /api/active-match/{id} |
read:channel | ملف تعريف القناة، المتابعين، الجدول الزمني |
متطلبات الأمن
sandbox="allow-scripts". يصل ملحقك لا أستطيع إلى ملفات تعريف الارتباط أو التخزين المحلي أو يقدم طلبات مصادق عليها إلى d1arena.com.
- عام HTTPS مطلوب — يجب أن يستخدم عنوان URL لإطار iframe TLS وأن يتوافق مع عناوين الشبكة العامة فقط.
- مصدر يمكن قراءته من قبل الإنسان — لا يوجد جافا سكريبت غامض أو مصغر فقط. يجب أن يكون المراجعون قادرين على قراءة التعليمات البرمجية الخاصة بك.
- لا يوجد تحميل البرنامج النصي الخارجي ما لم يتم التصريح بذلك في طلبك. مكتبات CDN (jQuery، Chart.js، وما إلى ذلك) جيدة.
- لا يوجد استخراج البيانات — يجب ألا ترسل الإضافات بيانات المشاهد إلى تحليلات أو خدمات تتبع تابعة لجهات خارجية.
- سياسة المحتوى — لا توجد إعلانات أو محتوى NSFW أو تعدين العملات المشفرة أو أي سلوك ضار.
عملية المراجعة
| الحالة | معنى |
|---|---|
| pending | تم الإرسال، في انتظار مراجعة المشرف (عادةً من 1 إلى 3 أيام عمل). |
| approved | تمت الموافقة عليه وإظهاره في سوق الامتدادات. |
| rejected | رفض مع السبب. إصلاح المشاكل وإعادة الإرسال. |
| suspended | تمت إزالته مؤقتًا بسبب انتهاك السياسة. اتصل بالدعم. |
تحديثات الإصدار
لتحديث ملحق تمت الموافقة عليه، احذف الإصدار الحالي وأرسل إصدارًا جديدًا برقم إصدار متزايد. الإصدار الجديد يخضع للمراجعة مرة أخرى.
سجل التغيير
تتبع تغييرات واجهة برمجة التطبيقات والميزات الجديدة. نحن نتبع الإصدارات الدلالية ونعلن عن التغييرات العاجلة قبل 30 يومًا على الأقل.
- إصدار أولي لواجهة برمجة التطبيقات (API) العامة مع مصادقة مفتاح واجهة برمجة التطبيقات (API).
- مجموعات البث: أدرج مجموعات البث المباشر واحصل على تفاصيل القائم بالبث حسب المجموعة الثابتة.
- الفئات: ابحث عن جميع فئات الألعاب وأدرجها.
- المستخدمون: الملفات الشخصية العامة بإحصائيات تنافسية، وتقييم ELO، وعدد الميداليات.
- المقاطع: تصفح واحصل على تفاصيل المقاطع باستخدام معلومات القائم بالبث/المنشئ.
- البطولات: قائمة، قم بالتصفية حسب الحالة/الدوري، واحصل على عدد المشاركين.
- لوحة صدارة ELO: لوحات صدارة عالمية ولكل فئة.
- البطولات: قم بإدراج الدوريات مع الترتيب وتفاصيل النقاط.
- D1 Frenzy: حالة الهيجان في الوقت الفعلي لأي مقدم بث.
- الخطافات عبر الويب (EventSub): 12 نوعًا من الأحداث، بما في ذلك أحداث البث والقناة والبطولات والمقطع وأحداث Frenzy.
- حدود المعدل
هل تحتاج إلى مساعدة؟
أسئلة حول API؟ اتصل بنا.