Luo botteja, peittokuvia, suoratoistotyökaluja ja integraatioita D1Arena-datan kanssa.
Todennus
Kaikki API-pyynnöt vaativat sovellusliittymäavaimen, joka välitetään X-API-Key / Authorization: Bearer-otsikossa.
Voit luoda API-avaimen siirtymällä hallintapaneelin osoitteeseen Kehittäjäasetukset. Sinulla voi olla enintään 5 avainta.
429 Too Many Requests otsikolla Retry-After.
Perus-URL-osoite
Kaikki päätepisteet palauttavat JSON-tiedoston. Sivutetut päätepisteet sisältävät objektin meta, joissa on current_page, last_page ja total.
Streamit
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
category_id | integer | Suodata pelin/luokkatunnuksen mukaan |
limit | integer | Tuloksia sivua kohden (oletus: 20) |
page | integer | Sivunumero |
Luokat
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
search | string | Suodata luokat nimen mukaan |
limit | integer | Tuloksia sivua kohden (oletus: 50) |
Käyttäjät
Leikkeet
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
streamer_id | integer | Suodata leikkeet striimaajan käyttäjätunnuksen mukaan |
category_id | integer | Suodata pelin/luokkatunnuksen mukaan |
limit | integer | Tuloksia sivua kohden (oletus: 20) |
Turnaukset
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
status | string | Suodata tilan mukaan (esim. open, in_progress, completed) |
league_id | integer | Suodata liigatunnuksen mukaan |
limit | integer | Tuloksia sivua kohden (oletus: 20) |
ELO Rankings
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
category_id | integer | Suodata pelin/luokkatunnuksen mukaan |
limit | integer | Tulosten määrä (oletus: 50) |
Liigot
| Parametri | Kirjoita | Kuvaus |
|---|---|---|
status | string | Suodata liigan tilan mukaan |
category_id | integer | Suodata pelin/luokkatunnuksen mukaan |
limit | integer | Tuloksia sivua kohden (oletus: 20) |
Virhevastaukset
Kaikki virheet palauttavat johdonmukaisen JSON-kirjekuoren. Objekti error sisältää aina koneellisesti luettavan code ja ihmisen luettavan message.
Tilakoodit
Virhekoodien viite
| Koodi | HTTP-tila | Kuvaus |
|---|---|---|
invalid_api_key | 401 | API-avain puuttuu, on väärin muotoiltu tai sitä ei ole olemassa |
api_key_disabled | 403 | API-avain on peruutettu tai poistettu käytöstä |
not_found | 404 | Pyydettyä resurssia ei löytynyt |
validation_error | 422 | Yksi tai useampi pyyntöparametri on virheellinen |
rate_limited | 429 | Tämän API-avaimen pyyntönopeusraja ylitetty |
server_error | 500 | Sisäinen palvelinvirhe – yritä uudelleen tai ota yhteyttä tukeen |
Rate Limits
API-pyyntöjen nopeus on rajoitettu API-avaimella. Kun ylität rajan, pyynnöt palauttavat 429 Too Many Requests otsikolla Retry-After.
Rajat tasoittain
| Taso | Pyynnöt / Minuutti (Oletus) | Max Keys |
|---|---|---|
| Aloittaja (ilmainen) | 60 | 5 |
| PRO | 60 | 5 |
| Lopullinen | 60 | 5 |
| Kumppani | 60 | 5 |
Rate Limit otsikot
API-pyyntöjen nopeus on rajoitettu API-avaimella. Kun ylität rajan, pyynnöt palauttavat 429 Too Many Requests otsikolla Retry-After.
| Otsikko | Kuvaus |
|---|---|
Retry-After | Odotettava sekunti ennen uudelleenyritystä (näkyy vain 429 vastauksessa) |
Parhaat käytännöt
- Cache responses locally — stream and tournament data doesn't change every second.
- Tilaa webhooks saadaksesi reaaliaikaisia tapahtumia kyselyn päätepisteiden sijaan.
- Eräpyynnöt mahdollisuuksien mukaan – käytä suodatinparametreja saadaksesi juuri tarvitsemasi vähemmällä puhelulla.
Webhooks (EventSub)
Tilaa reaaliaikaiset push-ilmoitukset äänestyksen sijaan. Kun tapahtuma tapahtuu, D1Arena lähettää HTTP POST:n takaisinsoitto-URL-osoitteeseesi JSON-hyötykuormalla, joka on allekirjoitettu HMAC-SHA256:lla.
Asennus
Luo webhook-tilauksia kohteessa Kehittäjäasetukset. Jokainen tilaus edellyttää:
- Takaisinsoitto-URL-osoite — Julkisesti käytettävissä oleva HTTPS-päätepiste palvelimellasi.
- Tapahtumat — Tilattava yksi tai useampi tapahtumatyyppi.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Hyötykuorman muoto
Jokainen webhook-toimitus lähettää JSON-rungon, jolla on seuraava rakenne:
Otsikot
Jokainen toimitus sisältää seuraavat otsikot reititystä ja vahvistusta varten:
| Otsikko | Kuvaus |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Tapahtuman tyyppi (esim. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 heksaditiiviste raakapyynnön rungosta |
X-D1Arena-Signature-Version | Allekirjoitusavaimen muoto: v2 nykyisille tilauksille tai v1-hashed-secret vanhoille tilauksille |
X-D1Arena-Delivery-Id | Ainutlaatuinen toimituksen UUID - käytä duplikoinnin poistamiseen |
X-D1Arena-Timestamp | Unix-aikaleima tapahtuman lähetyshetkestä |
Allekirjoitusten tarkistaminen
Tarkista aina X-D1Arena-Signature-otsikko ennen webhookin käsittelemistä. Allekirjoitus lasketaan muodossa HMAC-SHA256(raw_body, webhook_secret).
Käytä v2-toimituksissa whsec_-salaisuutta, joka näkyy tilauksen luomisen yhteydessä. Jos kyseessä on päivitystä edeltävä toimitus v1-hashed-secret, laske ensin SHA256(whsec_secret) alkuperäisestä salaisuudesta ja käytä tuloksena saatua pienikokoista heksadesimaattista tiivistelmää HMAC-avaimena. Luo tilaus uudelleen, kun se on mahdollista siirtyäksesi osoitteeseen v2.
Saatavilla olevat tapahtumat
| Tapahtuma | Kuvaus |
|---|---|
| stream.online | Striimaaja aloitti suoran lähetyksen |
| stream.offline | Striimaaja meni offline-tilaan |
| channel.follow | Käyttäjä seurasi kanavaa |
| channel.subscribe | Uusi tukitilaus kanavalla |
| channel.tip | Vinkki lähetettiin streamerille |
| tournament.started | Turnausottelu on alkanut |
| tournament.ended | Turnaus on päättynyt |
| tournament.match.completed | Ottelun tulos kirjattiin |
| clip.created | Uusi klippi luotiin suoratoistosta |
| overdrive.started | D1 Frenzy alkoi kanavalla |
| overdrive.level_up | D1 Frenzy eteni seuraavalle tasolle |
| overdrive.ended | D1 Frenzy valmis tai vanhentunut |
Esimerkkejä tapahtumien hyötykuormasta
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Toimitus- ja uudelleenyrityskäytäntö
| Yritä | Viive | Huomautuksia |
|---|---|---|
| 1. (alkuperäinen) | Välitön | Lähetetään muutamassa sekunnissa tapahtumasta |
| 2. (yritä uudelleen) | 30 sekuntia | Jos ensimmäinen yritys epäonnistuu tai aikakatkaisu |
| 3. (yritä uudelleen) | 2 minuuttia | Eksponentiaalinen takaisku |
| 4. (finaali) | 10 minuuttia | Viimeinen yritys ennen epäonnistuneeksi merkitsemistä |
2xx status within 10 sekuntia. Non-2xx responses or timeouts trigger a retry. After 10 peräkkäistä vikaa, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Kehittäjäasetukset.
Parhaat käytännöt
- Tarkista aina allekirjoitukset ennen hyötykuormien käsittelyä väärennettyjen tapahtumien estämiseksi.
- Käytä Delivery-Id-tunnusta päällekkäisyyksien poistamiseen — uudelleenyritykset lähettävät saman tunnuksen, joten tallenna käsitellyt tunnukset välttääksesi kaksinkertaisen käsittelyn.
- Vastaa nopeasti, käsittele asynkronisesti — palauta
200 OKvälittömästi ja käsittele liiketoimintalogiikkaa taustatyössä. - Käytä vain HTTPS-päätepisteitä — webhookin URL-osoitteiden on käytettävä TLS:ää. HTTP-takaisinkutsut hylätään.
- Käsittele tuntemattomat tapahtumat sulavasti — uusia tapahtumatyyppejä voidaan lisätä. Palauta
200tunnistamattomista tapahtumista virheiden sijaan.
D1 Vimma
Nopeat vinkit ja tilaukset laukaisevat D1 Frenzyn striimauksen aikana. Se etenee 5 tason läpi kasvavien tavoitteiden kanssa.
GET /api/overdrive/{streamerId}
Hanki aktiivinen D1 Frenzy streameriin. Palauttaa {"active": false}, jos ei yhtään.
Tasotavoitteet
| Taso | Pisteet |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Vimma — Pisteet: Vihje $1 → 100; Tilaus 500 × Taso. Kesto: 5 Minuutit; Jäähdytys: 30 Minuutit.
Laajennus SDK
Luo mukautettuja paneeli- ja peittolaajennuksia, jotka striimaajat voivat asentaa kanavasivuilleen. Laajennukset toimivat hiekkalaatikko-iframe-kehyksissä ja kommunikoivat isäntäsivun kanssa postMessage:n kautta.
Aloitus
- Luo API-avain kohteessa Kehittäjäasetukset.
- Rakenna laajennuksesi erilliseksi HTML-sivuksi, jota isännöi verkkotunnuksesi (HTTPS vaaditaan).
- Lähetä se tarkistettavaksi Omat laajennukset-osioon.
- Kun se on hyväksytty, streamaajat voivat asentaa sen Extension Marketplacesta.
Laajennustyypit
| Kirjoita | Sijainti | Käyttäytyminen |
|---|---|---|
panel | Stream-soittimen alapuolella | Näkyy, kun suoratoisto on käynnissä. Täysleveä kortti, oletuskorkeus 300 pikseliä. |
overlay | Videosoittimen yli | Näkyy livenä. Streameri ohjaa paikkaa/kokoa peittokuvan paikannustyökalun avulla. |
postMessage API
Laajennuksesi vastaanottaa kontekstitiedot automaattisesti latautuessaan. Toteuta nämä tapahtumat:
Käytä jokaisessa viestissä tarkkaa D1Arena vanhempien alkuperää. Virallinen SDK johtaa ja vahvistaa tämän alkuperän upotussivulta automaattisesti.
Koska laajennuksen iframe-kehykset käyttävät tarkoituksella läpinäkymätöntä hiekkalaatikko-alkuperää, D1Arena-isäntä todentaa tarkan rekisteröidyn iframe-ikkunan. Laajennuskoodin täytyy silti todentaa ylätason ikkuna ja tarkka D1Arena alkuperä ennen kontekstin hyväksymistä.
1. Signaalivalmius
2. Vastaanota konteksti
3. Lähetä toiminnot (valinnainen)
Lupa-alueet
Ilmoita, mitä tietoja laajennuksesi tarvitsee. Tarkastajat varmistavat, että koodisi vastaa ilmoitettuja käyttöoikeuksiasi.
| Laajuus | Antaa pääsyn kohteeseen |
|---|---|
read:stream | Striimin tila, otsikko, luokka |
read:viewers | Katsojamäärä ja luettelo |
read:chat | Chat-viestit (Pusher-kanavan kautta) |
read:clips | Kanavaleikkeet kautta /api/clips/{slug} |
read:tournaments | Aktiiviset ottelutiedot /api/active-match/{id} |
read:channel | Kanavan profiili, seuraajat, aikataulu |
Turvallisuusvaatimukset
sandbox="allow-scripts". Laajennuksesi ei voi käyttää evästeitä, paikallista tallennustilaa tai lähettää todennettuja pyyntöjä osoitteeseen d1arena.com.
- Julkinen HTTPS vaaditaan — Iframe-URL-osoitteesi tulee käyttää muotoa TLS, ja sen tulee perustua vain julkisiin verkko-osoitteisiin.
- Ihmisen luettava lähde — Ei hämärtynyttä tai vain minimoitua JavaScriptiä. Tarkistajien on voitava lukea koodisi.
- Ulkoista komentosarjaa ei ladata ellei lähetyksessäsi ole ilmoitettu. CDN-kirjastot (jQuery, Chart.js jne.) ovat kunnossa.
- Ei tietojen suodatusta — Laajennukset eivät saa lähettää katsojatietoja kolmannen osapuolen analytiikka- tai seurantapalveluihin.
- Sisältökäytäntö — Ei mainoksia, NSFW-sisältöä, kryptovaluuttojen louhintaa tai haitallista toimintaa.
Tarkastusprosessi
| Tila | Merkitys |
|---|---|
| pending | Lähetetty, odottaa järjestelmänvalvojan tarkistusta (yleensä 1–3 arkipäivää). |
| approved | Hyväksytty ja näkyvissä Extension Marketplacessa. |
| rejected | Hylätty syystä. Korjaa ongelmat ja lähetä uudelleen. |
| suspended | Poistettu väliaikaisesti käytäntörikkomuksesta. Ota yhteyttä tukeen. |
Versiopäivitykset
Jos haluat päivittää hyväksytyn laajennuksen, poista nykyinen versio ja lähetä uusi versionumerolla. Uusi versio käy läpi uudelleentarkistuksen.
Muutosloki
Seuraa API-muutoksia ja uusia ominaisuuksia. Seuraamme semanttista versiointia ja ilmoitamme rikkoutuvista muutoksista vähintään 30 päivää etukäteen.
- Ensimmäinen julkinen API-julkaisu API-avaimella.
- Striimit: Listaa live-lähetyksiä ja hanki striimaustiedot slugin mukaan.
- Luokat: Hae ja luettele kaikki peliluokat.
- Käyttäjät: Julkiset profiilit, joissa on kilpailutilastot, ELO-luokitukset ja mitalimäärät.
- Leikkeet: Selaa ja hae leikkeen tietoja striimaus-/tekijätietojen avulla.
- Turnaukset: Listaa, suodata tilan/liigan mukaan, hae osallistujamäärät.
- ELO Leaderboard: maailmanlaajuiset ja luokkakohtaiset tulostaulukot.
- Liigat: luettele liigat sarjataulukoineen ja pisteerittelyineen.
- D1 Frenzy: Reaaliaikainen Frenzy-tila kaikille striimauksille.
- Webhooks (EventSub): 12 tapahtumatyyppiä, mukaan lukien stream, kanava, turnaus, leike ja Frenzy-tapahtumat.
- Rate Limits
Tarvitsetko apua?
Onko sinulla kysyttävää API:sta? Ota yhteyttä.