D1Arena ڈیٹا کے ساتھ بوٹس، اوورلیز، اسٹریم ٹولز اور انضمام بنائیں۔
تصدیق
تمام API درخواستوں کو X-API-Key / Authorization: Bearer ہیڈر میں پاس کردہ API کلید کی ضرورت ہوتی ہے۔
API کلید بنانے کے لیے، اپنے ڈیش بورڈ میں ڈویلپر کی ترتیبات پر جائیں۔ آپ کے پاس 5 تک چابیاں ہو سکتی ہیں۔
Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرنے کی درخواستیں آتی ہیں۔
بنیادی URL
تمام اختتامی پوائنٹس JSON واپس کرتے ہیں۔ صفحہ بندی کے اختتامی نکات میں current_page، last_page، اور total کے ساتھ ایک meta آبجیکٹ شامل ہے۔
سلسلے
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
category_id | integer | گیم/زمرہ ID کے لحاظ سے فلٹر کریں۔ |
limit | integer | نتائج فی صفحہ (پہلے سے طے شدہ: 20) |
page | integer | صفحہ نمبر |
زمرہ جات
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
search | string | نام کے لحاظ سے زمرے فلٹر کریں۔ |
limit | integer | نتائج فی صفحہ (پہلے سے طے شدہ: 50) |
صارفین
کلپس
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
streamer_id | integer | اسٹریمر کے صارف ID کے ذریعہ کلپس کو فلٹر کریں۔ |
category_id | integer | گیم/زمرہ ID کے لحاظ سے فلٹر کریں۔ |
limit | integer | نتائج فی صفحہ (پہلے سے طے شدہ: 20) |
ٹورنامنٹس
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
status | string | حالت کے لحاظ سے فلٹر کریں (جیسے open، in_progress، completed) |
league_id | integer | لیگ ID کے لحاظ سے فلٹر کریں۔ |
limit | integer | نتائج فی صفحہ (پہلے سے طے شدہ: 20) |
ELO درجہ بندی
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
category_id | integer | گیم/زمرہ ID کے لحاظ سے فلٹر کریں۔ |
limit | integer | نتائج کی تعداد (پہلے سے طے شدہ: 50) |
لیگز
| پیرامیٹر | قسم | تفصیل |
|---|---|---|
status | string | لیگ کی حیثیت کے لحاظ سے فلٹر کریں۔ |
category_id | integer | گیم/زمرہ ID کے لحاظ سے فلٹر کریں۔ |
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 | اس API کلید کے لیے درخواست کی شرح کی حد سے تجاوز کر گیا ہے۔ |
server_error | 500 | اندرونی سرور کی خرابی — براہ کرم دوبارہ کوشش کریں یا سپورٹ سے رابطہ کریں۔ |
شرح کی حدیں
API کی درخواستیں فی API کلید کی شرح سے محدود ہیں۔ جب آپ حد سے تجاوز کرتے ہیں تو، Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرنے کی درخواستیں آتی ہیں۔
ٹائر کے لحاظ سے حدود
| ٹائر | درخواستیں / منٹ (طے شدہ) | میکس کیز |
|---|---|---|
| سٹارٹر (مفت) | 60 | 5 |
| پی آر او | 60 | 5 |
| الٹیمیٹ | 60 | 5 |
| ساتھی | 60 | 5 |
شرح کی حد ہیڈر
API کی درخواستیں فی API کلید کی شرح سے محدود ہیں۔ جب آپ حد سے تجاوز کرتے ہیں تو، Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرنے کی درخواستیں آتی ہیں۔
| ہیڈر | تفصیل |
|---|---|
Retry-After | دوبارہ کوشش کرنے سے پہلے انتظار کرنے کے لیے سیکنڈ (صرف 429 جوابات پر موجود) |
بہترین طرز عمل
- Cache responses locally — stream and tournament data doesn't change every second.
- پولنگ اینڈ پوائنٹس کے بجائے ریئل ٹائم ایونٹس کے لیے webhooks کو سبسکرائب کریں۔
- بیچ کی درخواستیں جہاں ممکن ہو — فلٹر پیرامیٹرز استعمال کریں تاکہ آپ کو کم کالوں میں بالکل وہی حاصل ہو سکے جس کی آپ کو ضرورت ہے۔
ویب ہکس (ایونٹ سب)
پولنگ کے بجائے ریئل ٹائم پش اطلاعات کو سبسکرائب کریں۔ جب کوئی واقعہ پیش آتا ہے، D1Arena HMAC-SHA256 کے ساتھ دستخط کردہ JSON پے لوڈ کے ساتھ آپ کے کال بیک URL پر HTTP POST بھیجتا ہے۔
سیٹ اپ
ڈویلپر کی ترتیبات میں ویب ہک سبسکرپشنز بنائیں۔ ہر رکنیت کی ضرورت ہے:
- کال بیک URL — آپ کے سرور پر عوامی طور پر قابل رسائی HTTPS اینڈ پوائنٹ۔
- واقعات — سبسکرائب کرنے کے لیے ایونٹ کی ایک یا زیادہ اقسام۔
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
پے لوڈ فارمیٹ
ہر ویب ہک کی ترسیل اس ساخت کے ساتھ 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 | ایونٹ کب بھیجا گیا اس کا یونکس ٹائم اسٹیمپ |
دستخطوں کی تصدیق کرنا
ویب ہک پر کارروائی کرنے سے پہلے ہمیشہ 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 ڈویلپر کی ترتیبات.
بہترین طرز عمل
- ہمیشہ دستخطوں کی تصدیق کریں۔ جعلی واقعات کو روکنے کے لیے پے لوڈ پر کارروائی کرنے سے پہلے۔
- ڈپلیکیشن کے لیے ڈیلیوری آئی ڈی استعمال کریں۔ — دوبارہ کوشش کریں وہی ID بھیجیں، اس لیے دوہری پروسیسنگ سے بچنے کے لیے پروسیس شدہ آئی ڈیز کو اسٹور کریں۔
- تیزی سے جواب دیں، متضاد طور پر کارروائی کریں۔ — فوری طور پر
200 OKواپس کریں اور بیک گراؤنڈ جاب میں کاروباری منطق کو ہینڈل کریں۔ - صرف HTTPS اینڈ پوائنٹس استعمال کریں۔ — webhook URLs کو TLS استعمال کرنا چاہیے۔ HTTP کال بیکس کو مسترد کر دیا گیا ہے۔
- نامعلوم واقعات کو احسن طریقے سے ہینڈل کریں۔ — ایونٹ کی نئی اقسام شامل کی جا سکتی ہیں۔ غلطی کی بجائے غیر تسلیم شدہ واقعات کے لیے
200واپس کریں۔
D1 انماد
D1 Frenzy تیز ٹپس اور سبسکرپشنز کے ذریعے متحرک ہوتا ہے جب اسٹریمر لائیو ہوتا ہے۔ یہ بڑھتے ہوئے اہداف کے ساتھ 5 سطحوں سے آگے بڑھتا ہے۔
GET /api/overdrive/{streamerId}
ایک اسٹریمر کے لیے فعال D1 Frenzy حاصل کریں۔ اگر کوئی نہیں تو {"active": false} لوٹاتا ہے۔
سطح کے اہداف
| سطح | پوائنٹس |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 انماد — پوائنٹس: ٹپ $1 → 100; رکنیت 500 × ٹائر. دورانیہ: 5 منٹس; کولڈاؤن: 30 منٹس.
ایکسٹینشن SDK
حسب ضرورت پینل اور اوورلے ایکسٹینشنز بنائیں جنہیں اسٹریمرز اپنے چینل کے صفحات پر انسٹال کر سکتے ہیں۔ ایکسٹینشنز سینڈ باکس والے iframes میں چلتی ہیں اور میزبان صفحہ سے بذریعہ postMessage رابطہ کرتی ہیں۔
شروع کرنا
- ڈویلپر کی ترتیبات میں ایک API کلید بنائیں۔
- اپنی ایکسٹینشن کو اپنے ڈومین پر ہوسٹ کردہ ایک اسٹینڈ HTML صفحہ کے طور پر بنائیں (HTTPS درکار ہے)۔
- اسے میری ایکسٹینشنز سیکشن میں جائزہ کے لیے جمع کروائیں۔
- منظوری کے بعد، اسٹریمرز اسے ایکسٹینشن مارکیٹ پلیس سے انسٹال کر سکتے ہیں۔
ایکسٹینشن کی اقسام
| قسم | مقام | رویہ |
|---|---|---|
panel | اسٹریم پلیئر کے نیچے | سلسلہ لائیو ہونے پر نظر آتا ہے۔ مکمل چوڑائی والا کارڈ، 300px ڈیفالٹ اونچائی۔ |
overlay | ویڈیو پلیئر کے اوپر | لائیو ہونے پر نظر آتا ہے۔ اوورلے پوزیشننگ ٹول کے ذریعے اسٹریمر کے ذریعے پوزیشن/سائز کو کنٹرول کیا جاتا ہے۔ |
postMessage API
آپ کی ایکسٹینشن لوڈ ہونے پر سیاق و سباق کا ڈیٹا خود بخود وصول کرتی ہے۔ ان واقعات کو نافذ کریں:
ہر پیغام کے لیے عین مطابق D1Arena والدین کی اصل کا استعمال کریں۔ آفیشل SDK اس اصلیت کو سرایت کرنے والے صفحہ سے خود بخود اخذ کرتا ہے اور اس کی تصدیق کرتا ہے۔
چونکہ ایکسٹینشن iframes جان بوجھ کر ایک مبہم سینڈ باکس کی اصلیت کا استعمال کرتے ہیں، D1Arena میزبان عین رجسٹرڈ iframe ونڈو کی تصدیق کرتا ہے۔ ایکسٹینشن کوڈ کو اب بھی سیاق و سباق کو قبول کرنے سے پہلے پیرنٹ ونڈو اور عین مطابق D1Arena اصل کی تصدیق کرنی ہوگی۔
1. سگنل کی تیاری
2. سیاق و سباق وصول کریں۔
3. کارروائیاں بھیجیں (اختیاری)
اجازت کے دائرہ کار
اعلان کریں کہ آپ کی توسیع کو کس ڈیٹا کی ضرورت ہے۔ جائزہ لینے والے تصدیق کرتے ہیں کہ آپ کا کوڈ آپ کی اعلان کردہ اجازتوں سے مماثل ہے۔
| دائرہ کار | تک رسائی فراہم کرتا ہے۔ |
|---|---|
read:stream | سلسلہ کی حیثیت، عنوان، زمرہ |
read:viewers | ناظرین کی تعداد اور فہرست |
read:chat | چیٹ پیغامات (بذریعہ پشر چینل) |
read:clips | چینل کلپس بذریعہ /api/clips/{slug} |
read:tournaments | فعال مماثلت کی معلومات بذریعہ /api/active-match/{id} |
read:channel | چینل پروفائل، پیروکار، شیڈول |
سیکورٹی کے تقاضے
sandbox="allow-scripts" میں چلتی ہیں۔ آپ کی ایکسٹینشن نہیں کر سکتے کوکیز، لوکل اسٹوریج تک رسائی حاصل کرتی ہے، یا d1arena.com پر تصدیق شدہ درخواستیں کرتی ہے۔
- عوامی HTTPS درکار ہے۔ — آپ کے iframe URL کو TLS کا استعمال کرنا چاہیے اور صرف عوامی نیٹ ورک کے پتوں کو حل کرنا چاہیے۔
- انسانی پڑھنے کے قابل ذریعہ — کوئی مبہم یا miniified صرف جاوا اسکرپٹ نہیں۔ جائزہ لینے والوں کو آپ کا کوڈ پڑھنے کے قابل ہونا چاہیے۔
- کوئی بیرونی اسکرپٹ لوڈنگ نہیں ہے۔ جب تک کہ آپ کی جمع کرانے میں اعلان نہ ہو۔ CDN لائبریریاں (jQuery، Chart.js، وغیرہ) ٹھیک ہیں۔
- کوئی ڈیٹا ایکسفلٹریشن نہیں۔ — ایکسٹینشنز کو ناظرین کا ڈیٹا فریق ثالث کے تجزیات یا ٹریکنگ سروسز کو نہیں بھیجنا چاہیے۔
- مواد کی پالیسی — کوئی اشتہارات، NSFW مواد، cryptocurrency کان کنی، یا بدنیتی پر مبنی رویہ نہیں۔
عمل کا جائزہ لیں۔
| حیثیت | مطلب |
|---|---|
| pending | جمع کرایا گیا، منتظم کے جائزے کا انتظار ہے (عام طور پر 1-3 کاروباری دن)۔ |
| approved | ایکسٹینشن مارکیٹ پلیس میں منظور شدہ اور مرئی۔ |
| rejected | دلیل کے ساتھ مسترد کر دیا گیا۔ مسائل کو ٹھیک کریں اور دوبارہ جمع کرائیں۔ |
| suspended | پالیسی کی خلاف ورزی کی وجہ سے عارضی طور پر ہٹا دیا گیا۔ سپورٹ سے رابطہ کریں۔ |
ورژن اپڈیٹس
منظور شدہ ایکسٹینشن کو اپ ڈیٹ کرنے کے لیے، موجودہ ورژن کو حذف کریں اور بڑھے ہوئے ورژن نمبر کے ساتھ ایک نیا جمع کرائیں۔ نیا ورژن دوبارہ نظرثانی سے گزرتا ہے۔
چینج لاگ
API تبدیلیوں اور نئی خصوصیات کو ٹریک کریں۔ ہم سیمنٹک ورژننگ کی پیروی کرتے ہیں اور کم از کم 30 دن پہلے بریکنگ تبدیلیوں کا اعلان کرتے ہیں۔
- API کلیدی توثیق کے ساتھ ابتدائی عوامی API ریلیز۔
- اسٹریمز: لائیو سلسلے کی فہرست بنائیں، سلگ کے ذریعے اسٹریمر کی تفصیلات حاصل کریں۔
- زمرے: تلاش کریں اور گیم کے تمام زمروں کی فہرست بنائیں۔
- صارفین: مسابقتی اعدادوشمار، ELO درجہ بندی، اور تمغوں کی تعداد کے ساتھ عوامی پروفائلز۔
- کلپس: اسٹریمر/کریٹر کی معلومات کے ساتھ کلپ کی تفصیلات کو براؤز کریں اور بازیافت کریں۔
- ٹورنامنٹس: فہرست بنائیں، اسٹیٹس/لیگ کے لحاظ سے فلٹر کریں، شرکاء کی تعداد حاصل کریں۔
- ELO لیڈر بورڈ: عالمی اور فی زمرہ درجہ بندی والے لیڈر بورڈز۔
- لیگ: اسٹینڈنگز اور پوائنٹس کی خرابیوں والی لیگز کی فہرست بنائیں۔
- D1 Frenzy: کسی بھی اسٹریمر کے لیے ریئل ٹائم فرینزی اسٹیٹس۔
- ویب ہکس (ایونٹ سب): ایونٹ کی 12 اقسام بشمول اسٹریم، چینل، ٹورنامنٹ، کلپ، اور فرینزی ایونٹس۔
- شرح کی حدیں
مدد کی ضرورت ہے؟
API کے بارے میں سوالات؟ ہم سے رابطہ کریں۔۔