मुख्य सामग्री पर जाएँ
D1 Arena

D1 Arena

Loading...

D1 Arena

डेवलपर एपीआई

समुदाय

डेवलपर एपीआई

D1Arena डेटा के साथ बॉट, ओवरले, स्ट्रीम टूल और एकीकरण बनाएं।

प्रमाणीकरण

सभी एपीआई अनुरोधों के लिए X-API-Key / Authorization: Bearer हेडर में पारित एपीआई कुंजी की आवश्यकता होती है।

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

एपीआई कुंजी बनाने के लिए, अपने डैशबोर्ड में डेवलपर सेटिंग्स पर जाएं। आपके पास अधिकतम 5 चाबियाँ हो सकती हैं.

एपीआई अनुरोध प्रति एपीआई कुंजी दर-सीमित हैं। जब आप सीमा पार कर जाते हैं, तो अनुरोध Retry-After हेडर के साथ 429 Too Many Requests वापस आते हैं।

आधार यूआरएल

https://d1arena.com/api/v1

सभी समापनबिंदु JSON लौटाते हैं। पृष्ठांकित समापन बिंदुओं में current_page, last_page, और total के साथ एक meta ऑब्जेक्ट शामिल है।

धाराएँ

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
ईएलओ-रैंक वाला लीडरबोर्ड प्राप्त करें। वैकल्पिक रूप से खेल श्रेणी के अनुसार फ़िल्टर करें।
पैरामीटरप्रकारविवरण
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
मना किया — आपकी एपीआई कुंजी अक्षम कर दी गई है या इस संसाधन के लिए अनुमति का अभाव है। अपनी जाँच करें डेवलपर सेटिंग्स.
404
नहीं मिला — अनुरोधित संसाधन मौजूद नहीं है. स्लग, आईडी, या समापन बिंदु पथ सत्यापित करें।
422
सत्यापन त्रुटि — अनुरोध पैरामीटर सत्यापन विफल रहा. error.errors ऑब्जेक्ट फ़ील्ड नामों को उनके विशिष्ट मुद्दों पर मैप करता है।
429
दर सीमित — बहुत सारे अनुरोध. Retry-After हेडर इंगित करता है कि पुनः प्रयास करने से पहले कितने सेकंड इंतजार करना होगा।
500
सर्वर त्रुटि — हमारी ओर से एक अप्रत्याशित त्रुटि उत्पन्न हुई. यदि यह जारी रहता है, समर्थन से संपर्क करें.

त्रुटि कोड संदर्भ

कोडHTTP स्थितिविवरण
invalid_api_key401एपीआई कुंजी गुम है, विकृत है, या मौजूद नहीं है
api_key_disabled403एपीआई कुंजी निरस्त या अक्षम कर दी गई है
not_found404अनुरोधित संसाधन नहीं मिल सका
validation_error422एक या अधिक अनुरोध पैरामीटर अमान्य हैं
rate_limited429इस एपीआई कुंजी के लिए अनुरोध दर सीमा पार हो गई है
server_error500आंतरिक सर्वर त्रुटि - कृपया पुनः प्रयास करें या समर्थन से संपर्क करें

दर सीमाएँ

एपीआई अनुरोध प्रति एपीआई कुंजी दर-सीमित हैं। जब आप सीमा पार कर जाते हैं, तो अनुरोध Retry-After हेडर के साथ 429 Too Many Requests वापस आते हैं।

टियर द्वारा सीमाएं

स्तरअनुरोध/मिनट (गलती करना)अधिकतम कुंजी
स्टार्टर (मुक्त)605
प्रो605
परम605
साथी605

दर सीमा शीर्षलेख

एपीआई अनुरोध प्रति एपीआई कुंजी दर-सीमित हैं। जब आप सीमा पार कर जाते हैं, तो अनुरोध 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 भेजता है।

स्थापित करना

डेवलपर सेटिंग्स में वेबहुक सदस्यताएँ बनाएँ। प्रत्येक सदस्यता के लिए आवश्यक है:

  • कॉलबैक यूआरएल — आपके सर्वर पर सार्वजनिक रूप से सुलभ 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अद्वितीय डिलीवरी यूयूआईडी - डिडुप्लीकेशन के लिए उपयोग करें
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);
नोड.जे.एस
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 उन्माद एक चैनल पर शुरू हुआ
overdrive.level_upD1 उन्माद अगले स्तर पर पहुंच गया
overdrive.endedD1 फ़्रेन्ज़ी पूरा हुआ या समाप्त हो गया

