انتقل إلى المحتوى الرئيسي
D1 Arena

D1 Arena

Loading...

D1 Arena

واجهة برمجة تطبيقات المطور

المجتمع

واجهة برمجة تطبيقات المطور

أنشئ برامج الروبوت والتراكبات وأدوات البث وعمليات التكامل مع بيانات D1Arena.

المصادقة

تتطلب جميع طلبات واجهة برمجة التطبيقات (API) مفتاح واجهة برمجة التطبيقات (API) الذي تم تمريره في الرأس X-API-Key / Authorization: Bearer.

# Example request curl -H "X-API-Key: d1_your_api_key_here" \ https://d1arena.com/api/v1/streams

لإنشاء مفتاح API، انتقل إلىإعدادات المطور في لوحة التحكم الخاصة بك. يمكنك الحصول على ما يصل إلى 5 مفاتيح.

طلبات واجهة برمجة التطبيقات (API) محدودة بمعدل كل مفتاح واجهة برمجة التطبيقات (API). عندما تتجاوز الحد الأقصى، تعود الطلبات 429 Too Many Requests مع رأس Retry-After.

عنوان URL الأساسي

https://d1arena.com/api/v1

جميع نقاط النهاية ترجع JSON. تتضمن نقاط النهاية المقسمة إلى صفحات كائن meta مع current_page وlast_page وtotal.

تيارات

GET /streams
قائمة البث المباشر حاليا. يدعم تصفية الصفحات والفئة.
المعلمةالنوعالوصف
category_idintegerالتصفية حسب معرف اللعبة/الفئة
limitintegerالنتائج لكل صفحة (الافتراضي: 20)
pageintegerرقم الصفحة
الاستجابة
{ "data": [ { "id": 42, "name": "ProGamer99", "user_slug": "progamer99", "profile_img": "profile/abc123.jpg", "stream_title": "Ranked Grind - Road to Champion", "stream_category_id": 5, "is_vertical_stream": false, "platform_tier": "pro" } ], "meta": { "current_page": 1, "last_page": 1, "total": 3 } }
GET /streams/{slug}
احصل على الحالة المباشرة لمقدم بث واحد وتفاصيل البث حسب اسم المستخدم أو سبيكة البث.
الاستجابة
{ "data": { "user_id": 42, "name": "ProGamer99", "slug": "progamer99", "is_live": true, "stream_title": "Ranked Grind", "category_id": 5, "is_vertical": false, "platform_tier": "pro", "profile_img": "profile/abc123.jpg" } }

الفئات

GET /categories
قائمة بجميع فئات اللعبة. يدعم البحث وترقيم الصفحات.
المعلمةالنوعالوصف
searchstringتصفية الفئات حسب الاسم
limitintegerالنتائج لكل صفحة (الافتراضي: 50)
الاستجابة
{ "data": [ { "id": 5, "name": "Call of Duty", "slug": "call-of-duty", "image": "categories/cod.png" } ], "meta": { "total": 24 } }

المستخدمين

GET /users/{slug}
احصل على الملف الشخصي العام للاعب والإحصائيات التنافسية عن طريق اسم المستخدم أو سبيكة.
الاستجابة
{ "data": { "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99", "profile_img": "profile/abc.jpg", "bio": "Competitive FPS player", "platform_tier": "pro", "is_live": "1", "stream_title": "Ranked", "gold": 3, "silver": 1, "bronze": 0 }, "stats": { "elo_rating": 1842, "total_tournaments": 27, "win_rate": 64.5, "total_earnings": 1250.00 } } }

مقاطع

