Izdelajte bote, prekrivke, orodja za pretakanje in integracije s podatki D1Arena.
Preverjanje pristnosti
Vse zahteve API zahtevajo ključ API, posredovan v glavi X-API-Key / Authorization: Bearer.
Če želite ustvariti ključ API, pojdite na Nastavitve razvijalca na nadzorni plošči. Lahko imate do 5 ključev.
429 Too Many Requests z glavo Retry-After.
Osnovni URL
Vse končne točke vrnejo JSON. Paginirane končne točke vključujejo objekt meta z current_page, last_page in total.
Tokovi
| Parameter | Vrsta | Opis |
|---|---|---|
category_id | integer | Filtriraj po ID-ju igre/kategorije |
limit | integer | Rezultati na stran (privzeto: 20) |
page | integer | Številka strani |
kategorije
| Parameter | Vrsta | Opis |
|---|---|---|
search | string | Filtrirajte kategorije po imenu |
limit | integer | Rezultati na stran (privzeto: 50) |
Uporabniki
Posnetki
| Parameter | Vrsta | Opis |
|---|---|---|
streamer_id | integer | Filtrirajte posnetke po ID-ju uporabnika streamerja |
category_id | integer | Filtriraj po ID-ju igre/kategorije |
limit | integer | Rezultati na stran (privzeto: 20) |
Turnirji
| Parameter | Vrsta | Opis |
|---|---|---|
status | string | Filtriraj po stanju (npr. open, in_progress, completed) |
league_id | integer | Filtriraj po ID-ju lige |
limit | integer | Rezultati na stran (privzeto: 20) |
Lestvica ELO
| Parameter | Vrsta | Opis |
|---|---|---|
category_id | integer | Filtriraj po ID-ju igre/kategorije |
limit | integer | Število rezultatov (privzeto: 50) |
Lige
| Parameter | Vrsta | Opis |
|---|---|---|
status | string | Filtriraj po statusu lige |
category_id | integer | Filtriraj po ID-ju igre/kategorije |
limit | integer | Rezultati na stran (privzeto: 20) |
Odzivi na napake
Vse napake vrnejo skladno ovojnico JSON. Objekt error vedno vsebuje strojno berljiv code in človeku berljiv message.
Statusne kode
Referenca kod napak
| Koda | Status HTTP | Opis |
|---|---|---|
invalid_api_key | 401 | Ključ API manjka, je napačno oblikovan ali ne obstaja |
api_key_disabled | 403 | Ključ API je bil preklican ali onemogočen |
not_found | 404 | Zahtevanega vira ni bilo mogoče najti |
validation_error | 422 | Eden ali več parametrov zahteve je neveljavnih |
rate_limited | 429 | Omejitev števila zahtev je presežena za ta ključ API |
server_error | 500 | Notranja napaka strežnika — poskusite znova ali se obrnite na podporo |
Omejitve hitrosti
Zahteve API so glede na ključ API omejene s hitrostjo. Ko presežete omejitev, zahteve vrnejo 429 Too Many Requests z glavo Retry-After.
Omejitve glede na stopnjo
| Stopnja | Zahtevki / minuta (Privzeto) | Max Keys |
|---|---|---|
| Zaganjalnik (brezplačno) | 60 | 5 |
| PRO | 60 | 5 |
| Ultimativno | 60 | 5 |
| Partner | 60 | 5 |
Glave omejitev hitrosti
Zahteve API so glede na ključ API omejene s hitrostjo. Ko presežete omejitev, zahteve vrnejo 429 Too Many Requests z glavo Retry-After.
| Glava | Opis |
|---|---|
Retry-After | Nekaj sekund čakanja pred ponovnim poskusom (prisotno samo pri 429 odgovorih) |
Najboljše prakse
- Cache responses locally — stream and tournament data doesn't change every second.
- Naročite se na webhooks za dogodke v realnem času namesto anketiranja končnih točk.
- Paketne zahteve, kjer je to mogoče — uporabite parametre filtra, da dobite točno tisto, kar potrebujete, v manj klicih.
Webhooks (EventSub)
Namesto glasovanja se naročite na sprotna potisna obvestila. Ko pride do dogodka, D1Arena pošlje HTTP POST na vaš URL za povratni klic s obremenitvijo JSON, podpisano s HMAC-SHA256.
Nastavitev
Ustvarite naročnine na webhook v Nastavitve razvijalca. Vsaka naročnina zahteva:
- URL povratnega klica — Javno dostopna končna točka HTTPS na vašem strežniku.
- Dogodki — Ena ali več vrst dogodkov, na katere se lahko naročite.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Oblika koristnega tovora
Vsaka dostava webhooka pošlje telo JSON s to strukturo:
Glave
Vsaka dobava vključuje naslednje glave za usmerjanje in preverjanje:
| Glava | Opis |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Vrsta dogodka (npr. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 šestnajstiški izvleček neobdelanega telesa zahteve |
X-D1Arena-Signature-Version | Oblika podpisnega ključa: v2 za trenutne naročnine ali v1-hashed-secret za starejše naročnine |
X-D1Arena-Delivery-Id | Enolični UUID dostave — uporabite za deduplikacijo |
X-D1Arena-Timestamp | Časovni žig Unix, kdaj je bil dogodek poslan |
Preverjanje podpisov
Pred obdelavo webhooka vedno preverite glavo X-D1Arena-Signature. Podpis je izračunan kot HMAC-SHA256(raw_body, webhook_secret).
Za dostave v2 uporabite skrivnost whsec_, prikazano ob ustvarjanju naročnine. Za dostavo v1-hashed-secret pred nadgradnjo najprej izračunajte SHA256(whsec_secret) iz te prvotne skrivnosti in uporabite dobljeni šestnajstiški povzetek z malimi črkami kot ključ HMAC. Znova ustvarite naročnino, ko je to praktično, da se premaknete na v2.
Razpoložljivi dogodki
| Dogodek | Opis |
|---|---|
| stream.online | Pretočni predvajalnik je bil predvajan v živo |
| stream.offline | Pretočni predvajalnik je bil brez povezave |
| channel.follow | Uporabnik je sledil kanalu |
| channel.subscribe | Nova naročnina navijača na kanal |
| channel.tip | Namig je bil poslan strimerju |
| tournament.started | Tekma turnirja se je začela |
| tournament.ended | Turnir se je zaključil |
| tournament.match.completed | Zabeležen je bil rezultat tekme |
| clip.created | Iz pretoka v živo je bil ustvarjen nov posnetek |
| overdrive.started | D1 Frenzy se je začel na kanalu |
| overdrive.level_up | D1 Frenzy je napredoval na naslednjo stopnjo |
| overdrive.ended | D1 Norost je končana ali potekla |
Primeri obremenitve dogodkov
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Politika dostave in ponovnega poskusa
| Poskus | Zamuda | Opombe |
|---|---|---|
| 1. (začetno) | Takoj | Poslano v nekaj sekundah po dogodku |
| 2. (ponovni poskus) | 30 sekund | Če prvi poskus ne uspe ali poteče |
| 3. (ponovni poskus) | 2 minuti | Eksponentni povratek |
| 4. (končno) | 10 minut | Zadnji poskus pred označevanjem kot neuspešnim |
2xx status within 10 sekund. Non-2xx responses or timeouts trigger a retry. After 10 zaporednih napak, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Nastavitve razvijalca.
Najboljše prakse
- Vedno preverite podpise pred obdelavo uporabnih obremenitev, da preprečite lažne dogodke.
- Za deduplikacijo uporabite Delivery-Id — ponovni poskusi pošljejo isti ID, zato shranite obdelane ID-je, da se izognete dvojni obdelavi.
- Hiter odziv, obdelava asinhrona — vrne
200 OKtakoj in obravnava poslovno logiko v opravilu v ozadju. - Uporabljajte samo končne točke HTTPS — URL-ji webhook morajo uporabljati TLS. Povratni klici HTTP so zavrnjeni.
- Uglajeno ravnajte z neznanimi dogodki — se lahko dodajo nove vrste dogodkov. Vrni
200za neprepoznane dogodke namesto napake.
D1 Norost
D1 Frenzy sprožijo hitri nasveti in naročnine, medtem ko pretočni predvajalnik predvaja v živo. Napreduje skozi 5 stopenj z naraščajočimi cilji.
GET /api/overdrive/{streamerId}
Pridobite aktivni D1 Frenzy za streamer. Vrne {"active": false}, če nič.
Ciljne ravni
| Raven | Točke |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Norost — Točke: Namig $1 → 100; Naročnina 500 × Stopnja. Trajanje: 5 minute; Ohladitev: 30 minute.
SDK razširitve
Zgradite ploščo po meri in prekrivne razširitve, ki jih lahko pretakalci namestijo na svoje strani kanala. Razširitve se izvajajo v okvirjih iframe v peskovniku in komunicirajo z gostiteljsko stranjo prek postMessage.
Kako začeti
- Ustvarite ključ API v Nastavitve razvijalca.
- Zgradite svojo razširitev kot samostojno stran HTML, ki gostuje v vaši domeni (potreben je HTTPS).
- Pošljite ga v pregled v razdelku Moje razširitve.
- Ko je odobren, ga lahko pretakalci namestijo iz Extension Marketplace.
Vrste razširitev
| Vrsta | Lokacija | Vedenje |
|---|---|---|
panel | Pod predvajalnikom toka | Vidno, ko je tok v živo. Kartica polne širine, privzeta višina 300 slikovnih pik. |
overlay | Preko video predvajalnika | Vidno v živo. Položaj/velikost, ki jo nadzira streamer prek orodja za pozicioniranje prekrivanja. |
postMessage API
Vaša razširitev samodejno prejme kontekstne podatke, ko se naloži. Izvedite te dogodke:
Za vsako sporočilo uporabite natančen nadrejeni izvor D1Arena. Uradni SDK samodejno izpelje in potrdi ta izvor s strani za vdelavo.
Ker iframe razširitve namenoma uporabljajo neprozoren izvor peskovnika, gostitelj D1Arena preveri pristnost natančno registriranega okna iframe. Koda razširitve mora še vedno preverjati pristnost nadrejenega okna in natančnega izvora D1Arena, preden sprejme kontekst.
1. Signalna pripravljenost
2. Prejemanje konteksta
3. Pošlji dejanja (neobvezno)
Obseg dovoljenj
Navedite, katere podatke potrebuje vaša razširitev. Pregledovalci preverijo, ali se vaša koda ujema z vašimi prijavljenimi dovoljenji.
| Področje uporabe | Omogoči dostop do |
|---|---|
read:stream | Stanje toka, naslov, kategorija |
read:viewers | Število in seznam gledalcev |
read:chat | Sporočila klepeta (prek kanala Pusher) |
read:clips | Posnetki kanala prek /api/clips/{slug} |
read:tournaments | Informacije o aktivnem ujemanju prek /api/active-match/{id} |
read:channel | Profil kanala, sledilci, urnik |
Varnostne zahteve
sandbox="allow-scripts". Vaša razširitev ne more dostopa do piškotkov, localStorage ali pošilja overjene zahteve na d1arena.com.
- Potreben je javni HTTPS — Vaš URL iframe mora uporabljati TLS in se mora razrešiti samo na javne omrežne naslove.
- Človeku berljiv vir — Brez zamegljenega ali pomanjšanega JavaScripta. Pregledovalci morajo znati prebrati vašo kodo.
- Brez nalaganja zunanjega skripta razen če je navedeno v vaši predložitvi. Knjižnice CDN (jQuery, Chart.js itd.) so v redu.
- Brez ekstrakcije podatkov — Razširitve ne smejo pošiljati podatkov o gledalcih storitvam za analizo ali sledenje tretjih oseb.
- Politika vsebine — Brez oglasov, vsebine NSFW, rudarjenja kriptovalut ali zlonamernega vedenja.
Postopek pregleda
| Stanje | Pomen |
|---|---|
| pending | Poslano, čaka na skrbniški pregled (običajno 1-3 delovne dni). |
| approved | Odobreno in vidno na tržnici razširitev. |
| rejected | Zavrnjeno z razlogom. Odpravite težave in znova pošljite. |
| suspended | Začasno odstranjen zaradi kršitve pravilnika. Obrnite se na podporo. |
Posodobitve različic
Če želite posodobiti odobreno razširitev, izbrišite trenutno različico in pošljite novo s povečano številko različice. Nova različica gre ponovno v pregled.
Dnevnik sprememb
Sledite spremembam API-ja in novim funkcijam. Spremljamo semantično različico in objavimo pomembne spremembe vsaj 30 dni vnaprej.
- Začetna javna izdaja API-ja s preverjanjem pristnosti ključa API-ja.
- Tokovi: Seznam tokov v živo, pridobite podrobnosti o pretakalnikih glede na polža.
- Kategorije: Iskanje in seznam vseh kategorij iger.
- Uporabniki: javni profili s konkurenčno statistiko, oceno ELO in številom medalj.
- Posnetki: Prebrskajte in pridobite podrobnosti posnetkov z informacijami o pretakalniku/ustvarjalcu.
- Turnirji: Seznam, filtriranje po statusu/ligi, pridobivanje števila udeležencev.
- ELO Lestvica najboljših: Globalne lestvice in lestvice najboljših po kategorijah.
- Lige: seznam lig z lestvico in razčlenitvijo točk.
- D1 Frenzy: Status Frenzy v realnem času za katerega koli pretakalca.
- Webhooks (EventSub): 12 vrst dogodkov, vključno s tokovi, kanali, turnirji, izrezki in dogodki Frenzy.
- Omejitve hitrosti
Potrebujete pomoč?
Imate vprašanja o API? Kontaktirajte nas.