প্রধান বিষয়বস্তু এড়িয়ে যান
D1 Arena

D1 Arena

Loading...

D1 Arena

বিকাশকারী API

সম্প্রদায়

বিকাশকারী API

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 কী প্রতি রেট-সীমিত। যখন আপনি সীমা অতিক্রম করেন, অনুরোধগুলি একটি 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 } }

ELO র‌্যাঙ্কিং

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_key401API কী অনুপস্থিত, বিকৃত, বা বিদ্যমান নেই
api_key_disabled403API কী প্রত্যাহার বা নিষ্ক্রিয় করা হয়েছে
not_found404অনুরোধ করা সম্পদ খুঁজে পাওয়া যায়নি
validation_error422এক বা একাধিক অনুরোধ প্যারামিটার অবৈধ৷
rate_limited429এই API কী-এর জন্য অনুরোধের হার সীমা অতিক্রম করেছে৷
server_error500অভ্যন্তরীণ সার্ভার ত্রুটি — অনুগ্রহ করে পুনরায় চেষ্টা করুন বা সহায়তার সাথে যোগাযোগ করুন৷

হার সীমা

API অনুরোধগুলি API কী প্রতি রেট-সীমিত। যখন আপনি সীমা অতিক্রম করেন, অনুরোধগুলি একটি Retry-After শিরোনাম সহ 429 Too Many Requests ফেরত দেয়৷

স্তর দ্বারা সীমা

স্তরঅনুরোধ / মিনিট (ডিফল্ট)সর্বোচ্চ কী
স্টার্টার (বিনামূল্যে)605
PRO605
চূড়ান্ত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 উন্মাদনা পরবর্তী স্তরে অগ্রসর হয়েছে
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 সেকেন্ডযদি প্রথম প্রচেষ্টা ব্যর্থ হয় বা সময় শেষ হয়
3য় (পুনরায় চেষ্টা)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 এন্ডপয়েন্ট ব্যবহার করুন — ওয়েবহুক URL গুলি অবশ্যই 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

কাস্টম প্যানেল এবং ওভারলে এক্সটেনশন তৈরি করুন যা স্ট্রীমাররা তাদের চ্যানেল পৃষ্ঠাগুলিতে ইনস্টল করতে পারে। এক্সটেনশনগুলি স্যান্ডবক্সযুক্ত আইফ্রেমে চলে এবং হোস্ট পৃষ্ঠার সাথে 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চ্যানেল প্রোফাইল, ফলোয়ার, সময়সূচী

নিরাপত্তা প্রয়োজনীয়তা

এক্সটেনশানগুলি sandbox="allow-scripts" এর সাথে একটি স্যান্ডবক্সযুক্ত আইফ্রেম এ চলে৷ আপনার এক্সটেনশন পারে না কুকিজ, লোকাল স্টোরেজ অ্যাক্সেস করুন বা d1arena.com-এ প্রমাণীকৃত অনুরোধ করুন।
  • সর্বজনীন HTTPS প্রয়োজন — আপনার iframe URL TLS ব্যবহার করতে হবে এবং শুধুমাত্র সর্বজনীন নেটওয়ার্ক ঠিকানাগুলিতে সমাধান করতে হবে।
  • মানুষের পাঠযোগ্য উৎস — কোনো অস্পষ্ট বা ছোট-শুধুমাত্র জাভাস্ক্রিপ্ট নেই। পর্যালোচকরা আপনার কোড পড়তে সক্ষম হতে হবে.
  • কোনো বাহ্যিক স্ক্রিপ্ট লোড হচ্ছে না যদি না আপনার জমা দেওয়ার মধ্যে ঘোষণা করা হয়। CDN লাইব্রেরি (jQuery, Chart.js, ইত্যাদি) ঠিক আছে।
  • কোন তথ্য বহিষ্কার — এক্সটেনশনগুলি অবশ্যই তৃতীয় পক্ষের বিশ্লেষণ বা ট্র্যাকিং পরিষেবাগুলিতে দর্শকের ডেটা পাঠাবে না৷
  • বিষয়বস্তু নীতি — কোনো বিজ্ঞাপন, NSFW সামগ্রী, ক্রিপ্টোকারেন্সি মাইনিং বা দূষিত আচরণ নেই৷

পর্যালোচনা প্রক্রিয়া

স্ট্যাটাসঅর্থ
pendingজমা দেওয়া হয়েছে, প্রশাসক পর্যালোচনার অপেক্ষায় (সাধারণত 1-3 কার্যদিবস)।
approvedএক্সটেনশন মার্কেটপ্লেসে অনুমোদিত এবং দৃশ্যমান৷
rejectedকারণ দেখিয়ে প্রত্যাখ্যাত। সমস্যা সমাধান করুন এবং পুনরায় জমা দিন।
suspendedনীতি লঙ্ঘনের জন্য সাময়িকভাবে সরানো হয়েছে। সহায়তার সাথে যোগাযোগ করুন।

সংস্করণ আপডেট

একটি অনুমোদিত এক্সটেনশন আপডেট করতে, বর্তমান সংস্করণ মুছুন এবং একটি বর্ধিত সংস্করণ নম্বর সহ একটি নতুন জমা দিন৷ নতুন সংস্করণ আবার পর্যালোচনা মাধ্যমে যায়.

চেঞ্জলগ

API পরিবর্তন এবং নতুন বৈশিষ্ট্য ট্র্যাক করুন. আমরা শব্দার্থগত সংস্করণ অনুসরণ করি এবং অন্তত 30 দিন আগে ব্রেকিং পরিবর্তন ঘোষণা করি।

v1.0মার্চ 2026
  • API কী প্রমাণীকরণ সহ প্রাথমিক পাবলিক API প্রকাশ।
  • স্ট্রিম: লাইভ স্ট্রীম তালিকাভুক্ত করুন, স্লাগ দ্বারা স্ট্রীমারের বিবরণ পান।
  • বিভাগগুলি: সমস্ত গেমের বিভাগগুলি অনুসন্ধান করুন এবং তালিকাভুক্ত করুন৷
  • ব্যবহারকারীরা: প্রতিযোগিতামূলক পরিসংখ্যান, ELO রেটিং, এবং পদক সংখ্যা সহ সর্বজনীন প্রোফাইল।
  • ক্লিপ: স্ট্রীমার/স্রষ্টার তথ্য সহ ক্লিপ বিশদ ব্রাউজ করুন এবং পুনরুদ্ধার করুন।
  • টুর্নামেন্ট: তালিকা, স্ট্যাটাস/লিগ অনুসারে ফিল্টার করুন, অংশগ্রহণকারীদের সংখ্যা পান।
  • ELO লিডারবোর্ড: গ্লোবাল এবং প্রতি-বিভাগে র‌্যাঙ্ক করা লিডারবোর্ড।
  • লিগ: স্ট্যান্ডিং এবং পয়েন্ট ব্রেকডাউন সহ লিগ তালিকা করুন।
  • D1 উন্মাদনা: যেকোনো স্ট্রীমারের জন্য রিয়েল-টাইম উন্মত্ত অবস্থা।
  • ওয়েবহুকস (ইভেন্টসাব): স্ট্রীম, চ্যানেল, টুর্নামেন্ট, ক্লিপ, এবং উন্মত্ত ইভেন্ট সহ 12টি ইভেন্ট প্রকার।
  • হার সীমা

সাহায্য প্রয়োজন?

API সম্পর্কে প্রশ্ন? আমাদের সাথে যোগাযোগ করুন।