GET /clips
قائمة المقاطع العامة. يدعم التصفية حسب غاسل والفئة.
المعلمةالنوعالوصف
streamer_idintegerتصفية المقاطع حسب معرف المستخدم الخاص باللاعب
category_idintegerالتصفية حسب معرف اللعبة/الفئة
limitintegerالنتائج لكل صفحة (الافتراضي: 20)
الاستجابة
{ "data": [ { "id": 99, "streamer_id": 42, "stream_category_id": 5, "title": "Insane 1v4 clutch", "slug": "insane-1v4-clutch-abc", "duration": 28, "view_count": 412, "is_auto_clip": false, "created_at": "2026-03-15T18:30:00.000000Z", "streamer": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 156 } }
GET /clips/{slug}
احصل على تفاصيل مقطع واحد عن طريق سبيكة.
الاستجابة
{ "data": { "id": 99, "title": "Insane 1v4 clutch", "slug": "insane-1v4-clutch-abc", "description": "Final round comeback", "duration": 28, "view_count": 412, "streamer": { "id": 42, "name": "ProGamer99" }, "creator": { "id": 55, "name": "ClipMaster" }, "stream_category": { "id": 5, "name": "Call of Duty" } } }

البطولات

GET /tournaments
قائمة البطولات. يدعم التصفية حسب الحالة والدوري.
المعلمةالنوعالوصف
statusstringالتصفية حسب الحالة (على سبيل المثالopen، in_progress، completed)
league_idintegerتصفية حسب معرف الدوري
limitintegerالنتائج لكل صفحة (الافتراضي: 20)
الاستجابة
{ "data": [ { "id": 15, "title": "Friday Night Frenzy", "tournament_type": "single_elimination", "status": "open", "registration_fee": "5.00", "no_player": 32, "team": 0, "category": { "id": 5, "name": "Call of Duty" }, "start_date": "2026-03-28T20:00:00.000000Z" } ], "meta": { "current_page": 1, "last_page": 2, "total": 24 } }
GET /tournaments/{id}
الحصول على تفاصيل البطولة وعدد المشاركين.
الاستجابة
{ "data": { "id": 15, "title": "Friday Night Frenzy", "tournament_type": "single_elimination", "status": "open", "registration_fee": "5.00", "no_player": 32, "team": 0 }, "meta": { "participant_count": 18 } }

تصنيفات إيلو

GET /elo/leaderboard
احصل على لوحة المتصدرين المصنفة ELO. يمكنك التصفية اختياريًا حسب فئة اللعبة.
المعلمةالنوعالوصف
category_idintegerالتصفية حسب معرف اللعبة/الفئة
limitintegerعدد النتائج (الافتراضي: 50)
الاستجابة
{ "data": [ { "rank": 1, "user_id": 42, "name": "ProGamer99", "user_slug": "progamer99", "elo_rating": 2150, "wins": 45, "losses": 12, "win_rate": 78.9, "profile_img": "profile/abc123.jpg" } ], "meta": { "total": 312 } }

الدوريات

GET /leagues
قائمة الدوريات مع مرشحات الحالة والفئة الاختيارية.
المعلمةالنوعالوصف
statusstringتصفية حسب حالة الدوري
category_idintegerالتصفية حسب معرف اللعبة/الفئة
limitintegerالنتائج لكل صفحة (الافتراضي: 20)
الاستجابة
{ "data": [ { "id": 3, "name": "Spring 2026 Pro League", "status": "active", "category": { "id": 5, "name": "Call of Duty" }, "total_participants": 48, "start_date": "2026-03-01", "end_date": "2026-05-31" } ], "meta": { "current_page": 1, "last_page": 1, "total": 6 } }
GET /leagues/{id}/standings
الحصول على ترتيب الدوري (تصنيف اللاعبين بالنقاط).
الاستجابة
{ "data": [ { "id": 1, "points": 2400, "wins": 12, "losses": 3, "user": { "id": 42, "name": "ProGamer99", "user_slug": "progamer99" } } ], "meta": { "total": 48 } }

ردود الأخطاء

تُرجع جميع الأخطاء مظروف JSON متسقًا. يحتوي الكائن error دائمًا على رمز code يمكن قراءته آليًا وmessage يمكن قراءته بواسطة الإنسان.

تنسيق الاستجابة للخطأ
{ "success": false, "error": { "code": "not_found", "message": "The requested resource could not be found." } }
تنسيق خطأ التحقق من الصحة (422)
{ "success": false, "error": { "code": "validation_error", "message": "The given data was invalid.", "errors": { "category_id": ["The category id must be an integer."], "limit": ["The limit must not be greater than 100."] } } }

رموز الحالة

200
حسنًا — نجح الطلب. يحتوي الرد على البيانات المطلوبة.
400
طلب سيء — الطلب غير صحيح أو يفتقد المعلمات المطلوبة. تحقق من error.message للحصول على التفاصيل.
401
غير مصرّح — Missing or invalid API key. Ensure you're passing a valid key in the X-API-Key header.
403
محظور — تم تعطيل مفتاح API الخاص بك أو أنه يفتقر إلى إذن لهذا المورد. تحقق الخاص بك إعدادات المطور.
404
غير متوفر — المورد المطلوب غير موجود. تحقق من الارتفاع الثابت أو المعرف أو مسار نقطة النهاية.
422
خطأ في التحقق — فشل التحقق من صحة معلمات الطلب. يقوم الكائن error.errors بتعيين أسماء الحقول لمشاكلها المحددة.
429
معدل محدود — طلبات كثيرة جدًا. يشير رأس Retry-After إلى عدد الثواني التي يجب انتظارها قبل إعادة المحاولة.
500
خطأ في الإستضافة — حدث خطأ غير متوقع من جانبنا. إذا استمر هذا، اتصل بالدعم.

مرجع رموز الخطأ

الرمزحالة HTTPالوصف
invalid_api_key401مفتاح API مفقود أو مشوه أو غير موجود
api_key_disabled403تم إبطال مفتاح API أو تعطيله
not_found404لا يمكن العثور على المورد المطلوب
validation_error422معلمة طلب واحدة أو أكثر غير صالحة
rate_limited429تم تجاوز حد معدل الطلب لمفتاح واجهة برمجة التطبيقات هذا
server_error500خطأ داخلي في الخادم — يرجى إعادة المحاولة أو الاتصال بالدعم

حدود المعدل

طلبات واجهة برمجة التطبيقات (API) محدودة بمعدل كل مفتاح واجهة برمجة التطبيقات (API). عندما تتجاوز الحد الأقصى، تعود الطلبات 429 Too Many Requests مع رأس Retry-After.

الحدود حسب الطبقة

الطبقةالطلبات / الدقيقة (إفتراضي)ماكس كيز
بداية (مجاني)605
احترافي605
في نهاية المطاف605
شريك605

رؤوس حدود المعدل

طلبات واجهة برمجة التطبيقات (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 بهذه البنية:

{ "id": "evt_a1b2c3d4e5f6", "event": "stream.online", "created_at": "2026-03-23T14:30:00Z", "data": { // Event-specific fields (see examples below) } }

الرؤوس

تتضمن كل عملية تسليم الرؤوس التالية للتوجيه والتحقق:

رأسالوصف
Content-Typeapplication/json
X-D1Arena-Eventنوع الحدث (على سبيل المثال stream.online)
X-D1Arena-Signatureملخص HMAC-SHA256 السداسي لنص الطلب الأولي
X-D1Arena-Signature-Versionتنسيق مفتاح التوقيع: v2 للاشتراكات الحالية أو v1-hashed-secret للاشتراكات القديمة
X-D1Arena-Delivery-IdUUID للتسليم الفريد — يستخدم لإلغاء البيانات المكررة
X-D1Arena-Timestampالطابع الزمني لنظام Unix للوقت الذي تم فيه إرسال الحدث

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

تحقق دائمًا من رأس X-D1Arena-Signature قبل معالجة خطاف الويب. يتم حساب التوقيع كـ HMAC-SHA256(raw_body, webhook_secret).

بالنسبة لعمليات تسليم v2، استخدم السر whsec_ الذي ظهر عند إنشاء الاشتراك. بالنسبة لتسليم v1-hashed-secret للترقية المسبقة، قم أولاً بحساب SHA256(whsec_secret) من هذا السر الأصلي واستخدم الملخص السداسي الصغير الناتج كمفتاح HMAC. أعد إنشاء الاشتراك عندما يكون ذلك عمليًا للانتقال إلى v2.

PHP
// Get the raw body and signature header $payload = file_get_contents('php://input'); $signature = $_SERVER['HTTP_X_D1ARENA_SIGNATURE'] ?? ''; // Compute expected signature $expected = hash_hmac('sha256', $payload, $webhookSecret); // Constant-time comparison to prevent timing attacks if (!hash_equals($expected, $signature)) { http_response_code(401); exit('Invalid signature'); } $event = json_decode($payload, true);
Node.js
const crypto = require('crypto'); app.post('/webhook', (req, res) => { const payload = req.rawBody; // Ensure raw body is available const signature = req.headers['x-d1arena-signature']; const expected = crypto .createHmac('sha256', WEBHOOK_SECRET) .update(payload) .digest('hex'); if (!crypto.timingSafeEqual( Buffer.from(expected), Buffer.from(signature) )) { return res.status(401).send('Invalid signature'); } const event = JSON.parse(payload); // Process event... res.status(200).send('OK'); });
بايثون
import hmac, hashlib, json def handle_webhook(request): payload = request.body signature = request.headers.get('X-D1Arena-Signature', '') expected = hmac.new( WEBHOOK_SECRET.encode(), payload, hashlib.sha256 ).hexdigest() if not hmac.compare_digest(expected, signature): return HttpResponse(status=401) event = json.loads(payload) # Process event... return HttpResponse(status=200)

الأحداث المتاحة

حدثالوصف
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.endedD1 Frenzy اكتمل أو انتهت صلاحيته

أمثلة على حمولة الحدث

stream.online

{ "id": "evt_a1b2c3d4e5f6", "event": "stream.online", "created_at": "2026-03-23T14:30:00Z", "data": { "user_id": 42, "user_slug": "progamer99", "name": "ProGamer99", "stream_title": "Ranked Grind - Road to Champion", "category_id": 5, "category_name": "Call of Duty", "protocol": "RTMP", "started_at": "2026-03-23T14:30:00Z" } }

stream.offline

{ "id": "evt_f6e5d4c3b2a1", "event": "stream.offline", "created_at": "2026-03-23T17:45:00Z", "data": { "user_id": 42, "user_slug": "progamer99", "duration_seconds": 11700, "vod_id": 281 } }

channel.follow

{ "id": "evt_c1d2e3f4a5b6", "event": "channel.follow", "created_at": "2026-03-23T15:10:00Z", "data": { "follower_id": 88, "follower_slug": "newplayer", "followed_id": 42, "followed_slug": "progamer99" } }

channel.tip

{ "id": "evt_d1e2f3a4b5c6", "event": "channel.tip", "created_at": "2026-03-23T16:20:00Z", "data": { "streamer_id": 42, "streamer_slug": "progamer99", "tipper_id": 55, "tipper_slug": "clipmaster", "amount": "5.00", "currency": "USD", "message": "Great stream!" } }

tournament.match.completed

{ "id": "evt_e1f2a3b4c5d6", "event": "tournament.match.completed", "created_at": "2026-03-23T21:15:00Z", "data": { "tournament_id": 15, "tournament_title": "Friday Night Frenzy", "match_id": 204, "round": 2, "winner": { "id": 42, "slug": "progamer99", "name": "ProGamer99" }, "loser": { "id": 77, "slug": "rival_x", "name": "Rival_X" }, "score": "3-1" } }

clip.created

{ "id": "evt_b1c2d3e4f5a6", "event": "clip.created", "created_at": "2026-03-23T15:45:00Z", "data": { "clip_id": 99, "slug": "insane-1v4-clutch-abc", "title": "Insane 1v4 clutch", "duration": 28, "streamer_id": 42, "streamer_slug": "progamer99", "creator_id": 55, "creator_slug": "clipmaster", "category_id": 5 } }

سياسة التسليم وإعادة المحاولة

محاولةتأخيرملاحظات
الأول (الأولي)فوريتم إرساله خلال ثوانٍ من الحدث
الثاني (إعادة المحاولة)30 ثانيةإذا فشلت المحاولة الأولى أو انتهت مهلتها
الثالث (إعادة المحاولة)2 دقيقةالتراجع الأسي
الرابع (النهائي)10 دقائقالمحاولة الأخيرة قبل وضع علامة الفاشلة
Important: Your endpoint must respond with a 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} إذا لم يكن هناك شيء.

{ "active": true, "level": 2, "progress": 150, "target": 250, "progress_pct": 60.0, "total_contributions": 8, "total_contributors": 5, "expires_at": "2026-03-22T15:30:00+00:00" }

أهداف المستوى

المستوىالنقاط
1100
2250
3500
41,000
52,000

د1 جنون — النقاط: نصيحة $1 → 100; الاشتراك 500 × الطبقة. المدة: 5 دقائق; فترة التهدئة: 30 دقائق.

ملحق SDK

أنشئ لوحة مخصصة وإضافات تراكبية يمكن للقائمين بالبث تثبيتها على صفحات قنواتهم. يتم تشغيل الإضافات في إطارات iframe في وضع الحماية وتتواصل مع الصفحة المضيفة عبر postMessage.

البدء

  1. قم بإنشاء مفتاح API في إعدادات المطور.
  2. أنشئ امتدادك كصفحة HTML مستقلة مستضافة على نطاقك (يتطلب HTTPS).
  3. أرسله للمراجعة في قسم ملحقاتي.
  4. بمجرد الموافقة عليه، يمكن للقائمين بالبث المباشر تثبيته من Extension Marketplace.

أنواع الامتدادات

النوعموقعالسلوك
panelأسفل مشغل الدفقتكون مرئية عندما يكون البث مباشرًا. بطاقة كاملة العرض، الارتفاع الافتراضي 300 بكسل.
overlayعبر مشغل الفيديومرئية عندما تعيش. يتم التحكم في الموضع/الحجم بواسطة جهاز البث عبر أداة تحديد موضع التراكب.

واجهة برمجة تطبيقات ما بعد الرسالة

يتلقى ملحقك بيانات السياق تلقائيًا عند تحميله. تنفيذ هذه الأحداث:

استخدم الأصل الأصلي D1Arena لكل رسالة. يقوم SDK الرسمي باشتقاق هذا الأصل والتحقق من صحته من صفحة التضمين تلقائيًا.

نظرًا لأن إطارات iframe الملحقة تستخدم عمدًا أصل وضع الحماية غير الشفاف، فإن المضيف D1Arena يقوم بتصديق نافذة iframe المسجلة بالضبط. يجب أن يظل رمز الامتداد يصادق على النافذة الأصلية وأصل D1Arena الدقيق قبل قبول السياق.

1. جاهزية الإشارة

var d1ParentOrigin = 'https://d1arena.com'; // Tell the host page your extension is ready for context window.parent.postMessage({ type: 'D1_EXT_READY' }, d1ParentOrigin);

2. تلقي السياق

window.addEventListener('message', function(e) { if (e.source === window.parent && e.origin === d1ParentOrigin && e.data && e.data.type === 'D1_CONTEXT') { var ctx = e.data.payload; // ctx.channelId - Streamer's user ID // ctx.channelName - Streamer's display name // ctx.channelSlug - Streamer's URL slug // ctx.viewerId - Current viewer's ID (null if not logged in) // ctx.isLive - Whether the stream is currently live } });

3. إرسال الإجراءات (اختياري)

// Redirect the host page (e.g. for a "Storm" button) window.parent.postMessage({ type: 'D1_EXT_ACTION', action: 'storm', target: 'username-slug' }, d1ParentOrigin);

نطاقات الأذونات

أعلن عن البيانات التي يحتاجها ملحقك. يتحقق المراجعون من تطابق الكود الخاص بك مع أذوناتك المعلنة.

النطاقمنح الوصول إلى
read:streamحالة الدفق، العنوان، الفئة
read:viewersعدد المشاهدين والقائمة
read:chatرسائل الدردشة (عبر قناة Pusher)
read:clipsمقاطع القناة عبر /api/clips/{slug}
read:tournamentsمعلومات المطابقة النشطة عبر /api/active-match/{id}
read:channelملف تعريف القناة، المتابعين، الجدول الزمني

متطلبات الأمن

تعمل الامتدادات في إطار iframe في وضع الحماية مع sandbox="allow-scripts". يصل ملحقك لا أستطيع إلى ملفات تعريف الارتباط أو التخزين المحلي أو يقدم طلبات مصادق عليها إلى d1arena.com.
  • عام HTTPS مطلوب — يجب أن يستخدم عنوان URL لإطار iframe TLS وأن يتوافق مع عناوين الشبكة العامة فقط.
  • مصدر يمكن قراءته من قبل الإنسان — لا يوجد جافا سكريبت غامض أو مصغر فقط. يجب أن يكون المراجعون قادرين على قراءة التعليمات البرمجية الخاصة بك.
  • لا يوجد تحميل البرنامج النصي الخارجي ما لم يتم التصريح بذلك في طلبك. مكتبات CDN (jQuery، Chart.js، وما إلى ذلك) جيدة.
  • لا يوجد استخراج البيانات — يجب ألا ترسل الإضافات بيانات المشاهد إلى تحليلات أو خدمات تتبع تابعة لجهات خارجية.
  • سياسة المحتوى — لا توجد إعلانات أو محتوى NSFW أو تعدين العملات المشفرة أو أي سلوك ضار.

عملية المراجعة

الحالةمعنى
pendingتم الإرسال، في انتظار مراجعة المشرف (عادةً من 1 إلى 3 أيام عمل).
approvedتمت الموافقة عليه وإظهاره في سوق الامتدادات.
rejectedرفض مع السبب. إصلاح المشاكل وإعادة الإرسال.
suspendedتمت إزالته مؤقتًا بسبب انتهاك السياسة. اتصل بالدعم.

تحديثات الإصدار

لتحديث ملحق تمت الموافقة عليه، احذف الإصدار الحالي وأرسل إصدارًا جديدًا برقم إصدار متزايد. الإصدار الجديد يخضع للمراجعة مرة أخرى.

سجل التغيير

تتبع تغييرات واجهة برمجة التطبيقات والميزات الجديدة. نحن نتبع الإصدارات الدلالية ونعلن عن التغييرات العاجلة قبل 30 يومًا على الأقل.

v1.0مارس 2026
  • إصدار أولي لواجهة برمجة التطبيقات (API) العامة مع مصادقة مفتاح واجهة برمجة التطبيقات (API).
  • مجموعات البث: أدرج مجموعات البث المباشر واحصل على تفاصيل القائم بالبث حسب المجموعة الثابتة.
  • الفئات: ابحث عن جميع فئات الألعاب وأدرجها.
  • المستخدمون: الملفات الشخصية العامة بإحصائيات تنافسية، وتقييم ELO، وعدد الميداليات.
  • المقاطع: تصفح واحصل على تفاصيل المقاطع باستخدام معلومات القائم بالبث/المنشئ.
  • البطولات: قائمة، قم بالتصفية حسب الحالة/الدوري، واحصل على عدد المشاركين.
  • لوحة صدارة ELO: لوحات صدارة عالمية ولكل فئة.
  • البطولات: قم بإدراج الدوريات مع الترتيب وتفاصيل النقاط.
  • D1 Frenzy: حالة الهيجان في الوقت الفعلي لأي مقدم بث.
  • الخطافات عبر الويب (EventSub): 12 نوعًا من الأحداث، بما في ذلك أحداث البث والقناة والبطولات والمقطع وأحداث Frenzy.
  • حدود المعدل

هل تحتاج إلى مساعدة؟

أسئلة حول API؟ اتصل بنا.