مرکزی مواد پر جائیں۔
D1 Arena

D1 Arena

Loading...

D1 Arena

ڈویلپر API

برادری

ڈویلپر API

D1Arena ڈیٹا کے ساتھ بوٹس، اوورلیز، اسٹریم ٹولز اور انضمام بنائیں۔

تصدیق

تمام API درخواستوں کو X-API-Key / Authorization: Bearer ہیڈر میں پاس کردہ API کلید کی ضرورت ہوتی ہے۔

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

API کلید بنانے کے لیے، اپنے ڈیش بورڈ میں ڈویلپر کی ترتیبات پر جائیں۔ آپ کے پاس 5 تک چابیاں ہو سکتی ہیں۔

API کی درخواستیں فی API کلید کی شرح سے محدود ہیں۔ جب آپ حد سے تجاوز کرتے ہیں تو، Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرنے کی درخواستیں آتی ہیں۔

بنیادی URL

https://d1arena.com/api/v1

تمام اختتامی پوائنٹس JSON واپس کرتے ہیں۔ صفحہ بندی کے اختتامی نکات میں current_page، last_page، اور total کے ساتھ ایک meta آبجیکٹ شامل ہے۔

سلسلے

GET /streams
فی الحال لائیو سلسلے کی فہرست بنائیں۔ صفحہ بندی اور زمرہ فلٹرنگ کی حمایت کرتا ہے۔
پیرامیٹرقسمتفصیل
category_idintegerگیم/زمرہ ID کے لحاظ سے فلٹر کریں۔
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اسٹریمر کے صارف ID کے ذریعہ کلپس کو فلٹر کریں۔
category_idintegerگیم/زمرہ ID کے لحاظ سے فلٹر کریں۔
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لیگ ID کے لحاظ سے فلٹر کریں۔
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 } }

ELO درجہ بندی

GET /elo/leaderboard
ELO کی درجہ بندی کا لیڈر بورڈ حاصل کریں۔ اختیاری طور پر گیم کے زمرے کے لحاظ سے فلٹر کریں۔
پیرامیٹرقسمتفصیل
category_idintegerگیم/زمرہ ID کے لحاظ سے فلٹر کریں۔
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گیم/زمرہ ID کے لحاظ سے فلٹر کریں۔
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
نہیں ملا — مطلوبہ وسیلہ موجود نہیں ہے۔ سلگ، ID، یا اینڈ پوائنٹ پاتھ کی تصدیق کریں۔
422
توثیق کی خرابی۔ — درخواست کے پیرامیٹرز کی توثیق ناکام ہوگئی۔ error.errors آبجیکٹ فیلڈ کے ناموں کو ان کے مخصوص مسائل کے لیے نقشہ بناتا ہے۔
429
ریٹ محدود — بہت زیادہ درخواستیں Retry-After ہیڈر اشارہ کرتا ہے کہ دوبارہ کوشش کرنے سے پہلے کتنے سیکنڈ انتظار کرنا ہے۔
500
سرور کی خرابی۔ — ہماری طرف سے ایک غیر متوقع خرابی واقع ہو گئی۔ اگر یہ برقرار رہے تو سپورٹ سے رابطہ کریں۔.

ایرر کوڈز کا حوالہ

کوڈHTTP حیثیتتفصیل
invalid_api_key401API کلید غائب، خراب، یا موجود نہیں ہے۔
api_key_disabled403API کلید کو منسوخ یا غیر فعال کر دیا گیا ہے۔
not_found404مطلوبہ وسیلہ نہیں مل سکا
validation_error422ایک یا زیادہ درخواست کے پیرامیٹرز غلط ہیں۔
rate_limited429اس API کلید کے لیے درخواست کی شرح کی حد سے تجاوز کر گیا ہے۔
server_error500اندرونی سرور کی خرابی — براہ کرم دوبارہ کوشش کریں یا سپورٹ سے رابطہ کریں۔

شرح کی حدیں

API کی درخواستیں فی API کلید کی شرح سے محدود ہیں۔ جب آپ حد سے تجاوز کرتے ہیں تو، Retry-After ہیڈر کے ساتھ 429 Too Many Requests واپس کرنے کی درخواستیں آتی ہیں۔

ٹائر کے لحاظ سے حدود

ٹائردرخواستیں / منٹ (طے شدہ)میکس کیز
سٹارٹر (مفت)605
پی آر او605
الٹیمیٹ605
ساتھی605

شرح کی حد ہیڈر

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 باڈی بھیجتی ہے:

