สร้างบอท โอเวอร์เลย์ เครื่องมือสตรีม และการผสานรวมกับข้อมูล D1Arena
การรับรองความถูกต้อง
คำขอ API ทั้งหมดต้องมีคีย์ API ที่ส่งผ่านใน X-API-Key / Authorization: Bearer header
หากต้องการสร้างคีย์ API ให้ไปที่ การตั้งค่านักพัฒนาซอฟต์แวร์ ในแดชบอร์ดของคุณ คุณสามารถมีได้ถึง 5 ปุ่ม
429 Too Many Requests พร้อมกับส่วนหัว Retry-After
URL พื้นฐาน
ปลายทางทั้งหมดส่งคืน JSON จุดสิ้นสุดที่มีการแบ่งหน้าจะมี meta object ที่มี 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 | กรองตาม ID ลีก |
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 |
| โปร | 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 สำหรับกิจกรรมแบบเรียลไทม์แทนการโพลจุดสิ้นสุด
- คำขอเป็นกลุ่มหากเป็นไปได้ — ใช้พารามิเตอร์ตัวกรองเพื่อให้ได้สิ่งที่คุณต้องการโดยการโทรน้อยลง
เว็บฮุค (EventSub)
สมัครรับการแจ้งเตือนแบบเรียลไทม์แทนการสำรวจ เมื่อมีเหตุการณ์เกิดขึ้น D1Arena จะส่ง HTTP POST ไปยัง URL การติดต่อกลับของคุณด้วยเพย์โหลด JSON ที่ลงนามด้วย HMAC-SHA256
ตั้งค่า
สร้างการสมัครสมาชิก webhook ใน การตั้งค่านักพัฒนาซอฟต์แวร์ การสมัครสมาชิกแต่ละครั้งต้องใช้:
- 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 | การประทับเวลา Unix ของเวลาที่ส่งกิจกรรม |
การตรวจสอบลายเซ็น
ตรวจสอบส่วนหัว X-D1Arena-Signature ก่อนประมวลผล webhook ทุกครั้ง ลายเซ็นจะคำนวณเป็น HMAC-SHA256(raw_body, webhook_secret)
สำหรับการจัดส่ง v2 ให้ใช้รหัสลับ whsec_ ที่แสดงเมื่อมีการสร้างการสมัครรับข้อมูล สำหรับการจัดส่ง v1-hashed-secret ล่วงหน้า ขั้นแรกให้คำนวณ SHA256(whsec_secret) จากข้อมูลลับดั้งเดิมนั้น และใช้การแยกย่อยเลขฐานสิบหกตัวพิมพ์เล็กที่เป็นผลลัพธ์เป็นคีย์ HMAC สร้างการสมัครสมาชิกใหม่เมื่อใช้งานได้จริงเพื่อย้ายไปยัง v2
กิจกรรมที่มีอยู่
| เหตุการณ์ | คำอธิบาย |
|---|---|
| stream.online | Streamer ได้แพร่ภาพสด |
| 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 Frenzy ก้าวไปสู่ระดับต่อไป |
| overdrive.ended | D1 Frenzy เสร็จสมบูรณ์หรือหมดอายุแล้ว |
ตัวอย่างเพย์โหลดเหตุการณ์
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
นโยบายการจัดส่งและลองใหม่
| พยายาม | ความล่าช้า | หมายเหตุ |
|---|---|---|
| ที่ 1 (เริ่มต้น) | ทันที | ส่งภายในไม่กี่วินาทีของเหตุการณ์ |
| ที่ 2 (ลองอีกครั้ง) | 30 วินาที | หากความพยายามครั้งแรกล้มเหลวหรือหมดเวลา |
| ที่ 3 (ลองอีกครั้ง) | 2 นาที | การถอยกลับแบบเอ็กซ์โปเนนเชียล |
| ที่ 4 (สุดท้าย) | 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 สำหรับการขจัดข้อมูลซ้ำซ้อน — ลองส่ง ID เดียวกันอีกครั้ง ดังนั้นให้จัดเก็บ ID ที่ประมวลผลแล้วเพื่อหลีกเลี่ยงการประมวลผลซ้ำ
- ตอบสนองอย่างรวดเร็ว ประมวลผลแบบอะซิงโครนัส — return
200 OKทันทีและจัดการตรรกะทางธุรกิจในงานเบื้องหลัง - ใช้ปลายทาง HTTPS เท่านั้น — URL ของเว็บฮุคต้องใช้ TLS การเรียกกลับ HTTP ถูกปฏิเสธ
- จัดการกับเหตุการณ์ที่ไม่รู้จักอย่างสง่างาม — อาจมีการเพิ่มประเภทเหตุการณ์ใหม่ Return
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 | ด้านล่างโปรแกรมเล่นสตรีม | มองเห็นได้เมื่อมีการสตรีมสด การ์ดแบบเต็มความกว้าง ความสูงเริ่มต้น 300px |
overlay | เหนือเครื่องเล่นวิดีโอ | มองเห็นได้เมื่อถ่ายทอดสด ตำแหน่ง/ขนาดควบคุมโดยลำแสงผ่านเครื่องมือวางตำแหน่งโอเวอร์เลย์ |
โพสต์ข้อความ API
ส่วนขยายของคุณจะได้รับข้อมูลบริบทโดยอัตโนมัติเมื่อมีการโหลด ใช้เหตุการณ์เหล่านี้:
ใช้ต้นกำเนิดพาเรนต์ D1Arena ที่แน่นอนสำหรับทุกข้อความ SDK อย่างเป็นทางการได้รับและตรวจสอบแหล่งที่มานี้จากหน้าที่ฝังโดยอัตโนมัติ
เนื่องจาก iframe ส่วนขยายมีเจตนาใช้ต้นกำเนิดแซนด์บ็อกซ์ทึบแสง โฮสต์ 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" ส่วนขยายของคุณ ไม่สามารถ เข้าถึงคุกกี้ localStorage หรือส่งคำขอการตรวจสอบสิทธิ์ไปยัง d1arena.com
- สาธารณะ HTTPS จำเป็น — URL iframe ของคุณต้องใช้ TLS และแก้ไขเป็นที่อยู่เครือข่ายสาธารณะเท่านั้น
- แหล่งที่มาที่มนุษย์สามารถอ่านได้ — ไม่มี JavaScript ที่สร้างความสับสนหรือย่อขนาดเท่านั้น ผู้ตรวจสอบจะต้องสามารถอ่านโค้ดของคุณได้
- ไม่มีการโหลดสคริปต์ภายนอก เว้นแต่จะประกาศไว้ในการส่งของคุณ ไลบรารี CDN (jQuery, Chart.js ฯลฯ) ก็ใช้ได้
- ไม่มีการกรองข้อมูล — ส่วนขยายต้องไม่ส่งข้อมูลผู้ดูไปยังบริการวิเคราะห์หรือติดตามของบุคคลที่สาม
- นโยบายเนื้อหา — ไม่มีโฆษณา เนื้อหา NSFW การขุด cryptocurrency หรือพฤติกรรมที่เป็นอันตราย
กระบวนการตรวจสอบ
| สถานะ | ความหมาย |
|---|---|
| pending | ส่งแล้ว รอการตรวจสอบจากผู้ดูแลระบบ (โดยทั่วไปจะใช้เวลา 1-3 วันทำการ) |
| approved | ได้รับการอนุมัติและมองเห็นได้ใน Extension Marketplace |
| rejected | ถูกปฏิเสธอย่างมีเหตุผล แก้ไขปัญหาแล้วส่งใหม่ |
| suspended | ถูกนำออกชั่วคราวเนื่องจากละเมิดนโยบาย ติดต่อฝ่ายสนับสนุน |
การอัปเดตเวอร์ชัน
หากต้องการอัปเดตส่วนขยายที่ได้รับอนุมัติ ให้ลบเวอร์ชันปัจจุบันและส่งเวอร์ชันใหม่พร้อมหมายเลขเวอร์ชันที่เพิ่มขึ้น เวอร์ชันใหม่ผ่านการทบทวนอีกครั้ง
บันทึกการเปลี่ยนแปลง
ติดตามการเปลี่ยนแปลง API และคุณสมบัติใหม่ เราติดตามการกำหนดเวอร์ชันเชิงความหมายและประกาศการเปลี่ยนแปลงที่สำคัญล่วงหน้าอย่างน้อย 30 วัน
- การเปิดตัว API สาธารณะครั้งแรกพร้อมการรับรองความถูกต้องของคีย์ API
- สตรีม: แสดงรายการสตรีมสด รับรายละเอียดสตรีมเมอร์ตาม Slug
- หมวดหมู่: ค้นหาและแสดงรายการหมวดหมู่เกมทั้งหมด
- ผู้ใช้: โปรไฟล์สาธารณะพร้อมสถิติการแข่งขัน คะแนน ELO และจำนวนเหรียญรางวัล
- คลิป: เรียกดูและรับรายละเอียดคลิปด้วยข้อมูลสตรีมเมอร์/ผู้สร้าง
- ทัวร์นาเมนต์: รายการ กรองตามสถานะ/ลีก ดูจำนวนผู้เข้าร่วม
- กระดานผู้นำ ELO: กระดานผู้นำระดับโลกและตามหมวดหมู่
- ลีก: รายชื่อลีกพร้อมอันดับและการแบ่งคะแนน
- D1 Frenzy: สถานะ Frenzy แบบเรียลไทม์สำหรับสตรีมเมอร์ทุกคน
- Webhooks (EventSub): กิจกรรม 12 ประเภท ได้แก่ สตรีม ช่อง ทัวร์นาเมนต์ คลิป และกิจกรรม Frenzy
- ขีดจำกัดอัตรา
ต้องการความช่วยเหลือ?
คำถามเกี่ยวกับ API? ติดต่อเรา.