D1Arena ডেটা দিয়ে বট, ওভারলে, স্ট্রিম টুল এবং ইন্টিগ্রেশন তৈরি করুন।
প্রমাণীকরণ
সমস্ত API অনুরোধের জন্য একটি API কী X-API-Key / Authorization: Bearer হেডারে পাস করা প্রয়োজন৷
একটি API কী তৈরি করতে, আপনার ড্যাশবোর্ডে বিকাশকারী সেটিংস এ যান৷ আপনার কাছে 5টি পর্যন্ত কী থাকতে পারে।
Retry-After শিরোনাম সহ 429 Too Many Requests ফেরত দেয়৷
বেস ইউআরএল
সমস্ত শেষ পয়েন্ট JSON প্রদান করে। পেজিনেটেড এন্ডপয়েন্টে current_page, last_page, এবং total সহ একটি meta অবজেক্ট রয়েছে।
স্ট্রীম
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
category_id | integer | খেলা/বিভাগ আইডি দ্বারা ফিল্টার |
limit | integer | পৃষ্ঠা প্রতি ফলাফল (ডিফল্ট: 20) |
page | integer | পৃষ্ঠা সংখ্যা |
ক্যাটাগরি
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
search | string | নাম অনুসারে বিভাগগুলি ফিল্টার করুন |
limit | integer | পৃষ্ঠা প্রতি ফলাফল (ডিফল্ট: 50) |
ব্যবহারকারীদের
ক্লিপ
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
streamer_id | integer | স্ট্রিমারের ব্যবহারকারী আইডি দ্বারা ক্লিপগুলি ফিল্টার করুন |
category_id | integer | খেলা/বিভাগ আইডি দ্বারা ফিল্টার |
limit | integer | পৃষ্ঠা প্রতি ফলাফল (ডিফল্ট: 20) |
টুর্নামেন্ট
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
status | string | স্থিতি অনুসারে ফিল্টার করুন (যেমন open, in_progress, completed) |
league_id | integer | লীগ আইডি দ্বারা ফিল্টার |
limit | integer | পৃষ্ঠা প্রতি ফলাফল (ডিফল্ট: 20) |
ELO র্যাঙ্কিং
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
category_id | integer | খেলা/বিভাগ আইডি দ্বারা ফিল্টার |
limit | integer | ফলাফলের সংখ্যা (ডিফল্ট: 50) |
লীগ
| প্যারামিটার | টাইপ | বর্ণনা |
|---|---|---|
status | string | লিগ অবস্থা দ্বারা ফিল্টার |
category_id | integer | খেলা/বিভাগ আইডি দ্বারা ফিল্টার |
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 |
| PRO | 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 উন্মাদনা পরবর্তী স্তরে অগ্রসর হয়েছে |
| overdrive.ended | D1 উন্মত্ততা সম্পন্ন বা মেয়াদ শেষ |
ইভেন্ট পেলোড উদাহরণ
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
ডেলিভারি এবং পুনরায় চেষ্টা করার নীতি
| প্রয়াস | বিলম্ব | নোট |
|---|---|---|
| ১ম (প্রাথমিক) | তাৎক্ষণিক | ইভেন্টের কয়েক সেকেন্ডের মধ্যে পাঠানো হয় |
| ২য় (পুনরায় চেষ্টা করুন) | 30 সেকেন্ড | যদি প্রথম প্রচেষ্টা ব্যর্থ হয় বা সময় শেষ হয় |
| 3য় (পুনরায় চেষ্টা) | 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 বিকাশকারী সেটিংস.
সর্বোত্তম অনুশীলন
- সর্বদা স্বাক্ষর যাচাই করুন প্রতারণামূলক ঘটনা রোধ করতে পেলোড প্রক্রিয়াকরণের আগে।
- ডিডুপ্লিকেশনের জন্য ডেলিভারি-আইডি ব্যবহার করুন — পুনরায় চেষ্টা করে একই আইডি পাঠায়, তাই ডবল-প্রসেসিং এড়াতে প্রক্রিয়াকৃত আইডি সংরক্ষণ করুন।
- দ্রুত সাড়া দিন, অ্যাসিঙ্ক্রোনাস প্রক্রিয়া করুন — অবিলম্বে
200 OKফেরত দিন এবং একটি ব্যাকগ্রাউন্ড কাজের মধ্যে ব্যবসায়িক যুক্তি পরিচালনা করুন। - শুধুমাত্র HTTPS এন্ডপয়েন্ট ব্যবহার করুন — ওয়েবহুক URL গুলি অবশ্যই 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
কাস্টম প্যানেল এবং ওভারলে এক্সটেনশন তৈরি করুন যা স্ট্রীমাররা তাদের চ্যানেল পৃষ্ঠাগুলিতে ইনস্টল করতে পারে। এক্সটেনশনগুলি স্যান্ডবক্সযুক্ত আইফ্রেমে চলে এবং হোস্ট পৃষ্ঠার সাথে 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 ব্যবহার করতে হবে এবং শুধুমাত্র সর্বজনীন নেটওয়ার্ক ঠিকানাগুলিতে সমাধান করতে হবে।
- মানুষের পাঠযোগ্য উৎস — কোনো অস্পষ্ট বা ছোট-শুধুমাত্র জাভাস্ক্রিপ্ট নেই। পর্যালোচকরা আপনার কোড পড়তে সক্ষম হতে হবে.
- কোনো বাহ্যিক স্ক্রিপ্ট লোড হচ্ছে না যদি না আপনার জমা দেওয়ার মধ্যে ঘোষণা করা হয়। CDN লাইব্রেরি (jQuery, Chart.js, ইত্যাদি) ঠিক আছে।
- কোন তথ্য বহিষ্কার — এক্সটেনশনগুলি অবশ্যই তৃতীয় পক্ষের বিশ্লেষণ বা ট্র্যাকিং পরিষেবাগুলিতে দর্শকের ডেটা পাঠাবে না৷
- বিষয়বস্তু নীতি — কোনো বিজ্ঞাপন, NSFW সামগ্রী, ক্রিপ্টোকারেন্সি মাইনিং বা দূষিত আচরণ নেই৷
পর্যালোচনা প্রক্রিয়া
| স্ট্যাটাস | অর্থ |
|---|---|
| pending | জমা দেওয়া হয়েছে, প্রশাসক পর্যালোচনার অপেক্ষায় (সাধারণত 1-3 কার্যদিবস)। |
| approved | এক্সটেনশন মার্কেটপ্লেসে অনুমোদিত এবং দৃশ্যমান৷ |
| rejected | কারণ দেখিয়ে প্রত্যাখ্যাত। সমস্যা সমাধান করুন এবং পুনরায় জমা দিন। |
| suspended | নীতি লঙ্ঘনের জন্য সাময়িকভাবে সরানো হয়েছে। সহায়তার সাথে যোগাযোগ করুন। |
সংস্করণ আপডেট
একটি অনুমোদিত এক্সটেনশন আপডেট করতে, বর্তমান সংস্করণ মুছুন এবং একটি বর্ধিত সংস্করণ নম্বর সহ একটি নতুন জমা দিন৷ নতুন সংস্করণ আবার পর্যালোচনা মাধ্যমে যায়.
চেঞ্জলগ
API পরিবর্তন এবং নতুন বৈশিষ্ট্য ট্র্যাক করুন. আমরা শব্দার্থগত সংস্করণ অনুসরণ করি এবং অন্তত 30 দিন আগে ব্রেকিং পরিবর্তন ঘোষণা করি।
- API কী প্রমাণীকরণ সহ প্রাথমিক পাবলিক API প্রকাশ।
- স্ট্রিম: লাইভ স্ট্রীম তালিকাভুক্ত করুন, স্লাগ দ্বারা স্ট্রীমারের বিবরণ পান।
- বিভাগগুলি: সমস্ত গেমের বিভাগগুলি অনুসন্ধান করুন এবং তালিকাভুক্ত করুন৷
- ব্যবহারকারীরা: প্রতিযোগিতামূলক পরিসংখ্যান, ELO রেটিং, এবং পদক সংখ্যা সহ সর্বজনীন প্রোফাইল।
- ক্লিপ: স্ট্রীমার/স্রষ্টার তথ্য সহ ক্লিপ বিশদ ব্রাউজ করুন এবং পুনরুদ্ধার করুন।
- টুর্নামেন্ট: তালিকা, স্ট্যাটাস/লিগ অনুসারে ফিল্টার করুন, অংশগ্রহণকারীদের সংখ্যা পান।
- ELO লিডারবোর্ড: গ্লোবাল এবং প্রতি-বিভাগে র্যাঙ্ক করা লিডারবোর্ড।
- লিগ: স্ট্যান্ডিং এবং পয়েন্ট ব্রেকডাউন সহ লিগ তালিকা করুন।
- D1 উন্মাদনা: যেকোনো স্ট্রীমারের জন্য রিয়েল-টাইম উন্মত্ত অবস্থা।
- ওয়েবহুকস (ইভেন্টসাব): স্ট্রীম, চ্যানেল, টুর্নামেন্ট, ক্লিপ, এবং উন্মত্ত ইভেন্ট সহ 12টি ইভেন্ট প্রকার।
- হার সীমা
সাহায্য প্রয়োজন?
API সম্পর্কে প্রশ্ন? আমাদের সাথে যোগাযোগ করুন।