इवेंट पेलोड उदाहरण

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 डेवलपर सेटिंग्स.

सर्वोत्तम प्रथाएँ

  • हमेशा हस्ताक्षर सत्यापित करें नकली घटनाओं को रोकने के लिए पेलोड को संसाधित करने से पहले।
  • डिडुप्लीकेशन के लिए डिलीवरी-आईडी का उपयोग करें — पुन: प्रयास एक ही आईडी भेजते हैं, इसलिए डबल-प्रोसेसिंग से बचने के लिए संसाधित आईडी को स्टोर करें।
  • शीघ्रता से उत्तर दें, अतुल्यकालिक रूप से प्रक्रिया करें — तुरंत 200 OK लौटें और पृष्ठभूमि कार्य में व्यावसायिक तर्क को संभालें।
  • केवल HTTPS एंडपॉइंट का उपयोग करें — वेबहुक यूआरएल को टीएलएस का उपयोग करना चाहिए। HTTP कॉलबैक अस्वीकार कर दिए गए हैं.
  • अज्ञात घटनाओं को शालीनता से संभालें — नए ईवेंट प्रकार जोड़े जा सकते हैं. त्रुटि करने के बजाय अज्ञात घटनाओं के लिए 200 लौटें।

D1 उन्माद

जब स्ट्रीमर लाइव होता है तो डी1 उन्माद तेजी से युक्तियों और सदस्यताओं से शुरू होता है। यह बढ़ते लक्ष्यों के साथ 5 स्तरों से आगे बढ़ता है।

GET /api/overdrive/{streamerId}

