رباتها، پوششها، ابزارهای جریانی و ادغام با دادههای D1Arena بسازید.
احراز هویت
همه درخواستهای API نیاز به یک کلید API دارند که در سرصفحه X-API-Key / Authorization: Bearer ارسال شود.
برای ایجاد یک کلید API، در داشبورد خود به تنظیمات برنامه نویس بروید. شما می توانید حداکثر 5 کلید داشته باشید.
429 Too Many Requests را با سرصفحه Retry-After برمیگردانند.
URL پایه
همه نقاط پایانی JSON را برمیگردانند. نقاط پایانی صفحه بندی شده شامل یک شیء meta با current_page، last_page و total است.
جریان ها
| پارامتر | تایپ کنید | توضیحات |
|---|---|---|
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 با نرخ محدود میشوند. وقتی از حد مجاز فراتر رفتید، درخواستها 429 Too Many Requests را با سرصفحه Retry-After برمیگردانند.
محدودیت بر اساس ردیف
| ردیف | درخواست ها / دقیقه (پیش فرض) | حداکثر کلید |
|---|---|---|
| استارتر (رایگان) | 60 | 5 |
| PRO | 60 | 5 |
| نهایی | 60 | 5 |
| شریک | 60 | 5 |
سرصفحه های حد امتیاز
درخواستهای API برای هر کلید API با نرخ محدود میشوند. وقتی از حد مجاز فراتر رفتید، درخواستها 429 Too Many Requests را با سرصفحه Retry-After برمیگردانند.
| سربرگ | توضیحات |
|---|---|
Retry-After | چند ثانیه منتظر ماندن قبل از تلاش مجدد (فقط در 429 پاسخ موجود است) |
بهترین شیوه ها
- Cache responses locally — stream and tournament data doesn't change every second.
- اشتراک در webhooks برای رویدادهای همزمان بهجای پایان نظرسنجی.
- درخواستهای دستهای در صورت امکان - از پارامترهای فیلتر استفاده کنید تا دقیقاً آنچه را که نیاز دارید در تماسهای کمتر دریافت کنید.
Webhooks (EventSub)
به جای نظرسنجی در اعلانهای فشار لحظهای مشترک شوید. هنگامی که رویدادی رخ میدهد، D1Arena یک HTTP POST را با یک بار JSON امضا شده با HMAC-SHA256 به URL بازگشت به تماس شما ارسال میکند.
راه اندازی
اشتراک های وب هوک را در تنظیمات برنامه نویس ایجاد کنید. هر اشتراک نیاز به:
- 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 در یک کانال شروع شد |
| 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 تنظیمات برنامه نویس.
بهترین شیوه ها
- همیشه امضاها را تأیید کنید قبل از پردازش محموله ها برای جلوگیری از رویدادهای جعلی.
- از Delivery-Id برای حذف مجدد استفاده کنید — تلاش های مجدد، همان شناسه را ارسال می کند، بنابراین شناسه های پردازش شده را ذخیره کنید تا از پردازش مضاعف جلوگیری کنید.
- به سرعت پاسخ دهید، به صورت ناهمزمان پردازش کنید — فوراً
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
پنل سفارشی و افزونههای همپوشانی بسازید که پخشکنندهها میتوانند در صفحات کانال خود نصب کنند. برنامه های افزودنی در iframe های جعبه ایمنی اجرا می شوند و از طریق postMessage با صفحه میزبان ارتباط برقرار می کنند.
شروع به کار
- یک کلید API در تنظیمات برنامه نویس ایجاد کنید.
- برنامه افزودنی خود را به عنوان یک صفحه HTML مستقل که در دامنه شما میزبانی شده است بسازید (HTTPS مورد نیاز است).
- آن را برای بررسی در بخش برنامه های افزودنی من ارسال کنید.
- پس از تأیید، پخشکنندهها میتوانند آن را از Extension Marketplace نصب کنند.
انواع پسوند
| تایپ کنید | مکان | رفتار |
|---|---|---|
panel | زیر پخش کننده استریم | در هنگام پخش جریانی قابل مشاهده است. کارت تمام عرض، ارتفاع پیشفرض 300 پیکسل. |
overlay | روی پخش کننده ویدیو | در هنگام زنده قابل مشاهده است. موقعیت/اندازه توسط استریمر از طریق ابزار تعیین موقعیت پوشش کنترل می شود. |
postMessage API
برنامه افزودنی شما هنگام بارگیری، داده های زمینه را به طور خودکار دریافت می کند. اجرای این رویدادها:
برای هر پیام از مبدا اصلی D1Arena استفاده کنید. SDK رسمی این منبع را از صفحه جاسازی به طور خودکار استخراج و تأیید می کند.
از آنجایی که iframes های افزودنی عمدا از یک مبدأ جعبه مات مات استفاده می کنند، میزبان D1Arena پنجره iframe ثبت شده دقیق را احراز هویت می کند. کد برنامه افزودنی باید قبل از پذیرش متن، پنجره والد و مبدأ D1Arena را احراز هویت کند.
1. آمادگی سیگنال
2. متن را دریافت کنید
3. ارسال اقدامات (اختیاری)
محدوده مجوز
اعلام کنید که برنامه افزودنی شما به چه داده هایی نیاز دارد. بازبینان تأیید می کنند که کد شما با مجوزهای اعلام شده شما مطابقت دارد.
| دامنه | اجازه دسترسی به |
|---|---|
read:stream | وضعیت جریان، عنوان، دسته |
read:viewers | تعداد بینندگان و لیست |
read:chat | پیام های چت (از طریق کانال Pusher) |
read:clips | کلیپ های کانال از طریق /api/clips/{slug} |
read:tournaments | اطلاعات تطابق فعال از طریق /api/active-match/{id} |
read:channel | پروفایل کانال، فالوورها، برنامه |
الزامات امنیتی
sandbox="allow-scripts" اجرا میشوند. برنامه افزودنی شما نمی تواند به کوکیها، محل ذخیرهسازی محلی دسترسی دارد یا درخواستهای احراز هویت شده را به d1arena.com ارسال میکند.
- عمومی HTTPS مورد نیاز است — URL iframe شما باید از TLS استفاده کند و فقط به آدرس های شبکه عمومی حل شود.
- منبع قابل خواندن برای انسان — بدون جاوا اسکریپت مبهم یا کوچک شده. بازبینان باید بتوانند کد شما را بخوانند.
- بدون بارگیری اسکریپت خارجی مگر اینکه در ارسال شما اعلام شده باشد. کتابخانه های CDN (jQuery، Chart.js و غیره) خوب هستند.
- بدون استخراج داده ها — برنامه های افزودنی نباید داده های بیننده را به سرویس های تجزیه و تحلیل یا ردیابی شخص ثالث ارسال کنند.
- خط مشی محتوا — بدون تبلیغات، محتوای NSFW، استخراج ارز دیجیتال، یا رفتار مخرب.
فرآیند بررسی
| وضعیت | معنی |
|---|---|
| pending | ارسال شد، در انتظار بررسی سرپرست (معمولاً 1-3 روز کاری). |
| approved | تایید شده و در Extension Marketplace قابل مشاهده است. |
| rejected | با دلیل رد شد. مشکلات را برطرف کنید و دوباره ارسال کنید. |
| suspended | به دلیل نقض خطمشی موقتا حذف شد. با پشتیبانی تماس بگیرید. |
به روز رسانی نسخه
برای بهروزرسانی یک برنامه افزودنی تأیید شده، نسخه فعلی را حذف کنید و یک نسخه جدید با شماره نسخه افزایش یافته ارسال کنید. نسخه جدید دوباره مورد بررسی قرار می گیرد.
تغییرات
ردیابی تغییرات API و ویژگی های جدید. ما نسخهسازی معنایی را دنبال میکنیم و تغییرات قطعی را حداقل 30 روز قبل اعلام میکنیم.
- انتشار اولیه API عمومی با احراز هویت کلید API.
- جریانها: پخشهای زنده را فهرست کنید، جزئیات پخشکننده را بر اساس اسلاگ دریافت کنید.
- دستهها: همه دستههای بازی را جستجو و فهرست کنید.
- کاربران: نمایه های عمومی با آمار رقابتی، رتبه بندی ELO و تعداد مدال.
- کلیپ ها: جزئیات کلیپ را با اطلاعات پخش کننده/سازنده مرور و بازیابی کنید.
- تورنمنت ها: فهرست، فیلتر بر اساس وضعیت/لیگ، دریافت تعداد شرکت کنندگان.
- ELO Leaderboard: تابلوهای امتیازات جهانی و رتبه بندی شده در هر دسته.
- لیگها: لیگها را با جدول ردهبندی و تفکیک امتیاز فهرست کنید.
- D1 Frenzy: وضعیت بیدرنگ Frenzy برای هر پخشکننده.
- Webhooks (EventSub): 12 نوع رویداد شامل جریان، کانال، مسابقات، کلیپ و رویدادهای Frenzy.
- محدودیت های نرخ
به کمک نیاز دارید؟
درباره API سؤالی دارید؟ با ما تماس بگیرید.