Kurkite robotus, perdangas, srauto įrankius ir integraciją su D1Arena duomenimis.
Autentifikavimas
Visoms API užklausoms reikalingas API raktas, perduotas X-API-Key / Authorization: Bearer antraštėje.
Norėdami sukurti API raktą, informacijos suvestinėje eikite į Kūrėjo nustatymai. Galite turėti iki 5 raktų.
429 Too Many Requests su Retry-After antrašte.
Bazinis URL
Visi galiniai taškai grąžina JSON. Puslapiais suskaidyti galiniai taškai apima objektą meta su current_page, last_page ir total.
Srautai
| Parametras | Tipas | Aprašymas |
|---|---|---|
category_id | integer | Filtruoti pagal žaidimo / kategorijos ID |
limit | integer | Rezultatai puslapyje (numatytasis: 20) |
page | integer | Puslapio numeris |
Kategorijos
| Parametras | Tipas | Aprašymas |
|---|---|---|
search | string | Filtruokite kategorijas pagal pavadinimą |
limit | integer | Rezultatai puslapyje (numatytasis: 50) |
Vartotojai
Klipai
| Parametras | Tipas | Aprašymas |
|---|---|---|
streamer_id | integer | Filtruokite klipus pagal srautinio perdavimo naudotojo ID |
category_id | integer | Filtruoti pagal žaidimo / kategorijos ID |
limit | integer | Rezultatai puslapyje (numatytasis: 20) |
Turnyrai
| Parametras | Tipas | Aprašymas |
|---|---|---|
status | string | Filtruoti pagal būseną (pvz., open, in_progress, completed) |
league_id | integer | Filtruoti pagal lygos ID |
limit | integer | Rezultatai puslapyje (numatytasis: 20) |
ELO reitingai
| Parametras | Tipas | Aprašymas |
|---|---|---|
category_id | integer | Filtruoti pagal žaidimo / kategorijos ID |
limit | integer | Rezultatų skaičius (numatytasis: 50) |
Lygos
| Parametras | Tipas | Aprašymas |
|---|---|---|
status | string | Filtruoti pagal lygos būseną |
category_id | integer | Filtruoti pagal žaidimo / kategorijos ID |
limit | integer | Rezultatai puslapyje (numatytasis: 20) |
Klaidų atsakymai
Visos klaidos grąžina nuoseklų JSON voką. Objekte error visada yra mašininiu būdu nuskaitomas code ir žmogaus skaitomas message.
Būsenos kodai
Klaidų kodų nuoroda
| Kodas | HTTP būsena | Aprašymas |
|---|---|---|
invalid_api_key | 401 | Trūksta API rakto, jis netinkamai suformuotas arba jo nėra |
api_key_disabled | 403 | API raktas buvo atšauktas arba išjungtas |
not_found | 404 | Nepavyko rasti prašomo šaltinio |
validation_error | 422 | Vienas ar daugiau užklausos parametrų neteisingi |
rate_limited | 429 | Viršytas šio API rakto užklausų dažnumo limitas |
server_error | 500 | Vidinė serverio klaida – bandykite dar kartą arba susisiekite su palaikymo tarnyba |
Kainos ribos
API užklausos yra ribojamos pagal API raktą. Kai viršijate limitą, užklausos grąžina 429 Too Many Requests su Retry-After antrašte.
Ribos pagal pakopą
| Pakopa | Prašymai / Minutė (Numatytoji) | Max Keys |
|---|---|---|
| Starteris (nemokamai) | 60 | 5 |
| PRO | 60 | 5 |
| Galutinis | 60 | 5 |
| Partneris | 60 | 5 |
Kainos ribos antraštės
API užklausos yra ribojamos pagal API raktą. Kai viršijate limitą, užklausos grąžina 429 Too Many Requests su Retry-After antrašte.
| Antraštė | Aprašymas |
|---|---|
Retry-After | Sekundės, kurias reikia palaukti prieš bandant dar kartą (yra tik 429 atsakymuose) |
Geriausia praktika
- Cache responses locally — stream and tournament data doesn't change every second.
- Prenumeruokite webhooks, kad gautumėte įvykius realiuoju laiku, o ne apklausos galutinius taškus.
- Kai įmanoma, paketinės užklausos – naudokite filtro parametrus, kad gautumėte būtent tai, ko jums reikia per mažiau skambučių.
Webhooks (EventSub)
Užsisakykite tiesioginius pranešimus realiuoju laiku, o ne apklausą. Kai įvyksta įvykis, D1Arena siunčia HTTP POST į jūsų atgalinio skambučio URL su JSON naudingu kroviniu, pasirašytu HMAC-SHA256.
Sąranka
Sukurkite „Webhook“ prenumeratas naudodami Kūrėjo nustatymai. Kiekvienai prenumeratai reikia:
- Atgalinio skambinimo URL — Viešai pasiekiamas HTTPS galutinis taškas jūsų serveryje.
- Renginiai — Reikia užsiprenumeruoti vieną ar daugiau įvykių tipų.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Naudingos apkrovos formatas
Kiekvienas „Webhook“ pristatymas siunčia JSON turinį su tokia struktūra:
Antraštės
Kiekviename pristatyme yra šios antraštės, skirtos nukreipti ir patikrinti:
| Antraštė | Aprašymas |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Įvykio tipas (pvz., stream.online) |
X-D1Arena-Signature | HMAC-SHA256 šešioliktainė neapdorotos užklausos turinio santrauka |
X-D1Arena-Signature-Version | Pasirašymo rakto formatas: v2 dabartinėms prenumeratoms arba v1-hashed-secret senoms prenumeratoms |
X-D1Arena-Delivery-Id | Unikalus pristatymo UUID – naudokite dubliavimui pašalinti |
X-D1Arena-Timestamp | Unix laiko žyma, kada buvo išsiųstas įvykis |
Parašų tikrinimas
Visada patikrinkite X-D1Arena-Signature antraštę prieš apdorodami „webhook“. Parašas apskaičiuojamas kaip HMAC-SHA256(raw_body, webhook_secret).
Pristatymams v2 naudokite whsec_ paslaptį, rodomą sukūrus prenumeratą. Jei norite gauti išankstinį naujinimą v1-hashed-secret, pirmiausia apskaičiuokite SHA256(whsec_secret) iš tos pradinės paslapties ir naudokite gautą šešioliktainę santrauką mažosiomis raidėmis kaip HMAC raktą. Jei įmanoma, iš naujo sukurkite prenumeratą, kad pereitumėte prie v2.
Galimi įvykiai
| Renginys | Aprašymas |
|---|---|
| stream.online | Srautinis transliuotojas pradėjo tiesiogiai |
| stream.offline | Srautinė transliuotoja atsijungė |
| channel.follow | Naudotojas sekė kanalą |
| channel.subscribe | Nauja rėmėjo prenumerata kanale |
| channel.tip | Srautininkui buvo išsiųstas patarimas |
| tournament.started | Turnyro rungtynės prasidėjo |
| tournament.ended | Baigėsi turnyras |
| tournament.match.completed | Buvo užfiksuotas rungtynių rezultatas |
| clip.created | Iš tiesioginės transliacijos buvo sukurtas naujas klipas |
| overdrive.started | D1 Frenzy prasidėjo kanale |
| overdrive.level_up | D1 Frenzy pakilo į kitą lygį |
| overdrive.ended | D1 Frenzy baigtas arba pasibaigęs |
Renginio naudingos apkrovos pavyzdžiai
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Pristatymo ir pakartotinio bandymo politika
| Bandymas | Vėlavimas | Pastabos |
|---|---|---|
| 1 (pradinis) | Nedelsiant | Išsiųsta per kelias sekundes nuo įvykio |
| 2 (bandyti dar kartą) | 30 sekundžių | Jei pirmasis bandymas nepavyksta arba pasibaigia laikas |
| 3 (bandyti dar kartą) | 2 minutes | Eksponentinis atsitraukimas |
| 4 (finalinis) | 10 minučių | Paskutinis bandymas prieš pažymint kaip nepavykusį |
2xx status within 10 sekundžių. Non-2xx responses or timeouts trigger a retry. After 10 gedimų iš eilės, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Kūrėjo nustatymai.
Geriausia praktika
- Visada patikrinkite parašus prieš apdorojant naudingus krovinius, kad būtų išvengta suklastotų įvykių.
- Norėdami panaikinti dubliavimą, naudokite pristatymo ID — Bandymai pakartotinai siųsti tą patį ID, todėl saugokite apdorotus ID, kad išvengtumėte dvigubo apdorojimo.
- Greitai atsakykite, apdorokite asinchroniškai — nedelsdami grąžinkite
200 OKir tvarkykite verslo logiką fone. - Naudokite tik HTTPS galinius taškus — „Webhook“ URL turi naudoti TLS. HTTP atgaliniai skambučiai atmetami.
- Grakščiai tvarkykite nežinomus įvykius — gali būti pridėta naujų įvykių tipų. Grąžinkite
200už neatpažintus įvykius, o ne klaidą.
D1 Frenzy
„D1 Frenzy“ suaktyvina greiti patarimai ir prenumeratos, kol transliuotojas veikia tiesiogiai. Jis progresuoja per 5 lygius su didėjančiais tikslais.
GET /api/overdrive/{streamerId}
Gaukite aktyvųjį „D1 Frenzy“, skirtą streameriui. Grąžina {"active": false}, jei jo nėra.
Tiksliniai lygiai
| Lygis | Taškai |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Frenzy — Taškai: Patarimas $1 → 100; Prenumerata 500 × Pakopa. Trukmė: 5 Minutės; Atšalimas: 30 Minutės.
Plėtinio SDK
Sukurkite tinkintus skydelio ir perdangos plėtinius, kuriuos transliuotojai gali įdiegti savo kanalų puslapiuose. Plėtiniai veikia smėlio dėžės „iframe“ ir palaiko ryšį su pagrindiniu puslapiu per postMessage.
Darbo pradžia
- Sukurkite API raktą Kūrėjo nustatymai.
- Sukurkite plėtinį kaip atskirą HTML puslapį, priglobtą jūsų domene (reikalingas HTTPS).
- Pateikite jį peržiūrėti skiltyje Mano plėtiniai.
- Patvirtinus, transliuotojai gali jį įdiegti iš plėtinių prekyvietės.
Pratęsimo tipai
| Tipas | Vieta | Elgesys |
|---|---|---|
panel | Po srauto grotuvu | Matoma, kai srautas vyksta tiesiogiai. Viso pločio kortelė, numatytasis 300 pikselių aukštis. |
overlay | Per vaizdo grotuvą | Matoma gyvai. Padėtį / dydį valdo streameris per perdangos padėties nustatymo įrankį. |
postMessage API
Jūsų plėtinys automatiškai gauna kontekstinius duomenis, kai jis įkeliamas. Įgyvendinkite šiuos įvykius:
Kiekvienam pranešimui naudokite tikslią D1Arena pirminę kilmę. Oficialus SDK išveda ir patvirtina šią kilmę iš įterpimo puslapio automatiškai.
Kadangi plėtiniai iframe tyčia naudoja nepermatomą smėlio dėžės kilmę, D1Arena priegloba autentifikuoja tikslų registruotą iframe langą. Prieš priimdamas kontekstą, plėtinio kodas vis tiek turi autentifikuoti pirminį langą ir tikslią D1Arena kilmę.
1. Signalo parengtis
2. Gauti kontekstą
3. Siųsti veiksmus (neprivaloma)
Leidimų apimtys
Nurodykite, kokių duomenų reikia plėtiniui. Tikrintojai patikrina, ar jūsų kodas atitinka deklaruotus leidimus.
| Taikymo sritis | Suteikia prieigą prie |
|---|---|
read:stream | Srauto būsena, pavadinimas, kategorija |
read:viewers | Žiūrovų skaičius ir sąrašas |
read:chat | Pokalbių pranešimai (per „Pusher“ kanalą) |
read:clips | Kanalo klipai per /api/clips/{slug} |
read:tournaments | Aktyvi rungtynių informacija per /api/active-match/{id} |
read:channel | Kanalo profilis, sekėjai, tvarkaraštis |
Saugumo reikalavimai
sandbox="allow-scripts". Jūsų plėtinys negali pasiekia slapukus, vietinę saugyklą arba pateikia autentifikuotas užklausas adresu d1arena.com.
- Reikalingas viešas HTTPS — Jūsų „iframe“ URL turi naudoti TLS ir nurodyti tik viešojo tinklo adresus.
- Žmonėms skaitomas šaltinis — Jokio užmaskuoto arba tik sumažinto JavaScript. Recenzentai turi turėti galimybę perskaityti jūsų kodą.
- Išorinis scenarijus neįkeliamas nebent tai nurodyta jūsų pareiškime. CDN bibliotekos (jQuery, Chart.js ir kt.) yra tinkamos.
- Jokio duomenų išfiltravimo — Plėtiniai neturi siųsti žiūrinčiųjų duomenų į trečiosios šalies analizės ar stebėjimo paslaugas.
- Turinio politika — Jokių skelbimų, NSFW turinio, kriptovaliutų kasimo ar kenkėjiško elgesio.
Peržiūros procesas
| Būsena | Reikšmė |
|---|---|
| pending | Pateikta, laukiama administratoriaus peržiūros (paprastai 1–3 darbo dienos). |
| approved | Patvirtinta ir matoma plėtinių prekyvietėje. |
| rejected | Atmesta su priežastimi. Išspręskite problemas ir pateikite iš naujo. |
| suspended | Laikinai pašalintas dėl politikos pažeidimo. Susisiekite su palaikymo komanda. |
Versijų atnaujinimai
Norėdami atnaujinti patvirtintą plėtinį, ištrinkite dabartinę versiją ir pateikite naują su padidintu versijos numeriu. Naujoji versija vėl peržiūrima.
Pakeitimų žurnalas
Stebėkite API pakeitimus ir naujas funkcijas. Stebime semantines versijas ir pranešame apie lūžtančius pakeitimus bent prieš 30 dienų.
- Pradinis viešas API leidimas su API rakto autentifikavimu.
- Srautai: pateikite tiesioginių srautų sąrašą ir gaukite informaciją apie srautinį perdavimą pagal šliužas.
- Kategorijos: ieškokite ir išvardykite visas žaidimų kategorijas.
- Naudotojai: vieši profiliai su konkurencine statistika, ELO įvertinimu ir medalių skaičiumi.
- Klipai: naršykite ir gaukite išsamią klipo informaciją naudodami srautinio perdavimo / kūrėjo informaciją.
- Turnyrai: sudarykite sąrašą, filtruokite pagal būseną / lygą, gaukite dalyvių skaičių.
- ELO pirmaujančiųjų sąrašas: pasauliniai ir pagal kategorijas reitinguojami pirmaujančiųjų sąrašai.
- Lygos: išvardykite lygas su turnyrinėmis lentelėmis ir taškų suskirstymu.
- D1 Frenzy: bet kurio transliuotojo „Frenzy“ būsena realiuoju laiku.
- Webhooks (EventSub): 12 įvykių tipų, įskaitant srautą, kanalą, turnyrą, klipą ir Frenzy įvykius.
- Kainos ribos
Reikia pagalbos?
Turite klausimų apie API? Susisiekite su mumis.