स्ट्रीमर के लिए सक्रिय D1 उन्माद प्राप्त करें। यदि कोई नहीं तो {"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 मिनट.

एक्सटेंशन एसडीके

कस्टम पैनल और ओवरले एक्सटेंशन बनाएं जिन्हें स्ट्रीमर अपने चैनल पेजों पर इंस्टॉल कर सकें। एक्सटेंशन सैंडबॉक्स वाले आईफ्रेम में चलते हैं और postMessage के माध्यम से होस्ट पेज के साथ संचार करते हैं।

आरंभ करना

  1. डेवलपर सेटिंग्स में एक एपीआई कुंजी बनाएं।
  2. अपने एक्सटेंशन को अपने डोमेन पर होस्ट किए गए एक स्टैंडअलोन HTML पेज के रूप में बनाएं (HTTPS आवश्यक)।
  3. इसे मेरे एक्सटेंशन अनुभाग में समीक्षा के लिए सबमिट करें।
  4. एक बार स्वीकृत होने के बाद, स्ट्रीमर इसे एक्सटेंशन मार्केटप्लेस से इंस्टॉल कर सकते हैं।

एक्सटेंशन प्रकार

प्रकारजगहव्यवहार
panelस्ट्रीम प्लेयर के नीचेस्ट्रीम लाइव होने पर दृश्यमान. पूर्ण-चौड़ाई वाला कार्ड, 300px डिफ़ॉल्ट ऊँचाई।
overlayवीडियो प्लेयर के ऊपरलाइव होने पर दृश्यमान. ओवरले पोजिशनिंग टूल के माध्यम से स्ट्रीमर द्वारा स्थिति/आकार को नियंत्रित किया जाता है।

पोस्टमैसेज एपीआई

लोड होने पर आपका एक्सटेंशन स्वचालित रूप से संदर्भ डेटा प्राप्त करता है। इन घटनाओं को लागू करें:

प्रत्येक संदेश के लिए सटीक D1Arena मूल मूल का उपयोग करें। आधिकारिक SDK स्वचालित रूप से एम्बेडिंग पृष्ठ से इस मूल को प्राप्त और मान्य करता है।

क्योंकि एक्सटेंशन आईफ्रेम जानबूझकर एक अपारदर्शी सैंडबॉक्स मूल का उपयोग करते हैं, D1Arena होस्ट सटीक पंजीकृत आईफ्रेम विंडो को प्रमाणित करता है। संदर्भ स्वीकार करने से पहले एक्सटेंशन कोड को अभी भी मूल विंडो और सटीक 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चैनल प्रोफाइल, फॉलोअर्स, शेड्यूल

सुरक्षा आवश्यकताएँ

एक्सटेंशन सैंडबॉक्स्ड आईफ्रेम के साथ sandbox="allow-scripts" में चलते हैं। आपका एक्सटेंशन नहीं कर सकते कुकीज़, लोकलस्टोरेज तक पहुंचता है, या d1arena.com पर प्रमाणित अनुरोध करता है।
  • सार्वजनिक HTTPS आवश्यक है — आपके आईफ्रेम यूआरएल को TLS का उपयोग करना चाहिए और केवल सार्वजनिक नेटवर्क पते पर ही हल करना चाहिए।
  • मानव-पठनीय स्रोत — कोई अस्पष्ट या छोटा-सा जावास्क्रिप्ट नहीं। समीक्षकों को आपका कोड पढ़ने में सक्षम होना चाहिए।
  • कोई बाहरी स्क्रिप्ट लोड नहीं हो रही है जब तक कि आपके सबमिशन में घोषित न किया गया हो। CDN लाइब्रेरीज़ (jQuery, Chart.js, आदि) ठीक हैं।
  • कोई डेटा घुसपैठ नहीं — एक्सटेंशन को दर्शकों का डेटा तीसरे पक्ष की एनालिटिक्स या ट्रैकिंग सेवाओं को नहीं भेजना चाहिए।
  • सामग्री नीति — कोई विज्ञापन, NSFW सामग्री, क्रिप्टोकरेंसी खनन या दुर्भावनापूर्ण व्यवहार नहीं।

समीक्षा प्रक्रिया

स्थितिमतलब
pendingसबमिट किया गया, व्यवस्थापक समीक्षा की प्रतीक्षा में (आमतौर पर 1-3 कार्यदिवस)।
approvedएक्सटेंशन मार्केटप्लेस में स्वीकृत और दृश्यमान।
rejectedकारण सहित अस्वीकृत. समस्याएं ठीक करें और पुनः सबमिट करें.
suspendedनीति उल्लंघन के कारण अस्थायी रूप से हटा दिया गया. समर्थन से संपर्क करें।

संस्करण अद्यतन

किसी स्वीकृत एक्सटेंशन को अपडेट करने के लिए, वर्तमान संस्करण को हटा दें और बढ़ी हुई संस्करण संख्या के साथ एक नया एक्सटेंशन सबमिट करें। नये संस्करण की फिर से समीक्षा की जा रही है।

चेंजलॉग

एपीआई परिवर्तन और नई सुविधाओं को ट्रैक करें। हम सिमेंटिक वर्जनिंग का पालन करते हैं और कम से कम 30 दिन पहले महत्वपूर्ण बदलावों की घोषणा करते हैं।

v1.0मार्च 2026
  • एपीआई कुंजी प्रमाणीकरण के साथ प्रारंभिक सार्वजनिक एपीआई रिलीज।
  • स्ट्रीम: लाइव स्ट्रीम सूचीबद्ध करें, स्लग द्वारा स्ट्रीमर विवरण प्राप्त करें।
  • श्रेणियाँ: सभी खेल श्रेणियाँ खोजें और सूचीबद्ध करें।
  • उपयोगकर्ता: प्रतिस्पर्धी आँकड़े, ईएलओ रेटिंग और पदक संख्या के साथ सार्वजनिक प्रोफ़ाइल।
  • क्लिप: स्ट्रीमर/निर्माता जानकारी के साथ क्लिप विवरण ब्राउज़ करें और पुनः प्राप्त करें।
  • टूर्नामेंट: सूची, स्थिति/लीग के अनुसार फ़िल्टर करें, प्रतिभागियों की संख्या प्राप्त करें।
  • ईएलओ लीडरबोर्ड: वैश्विक और प्रति-श्रेणी रैंक वाले लीडरबोर्ड।
  • लीग: स्टैंडिंग और प्वाइंट ब्रेकडाउन के साथ लीग की सूची बनाएं।
  • D1 उन्माद: किसी भी स्ट्रीमर के लिए वास्तविक समय उन्माद स्थिति।
  • वेबहुक (इवेंटसब): स्ट्रीम, चैनल, टूर्नामेंट, क्लिप और उन्मादी इवेंट सहित 12 इवेंट प्रकार।
  • दर सीमाएँ

मदद की ज़रूरत है?

API के बारे में प्रश्न? हमसे संपर्क करें.