Izradite robote, slojeve, alate za strujanje i integracije s podacima D1Arena.
Autentifikacija
Svi API zahtjevi zahtijevaju API ključ proslijeđen u zaglavlju X-API-Key / Authorization: Bearer.
Da biste izradili API ključ, idite na Postavke razvojnog programera na svojoj nadzornoj ploči. Možete imati do 5 ključeva.
429 Too Many Requests sa zaglavljem Retry-After.
Osnovni URL
Sve krajnje točke vraćaju JSON. Paginirane krajnje točke uključuju objekt meta s current_page, last_page i total.
Potoci
| Parametar | Vrsta | Opis |
|---|---|---|
category_id | integer | Filtrirajte po ID-u igre/kategorije |
limit | integer | Rezultati po stranici (zadano: 20) |
page | integer | Broj stranice |
kategorije
| Parametar | Vrsta | Opis |
|---|---|---|
search | string | Filtrirajte kategorije prema nazivu |
limit | integer | Rezultati po stranici (zadano: 50) |
Korisnici
Isječci
| Parametar | Vrsta | Opis |
|---|---|---|
streamer_id | integer | Filtrirajte isječke prema korisničkom ID-u streamera |
category_id | integer | Filtrirajte po ID-u igre/kategorije |
limit | integer | Rezultati po stranici (zadano: 20) |
Turniri
| Parametar | Vrsta | Opis |
|---|---|---|
status | string | Filtriraj po statusu (npr. open, in_progress, completed) |
league_id | integer | Filtriraj po ID-u lige |
limit | integer | Rezultati po stranici (zadano: 20) |
ELO rang lista
| Parametar | Vrsta | Opis |
|---|---|---|
category_id | integer | Filtrirajte po ID-u igre/kategorije |
limit | integer | Broj rezultata (zadano: 50) |
lige
| Parametar | Vrsta | Opis |
|---|---|---|
status | string | Filtrirajte prema statusu lige |
category_id | integer | Filtrirajte po ID-u igre/kategorije |
limit | integer | Rezultati po stranici (zadano: 20) |
Odgovori na pogreške
Sve pogreške vraćaju dosljednu JSON omotnicu. Objekt error uvijek sadrži strojno čitljiv code i čovjeku čitljiv message.
Statusne šifre
Referenca kodova grešaka
| Šifra | HTTP status | Opis |
|---|---|---|
invalid_api_key | 401 | API ključ nedostaje, neispravan je ili ne postoji |
api_key_disabled | 403 | API ključ je opozvan ili onemogućen |
not_found | 404 | Zatraženi izvor nije moguće pronaći |
validation_error | 422 | Jedan ili više parametara zahtjeva su nevažeći |
rate_limited | 429 | Ograničenje stope zahtjeva premašeno za ovaj API ključ |
server_error | 500 | Interna pogreška poslužitelja — pokušajte ponovno ili kontaktirajte podršku |
Ograničenja stope
API zahtjevi ograničeni su brzinom po API ključu. Kada prekoračite ograničenje, zahtjevi vraćaju 429 Too Many Requests sa zaglavljem Retry-After.
Ograničenja prema razini
| Razina | Zahtjevi / minuta (Zadano) | Max Keys |
|---|---|---|
| starter (besplatno) | 60 | 5 |
| PRO | 60 | 5 |
| Ultimativno | 60 | 5 |
| Partner | 60 | 5 |
Zaglavlja ograničenja brzine
API zahtjevi ograničeni su brzinom po API ključu. Kada prekoračite ograničenje, zahtjevi vraćaju 429 Too Many Requests sa zaglavljem Retry-After.
| Zaglavlje | Opis |
|---|---|
Retry-After | Sekunde čekanja prije ponovnog pokušaja (prisutno samo na 429 odgovora) |
Najbolji primjeri iz prakse
- Cache responses locally — stream and tournament data doesn't change every second.
- Pretplatite se na webhooks za događaje u stvarnom vremenu umjesto anketiranja krajnjih točaka.
- Skupni zahtjevi gdje je to moguće — upotrijebite parametre filtra kako biste dobili točno ono što trebate u manje poziva.
Web-dojavnici (EventSub)
Pretplatite se na push obavijesti u stvarnom vremenu umjesto anketiranja. Kada se dogodi događaj, D1Arena šalje HTTP POST na vaš URL povratnog poziva s JSON korisnim sadržajem potpisanim s HMAC-SHA256.
Postavljanje
Stvorite pretplate na webhook u Postavke razvojnog programera. Svaka pretplata zahtijeva:
- URL povratnog poziva — Javno dostupna HTTPS krajnja točka na vašem poslužitelju.
- Događaji — Jedna ili više vrsta događaja na koje se možete pretplatiti.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Format nosivosti
Svaka isporuka web-dojavnika šalje JSON tijelo s ovom strukturom:
Zaglavlja
Svaka isporuka uključuje sljedeća zaglavlja za usmjeravanje i provjeru:
| Zaglavlje | Opis |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Vrsta događaja (npr. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 heksadecimalni sažetak neobrađenog tijela zahtjeva |
X-D1Arena-Signature-Version | Format ključa za potpisivanje: v2 za trenutne pretplate ili v1-hashed-secret za stare pretplate |
X-D1Arena-Delivery-Id | Jedinstveni UUID isporuke — koristite za deduplikaciju |
X-D1Arena-Timestamp | Unix vremenska oznaka kada je događaj poslan |
Ovjera potpisa
Uvijek provjerite zaglavlje X-D1Arena-Signature prije obrade web-dojavnika. Potpis se računa kao HMAC-SHA256(raw_body, webhook_secret).
Za v2 isporuke koristite tajnu whsec_ prikazanu prilikom kreiranja pretplate. Za isporuku v1-hashed-secret prije nadogradnje, prvo izračunajte SHA256(whsec_secret) iz te originalne tajne i upotrijebite rezultirajući heksadecimalni sažetak malim slovima kao ključ HMAC. Ponovno kreirajte pretplatu kada je to praktično za prelazak na v2.
Dostupni događaji
| događaj | Opis |
|---|---|
| stream.online | Streamer je emitirao uživo |
| stream.offline | Streamer je isključen |
| channel.follow | Korisnik je pratio kanal |
| channel.subscribe | Nova pretplata navijača na kanalu |
| channel.tip | Dojava je poslana streameru |
| tournament.started | Počela je utakmica turnira |
| tournament.ended | Turnir je završen |
| tournament.match.completed | Zapisan je rezultat utakmice |
| clip.created | Novi isječak stvoren je iz prijenosa uživo |
| overdrive.started | D1 Frenzy je započeo na kanalu |
| overdrive.level_up | D1 Frenzy je prešao na sljedeću razinu |
| overdrive.ended | D1 Bjesnilo završeno ili isteklo |
Primjeri nosivosti događaja
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Politika isporuke i ponovnog pokušaja
| pokušaj | Kašnjenje | Bilješke |
|---|---|---|
| 1. (početno) | Odmah | Poslano unutar nekoliko sekundi od događaja |
| 2. (ponovni pokušaj) | 30 sekundi | Ako prvi pokušaj ne uspije ili istekne vrijeme |
| 3. (ponovni pokušaj) | 2 minute | Eksponencijalno odstupanje |
| 4. (finale) | 10 minuta | Zadnji pokušaj prije označavanja kao neuspjelog |
2xx status within 10 sekundi. Non-2xx responses or timeouts trigger a retry. After 10 uzastopnih neuspjeha, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Postavke razvojnog programera.
Najbolji primjeri iz prakse
- Uvijek provjerite potpise prije obrade korisnih podataka kako bi se spriječili lažirani događaji.
- Koristite Delivery-Id za deduplikaciju — ponovni pokušaji šalju isti ID, stoga pohranite obrađene ID-ove kako biste izbjegli dvostruku obradu.
- Brzo odgovaranje, proces asinkrono — odmah vrati
200 OKi obradi poslovnu logiku u pozadinskom poslu. - Koristite samo HTTPS krajnje točke — URL-ovi webdojavnika moraju koristiti TLS. HTTP povratni pozivi su odbijeni.
- Postupajte elegantno s nepoznatim događajima — mogu se dodati nove vrste događaja. Vrati
200za neprepoznate događaje umjesto pogreške.
D1 Frenzy
D1 Frenzy pokreću brzi savjeti i pretplate dok je streamer uživo. Napreduje kroz 5 razina s povećanjem ciljeva.
GET /api/overdrive/{streamerId}
Nabavite aktivni D1 Frenzy za streamer. Vraća {"active": false} ako ništa.
Ciljevi razine
| Razina | Bodovi |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Frenzy — Bodovi: Savjet $1 → 100; Pretplata 500 × Razina. Trajanje: 5 minuta; Hlađenje: 30 minuta.
SDK proširenja
Izgradite prilagođenu ploču i preklapanje proširenja koja streameri mogu instalirati na svoje stranice kanala. Proširenja se pokreću u iframeovima u sandboxu i komuniciraju sa stranicom domaćina putem postMessage.
Početak rada
- Stvorite API ključ u Postavke razvojnog programera.
- Izgradite svoje proširenje kao samostalnu HTML stranicu hostiranu na vašoj domeni (potreban je HTTPS).
- Pošaljite ga na pregled u odjeljak Moje ekstenzije.
- Nakon odobrenja, streameri ga mogu instalirati s Extension Marketplacea.
Vrste ekstenzija
| Vrsta | Lokacija | Ponašanje |
|---|---|---|
panel | Ispod stream playera | Vidljivo kada je stream uživo. Kartica pune širine, zadana visina od 300 piksela. |
overlay | Preko video playera | Vidljivo kada je uživo. Položaj/veličinu kontrolira streamer putem alata za pozicioniranje preklapanja. |
API za postMessage
Vaše proširenje automatski prima podatke o kontekstu kada se učitava. Provedite ove događaje:
Koristite točno D1Arena nadređeno podrijetlo za svaku poruku. Službeni SDK automatski izvodi i potvrđuje ovo podrijetlo sa stranice za ugrađivanje.
Budući da iframes proširenja namjerno koriste neprozirno porijeklo sandboxa, host D1Arena provjerava autentičnost točno registriranog iframe prozora. Kod proširenja i dalje mora autentificirati nadređeni prozor i točno D1Arena podrijetlo prije prihvaćanja konteksta.
1. Signalna spremnost
2. Primite kontekst
3. Pošalji akcije (nije obavezno)
Opseg dopuštenja
Navedite koje podatke vaše proširenje treba. Recenzenti potvrđuju da vaš kod odgovara vašim deklariranim dopuštenjima.
| Opseg | Omogućuje pristup |
|---|---|
read:stream | Status streama, naslov, kategorija |
read:viewers | Broj gledatelja i popis |
read:chat | Poruke chata (putem Pusher kanala) |
read:clips | Isječci kanala putem /api/clips/{slug} |
read:tournaments | Informacije o aktivnom meču putem /api/active-match/{id} |
read:channel | Profil kanala, pratitelji, raspored |
Sigurnosni zahtjevi
sandbox="allow-scripts". Vaše proširenje ne može pristupa kolačićima, lokalnoj pohrani ili postavlja autentificirane zahtjeve d1arena.com.
- Potreban javni HTTPS — Vaš iframe URL mora koristiti TLS i razriješiti se samo na javne mrežne adrese.
- Čovjeku čitljiv izvor — Nema maskiranog ili umanjenog JavaScripta. Recenzenti moraju moći pročitati vaš kod.
- Nema učitavanja vanjske skripte osim ako nije navedeno u vašem podnesku. CDN biblioteke (jQuery, Chart.js, itd.) su u redu.
- Nema eksfiltracije podataka — Proširenja ne smiju slati podatke gledatelja uslugama treće strane za analizu ili praćenje.
- Politika sadržaja — Bez oglasa, NSFW sadržaja, rudarenja kriptovaluta ili zlonamjernog ponašanja.
Pregled procesa
| Status | Značenje |
|---|---|
| pending | Poslano, čeka se pregled administratora (obično 1-3 radna dana). |
| approved | Odobreno i vidljivo na Extension Marketplaceu. |
| rejected | Odbijen s razlogom. Riješite probleme i ponovno pošaljite. |
| suspended | Privremeno uklonjeno zbog kršenja pravila. Kontaktirajte podršku. |
Ažuriranja verzije
Da biste ažurirali odobreno proširenje, izbrišite trenutnu verziju i pošaljite novu s povećanim brojem verzije. Nova verzija ponovno prolazi recenziju.
Dnevnik promjena
Pratite promjene API-ja i nove značajke. Pratimo semantičku verziju i najavljujemo prijelomne promjene najmanje 30 dana unaprijed.
- Početno javno izdanje API-ja s provjerom autentičnosti API ključa.
- Streamovi: Popis streamova uživo, dobivanje pojedinosti o streamerima po slugu.
- Kategorije: pretražite i navedite sve kategorije igara.
- Korisnici: Javni profili sa statistikom natjecanja, ELO ocjenom i brojem medalja.
- Isječci: pregledajte i dohvatite pojedinosti o isječku s informacijama o streameru/kreatoru.
- Turniri: popis, filtriranje po statusu/ligi, dobivanje broja sudionika.
- ELO Leaderboard: Globalne i po kategorijama rangirane ljestvice.
- Lige: Navedite lige s poretkom i raspodjelom bodova.
- D1 Frenzy: status Frenzy u stvarnom vremenu za bilo kojeg streamera.
- Web-dojavnici (EventSub): 12 vrsta događaja uključujući stream, kanal, turnir, isječak i Frenzy događaje.
- Ograničenja stope
Trebate pomoć?
Pitanja o API? Kontaktirajte nas.