{ "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-Idمنفرد ڈیلیوری UUID — ڈپلیکیشن کے لیے استعمال کریں۔
X-D1Arena-Timestampایونٹ کب بھیجا گیا اس کا یونکس ٹائم اسٹیمپ

دستخطوں کی تصدیق کرنا

ویب ہک پر کارروائی کرنے سے پہلے ہمیشہ X-D1Arena-Signature ہیڈر کی تصدیق کریں۔ دستخط کو HMAC-SHA256(raw_body, webhook_secret) کے طور پر شمار کیا جاتا ہے۔

v2 ڈیلیوری کے لیے، whsec_ راز استعمال کریں جو سبسکرپشن بنائے جانے پر دکھایا گیا تھا۔ پہلے سے اپ گریڈ v1-hashed-secret ڈیلیوری کے لیے، پہلے اس اصل راز سے SHA256(whsec_secret) کی گنتی کریں اور نتیجے میں آنے والے چھوٹے ہیکس ڈائجسٹ کو HMAC کلید کے بطور استعمال کریں۔ جب عملی طور پر v2 پر جانے کے لیے سبسکرپشن دوبارہ بنائیں۔

پی ایچ پی
// 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.startedD1 Frenzy ایک چینل پر شروع ہوا۔
overdrive.level_upD1 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 ڈویلپر کی ترتیبات.

بہترین طرز عمل

  • ہمیشہ دستخطوں کی تصدیق کریں۔ جعلی واقعات کو روکنے کے لیے پے لوڈ پر کارروائی کرنے سے پہلے۔
  • ڈپلیکیشن کے لیے ڈیلیوری آئی ڈی استعمال کریں۔ — دوبارہ کوشش کریں وہی ID بھیجیں، اس لیے دوہری پروسیسنگ سے بچنے کے لیے پروسیس شدہ آئی ڈیز کو اسٹور کریں۔
  • تیزی سے جواب دیں، متضاد طور پر کارروائی کریں۔ — فوری طور پر 200 OK واپس کریں اور بیک گراؤنڈ جاب میں کاروباری منطق کو ہینڈل کریں۔
  • صرف HTTPS اینڈ پوائنٹس استعمال کریں۔ — webhook URLs کو TLS استعمال کرنا چاہیے۔ HTTP کال بیکس کو مسترد کر دیا گیا ہے۔
  • نامعلوم واقعات کو احسن طریقے سے ہینڈل کریں۔ — ایونٹ کی نئی اقسام شامل کی جا سکتی ہیں۔ غلطی کی بجائے غیر تسلیم شدہ واقعات کے لیے 200 واپس کریں۔

D1 انماد

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

D1 انماد — پوائنٹس: ٹپ $1 → 100; رکنیت 500 × ٹائر. دورانیہ: 5 منٹس; کولڈاؤن: 30 منٹس.

ایکسٹینشن SDK

حسب ضرورت پینل اور اوورلے ایکسٹینشنز بنائیں جنہیں اسٹریمرز اپنے چینل کے صفحات پر انسٹال کر سکتے ہیں۔ ایکسٹینشنز سینڈ باکس والے iframes میں چلتی ہیں اور میزبان صفحہ سے بذریعہ postMessage رابطہ کرتی ہیں۔

شروع کرنا

  1. ڈویلپر کی ترتیبات میں ایک API کلید بنائیں۔
  2. اپنی ایکسٹینشن کو اپنے ڈومین پر ہوسٹ کردہ ایک اسٹینڈ HTML صفحہ کے طور پر بنائیں (HTTPS درکار ہے)۔
  3. اسے میری ایکسٹینشنز سیکشن میں جائزہ کے لیے جمع کروائیں۔
  4. منظوری کے بعد، اسٹریمرز اسے ایکسٹینشن مارکیٹ پلیس سے انسٹال کر سکتے ہیں۔

ایکسٹینشن کی اقسام

قسممقامرویہ
panelاسٹریم پلیئر کے نیچےسلسلہ لائیو ہونے پر نظر آتا ہے۔ مکمل چوڑائی والا کارڈ، 300px ڈیفالٹ اونچائی۔
overlayویڈیو پلیئر کے اوپرلائیو ہونے پر نظر آتا ہے۔ اوورلے پوزیشننگ ٹول کے ذریعے اسٹریمر کے ذریعے پوزیشن/سائز کو کنٹرول کیا جاتا ہے۔

postMessage API

آپ کی ایکسٹینشن لوڈ ہونے پر سیاق و سباق کا ڈیٹا خود بخود وصول کرتی ہے۔ ان واقعات کو نافذ کریں:

ہر پیغام کے لیے عین مطابق D1Arena والدین کی اصل کا استعمال کریں۔ آفیشل SDK اس اصلیت کو سرایت کرنے والے صفحہ سے خود بخود اخذ کرتا ہے اور اس کی تصدیق کرتا ہے۔

چونکہ ایکسٹینشن iframes جان بوجھ کر ایک مبہم سینڈ باکس کی اصلیت کا استعمال کرتے ہیں، 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چیٹ پیغامات (بذریعہ پشر چینل)
read:clipsچینل کلپس بذریعہ /api/clips/{slug}
read:tournamentsفعال مماثلت کی معلومات بذریعہ /api/active-match/{id}
read:channelچینل پروفائل، پیروکار، شیڈول

سیکورٹی کے تقاضے

ایکسٹینشنز سینڈ باکسڈ iframe کے ساتھ sandbox="allow-scripts" میں چلتی ہیں۔ آپ کی ایکسٹینشن نہیں کر سکتے کوکیز، لوکل اسٹوریج تک رسائی حاصل کرتی ہے، یا d1arena.com پر تصدیق شدہ درخواستیں کرتی ہے۔
  • عوامی HTTPS درکار ہے۔ — آپ کے iframe URL کو TLS کا استعمال کرنا چاہیے اور صرف عوامی نیٹ ورک کے پتوں کو حل کرنا چاہیے۔
  • انسانی پڑھنے کے قابل ذریعہ — کوئی مبہم یا miniified صرف جاوا اسکرپٹ نہیں۔ جائزہ لینے والوں کو آپ کا کوڈ پڑھنے کے قابل ہونا چاہیے۔
  • کوئی بیرونی اسکرپٹ لوڈنگ نہیں ہے۔ جب تک کہ آپ کی جمع کرانے میں اعلان نہ ہو۔ CDN لائبریریاں (jQuery، Chart.js، وغیرہ) ٹھیک ہیں۔
  • کوئی ڈیٹا ایکسفلٹریشن نہیں۔ — ایکسٹینشنز کو ناظرین کا ڈیٹا فریق ثالث کے تجزیات یا ٹریکنگ سروسز کو نہیں بھیجنا چاہیے۔
  • مواد کی پالیسی — کوئی اشتہارات، NSFW مواد، cryptocurrency کان کنی، یا بدنیتی پر مبنی رویہ نہیں۔

عمل کا جائزہ لیں۔

حیثیتمطلب
pendingجمع کرایا گیا، منتظم کے جائزے کا انتظار ہے (عام طور پر 1-3 کاروباری دن)۔
approvedایکسٹینشن مارکیٹ پلیس میں منظور شدہ اور مرئی۔
rejectedدلیل کے ساتھ مسترد کر دیا گیا۔ مسائل کو ٹھیک کریں اور دوبارہ جمع کرائیں۔
suspendedپالیسی کی خلاف ورزی کی وجہ سے عارضی طور پر ہٹا دیا گیا۔ سپورٹ سے رابطہ کریں۔

ورژن اپڈیٹس

منظور شدہ ایکسٹینشن کو اپ ڈیٹ کرنے کے لیے، موجودہ ورژن کو حذف کریں اور بڑھے ہوئے ورژن نمبر کے ساتھ ایک نیا جمع کرائیں۔ نیا ورژن دوبارہ نظرثانی سے گزرتا ہے۔

چینج لاگ

API تبدیلیوں اور نئی خصوصیات کو ٹریک کریں۔ ہم سیمنٹک ورژننگ کی پیروی کرتے ہیں اور کم از کم 30 دن پہلے بریکنگ تبدیلیوں کا اعلان کرتے ہیں۔

v1.0مارچ 2026
  • API کلیدی توثیق کے ساتھ ابتدائی عوامی API ریلیز۔
  • اسٹریمز: لائیو سلسلے کی فہرست بنائیں، سلگ کے ذریعے اسٹریمر کی تفصیلات حاصل کریں۔
  • زمرے: تلاش کریں اور گیم کے تمام زمروں کی فہرست بنائیں۔
  • صارفین: مسابقتی اعدادوشمار، ELO درجہ بندی، اور تمغوں کی تعداد کے ساتھ عوامی پروفائلز۔
  • کلپس: اسٹریمر/کریٹر کی معلومات کے ساتھ کلپ کی تفصیلات کو براؤز کریں اور بازیافت کریں۔
  • ٹورنامنٹس: فہرست بنائیں، اسٹیٹس/لیگ کے لحاظ سے فلٹر کریں، شرکاء کی تعداد حاصل کریں۔
  • ELO لیڈر بورڈ: عالمی اور فی زمرہ درجہ بندی والے لیڈر بورڈز۔
  • لیگ: اسٹینڈنگز اور پوائنٹس کی خرابیوں والی لیگز کی فہرست بنائیں۔
  • D1 Frenzy: کسی بھی اسٹریمر کے لیے ریئل ٹائم فرینزی اسٹیٹس۔
  • ویب ہکس (ایونٹ سب): ایونٹ کی 12 اقسام بشمول اسٹریم، چینل، ٹورنامنٹ، کلپ، اور فرینزی ایونٹس۔
  • شرح کی حدیں

مدد کی ضرورت ہے؟

API کے بارے میں سوالات؟ ہم سے رابطہ کریں۔۔