Δημιουργήστε bots, επικαλύψεις, εργαλεία ροής και ενσωματώσεις με δεδομένα D1Arena.
Έλεγχος ταυτότητας
Όλα τα αιτήματα API απαιτούν ένα κλειδί API που διαβιβάζεται στην κεφαλίδα X-API-Key / Authorization: Bearer.
Για να δημιουργήσετε ένα κλειδί API, μεταβείτε στο Ρυθμίσεις προγραμματιστή στον πίνακα ελέγχου σας. Μπορείτε να έχετε έως και 5 κλειδιά.
429 Too Many Requests με κεφαλίδα Retry-After.
Βασική διεύθυνση URL
Όλα τα τελικά σημεία επιστρέφουν JSON. Τα σελιδοποιημένα τελικά σημεία περιλαμβάνουν ένα αντικείμενο meta με current_page, last_page και total.
Ρεύματα
| Παράμετρος | Τύπος | Περιγραφή |
|---|---|---|
category_id | integer | Φιλτράρισμα κατά αναγνωριστικό παιχνιδιού/κατηγορίας |
limit | integer | Αποτελέσματα ανά σελίδα (προεπιλογή: 20) |
page | integer | Αριθμός σελίδας |
Κατηγορίες
| Παράμετρος | Τύπος | Περιγραφή |
|---|---|---|
search | string | Φιλτράρισμα κατηγοριών με βάση το όνομα |
limit | integer | Αποτελέσματα ανά σελίδα (προεπιλογή: 50) |
Χρήστες
Κλιπ
| Παράμετρος | Τύπος | Περιγραφή |
|---|---|---|
streamer_id | integer | Φιλτράρετε τα κλιπ κατά το αναγνωριστικό χρήστη του streamer |
category_id | integer | Φιλτράρισμα κατά αναγνωριστικό παιχνιδιού/κατηγορίας |
limit | integer | Αποτελέσματα ανά σελίδα (προεπιλογή: 20) |
Τουρνουά
| Παράμετρος | Τύπος | Περιγραφή |
|---|---|---|
status | string | Φιλτράρισμα κατά κατάσταση (π.χ. open, in_progress, completed) |
league_id | integer | Φιλτράρισμα κατά αναγνωριστικό πρωταθλήματος |
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.
Όρια κατά Βαθμίδα
| Επίπεδο | Αιτήματα / Λεπτό (Προεπιλογή) | Max Keys |
|---|---|---|
| Μίζα (Δωρεάν) | 60 | 5 |
| PRO | 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 για συμβάντα σε πραγματικό χρόνο αντί για τα τελικά σημεία δημοσκοπήσεων.
- Μαζικά αιτήματα όπου είναι δυνατόν — χρησιμοποιήστε παραμέτρους φίλτρου για να λάβετε ακριβώς αυτό που χρειάζεστε σε λιγότερες κλήσεις.
Webhooks (EventSub)
Εγγραφείτε σε ειδοποιήσεις push σε πραγματικό χρόνο αντί για ψηφοφορίες. Όταν συμβαίνει ένα συμβάν, το 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.
Μορφή ωφέλιμου φορτίου
Κάθε παράδοση webhook στέλνει ένα σώμα JSON με αυτήν τη δομή:
Κεφαλίδες
Κάθε παράδοση περιλαμβάνει τις ακόλουθες κεφαλίδες για δρομολόγηση και επαλήθευση:
| Κεφαλίδα | Περιγραφή |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Τύπος συμβάντος (π.χ. stream.online) |
X-D1Arena-Signature | HMAC-SHA256 hex digest του ακατέργαστου σώματος αιτήματος |
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 | Ένας streamer βγήκε εκτός σύνδεσης |
| channel.follow | Ένας χρήστης ακολούθησε ένα κανάλι |
| channel.subscribe | Νέα εγγραφή υποστηρικτών σε κανάλι |
| channel.tip | Στάλθηκε μια συμβουλή σε έναν streamer |
| 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 Ρυθμίσεις προγραμματιστή.
Βέλτιστες Πρακτικές
- Ελέγχετε πάντα τις υπογραφές πριν από την επεξεργασία ωφέλιμων φορτίων για την αποφυγή πλαστών συμβάντων.
- Χρησιμοποιήστε το αναγνωριστικό παράδοσης για την αφαίρεση των αντιγράφων — επαναλήψεις στέλνουν το ίδιο αναγνωριστικό, επομένως αποθηκεύστε τα επεξεργασμένα αναγνωριστικά για να αποφύγετε τη διπλή επεξεργασία.
- Απαντήστε γρήγορα, επεξεργαστείτε ασύγχρονα — επιστρέψτε το
200 OKαμέσως και χειριστείτε την επιχειρηματική λογική σε μια εργασία στο παρασκήνιο. - Χρησιμοποιήστε μόνο τελικά σημεία HTTPS — Οι διευθύνσεις URL webhook πρέπει να χρησιμοποιούν TLS. Οι επανακλήσεις HTTP απορρίπτονται.
- Χειριστείτε άγνωστα γεγονότα με χάρη — μπορούν να προστεθούν νέοι τύποι συμβάντων. Επιστρέψτε
200για μη αναγνωρισμένα συμβάντα αντί για σφάλματα.
Δ1 φρενίτιδα
Το D1 Frenzy ενεργοποιείται από γρήγορες συμβουλές και συνδρομές ενώ ένας streamer είναι ζωντανός. Προχωρά σε 5 επίπεδα με αυξανόμενους στόχους.
GET /api/overdrive/{streamerId}
Αποκτήστε το ενεργό D1 Frenzy για streamer. Επιστρέφει {"active": false} εάν δεν υπάρχει.
Στόχοι επιπέδου
| Επίπεδο | Πόντοι |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
Δ1 φρενίτιδα — Πόντοι: Συμβουλή $1 → 100; Συνδρομή 500 × Επίπεδο. Διάρκεια: 5 Λεπτά; Cooldown: 30 Λεπτά.
Επέκταση SDK
Δημιουργήστε προσαρμοσμένες επεκτάσεις πλαισίου και επικάλυψης που μπορούν να εγκαταστήσουν οι streamers στις σελίδες του καναλιού τους. Οι επεκτάσεις εκτελούνται σε iframe με περιβάλλον δοκιμών και επικοινωνούν με την κεντρική σελίδα μέσω postMessage.
Ξεκινώντας
- Δημιουργήστε ένα κλειδί API στο Ρυθμίσεις προγραμματιστή.
- Δημιουργήστε την επέκτασή σας ως αυτόνομη σελίδα HTML που φιλοξενείται στον τομέα σας (απαιτείται HTTPS).
- Υποβάλετέ το για έλεγχο στην ενότητα Οι επεκτάσεις μου.
- Μόλις εγκριθεί, οι streamers μπορούν να το εγκαταστήσουν από το Extension Marketplace.
Τύποι επέκτασης
| Τύπος | Τοποθεσία | Συμπεριφορά |
|---|---|---|
panel | Κάτω από το πρόγραμμα αναπαραγωγής ροής | Ορατό όταν η ροή είναι ζωντανή. Κάρτα πλήρους πλάτους, προεπιλεγμένο ύψος 300 px. |
overlay | Πάνω από το πρόγραμμα αναπαραγωγής βίντεο | Ορατό όταν ζωντανά. Θέση/μέγεθος ελέγχεται από το streamer μέσω του εργαλείου τοποθέτησης επικάλυψης. |
postMessage API
Η επέκτασή σας λαμβάνει αυτόματα δεδομένα περιβάλλοντος κατά τη φόρτωσή της. Υλοποιήστε αυτές τις εκδηλώσεις:
Χρησιμοποιήστε την ακριβή D1Arena γονική προέλευση για κάθε μήνυμα. Η επίσημη SDK αντλεί και επικυρώνει αυτόματα αυτήν την προέλευση από τη σελίδα ενσωμάτωσης.
Επειδή τα iframe επέκτασης χρησιμοποιούν σκόπιμα μια αδιαφανή προέλευση sandbox, ο κεντρικός υπολογιστής 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". Η επέκτασή σας δεν μπορεί έχει πρόσβαση σε cookie, localStorage ή υποβάλλει πιστοποιημένα αιτήματα στο d1arena.com.
- Απαιτείται δημόσιο HTTPS — Η διεύθυνση URL του iframe πρέπει να χρησιμοποιεί TLS και να επιλύεται μόνο σε διευθύνσεις δημόσιου δικτύου.
- Αναγνώσιμη από τον άνθρωπο πηγή — Χωρίς ασαφή ή ελαχιστοποιημένη JavaScript μόνο. Οι αναθεωρητές πρέπει να μπορούν να διαβάσουν τον κώδικά σας.
- Δεν υπάρχει εξωτερική φόρτωση σεναρίου εκτός αν δηλωθεί στην υποβολή σας. Οι βιβλιοθήκες CDN (jQuery, Chart.js, κ.λπ.) είναι καλές.
- Καμία εξαγωγή δεδομένων — Οι επεκτάσεις δεν πρέπει να στέλνουν δεδομένα θεατών σε υπηρεσίες ανάλυσης ή παρακολούθησης τρίτων.
- Πολιτική περιεχομένου — Χωρίς διαφημίσεις, περιεχόμενο NSFW, εξόρυξη κρυπτονομισμάτων ή κακόβουλη συμπεριφορά.
Διαδικασία αναθεώρησης
| Κατάσταση | Σημασία |
|---|---|
| pending | Υποβλήθηκε, εν αναμονή ελέγχου από τον διαχειριστή (συνήθως 1-3 εργάσιμες ημέρες). |
| approved | Εγκρίθηκε και είναι ορατή στο Extension Marketplace. |
| rejected | Απορρίφθηκε με λόγο. Διορθώστε προβλήματα και υποβάλετε ξανά. |
| suspended | Καταργήθηκε προσωρινά λόγω παράβασης πολιτικής. Επικοινωνήστε με την υποστήριξη. |
Ενημερώσεις έκδοσης
Για να ενημερώσετε μια εγκεκριμένη επέκταση, διαγράψτε την τρέχουσα έκδοση και υποβάλετε μια νέα με αυξημένο αριθμό έκδοσης. Η νέα έκδοση περνάει ξανά από έλεγχο.
Καταγραφή αλλαγών
Παρακολούθηση αλλαγών API και νέων δυνατοτήτων. Ακολουθούμε τη σημασιολογική έκδοση και ανακοινώνουμε τις αλλαγές που πραγματοποιούνται τουλάχιστον 30 ημέρες νωρίτερα.
- Αρχική δημόσια κυκλοφορία API με έλεγχο ταυτότητας κλειδιού API.
- Ροές: Καταχωρίστε ζωντανές ροές, λάβετε λεπτομέρειες για τη ροή με γυμνοσάλιαγκες.
- Κατηγορίες: Αναζήτηση και λίστα όλων των κατηγοριών παιχνιδιών.
- Χρήστες: Δημόσια προφίλ με ανταγωνιστικά στατιστικά, βαθμολογία ELO και πλήθος μεταλλίων.
- Κλιπ: Περιηγηθείτε και ανακτήστε τις λεπτομέρειες του κλιπ με πληροφορίες ροής/δημιουργού.
- Τουρνουά: Λίστα, φιλτράρισμα κατά κατάσταση/πρωτάθλημα, λήψη αριθμού συμμετεχόντων.
- ELO Leaderboard: Πίνακες κατάταξης παγκοσμίως και ανά κατηγορία.
- Πρωταθλήματα: Καταχωρίστε πρωταθλήματα με βαθμολογίες και αναλύσεις πόντων.
- D1 Frenzy: Κατάσταση Frenzy σε πραγματικό χρόνο για κάθε streamer.
- Webhooks (EventSub): 12 τύποι συμβάντων, συμπεριλαμβανομένων των συμβάντων ροής, καναλιού, τουρνουά, κλιπ και Frenzy.
- Όρια ποσοστού
Χρειάζεστε βοήθεια;
Έχετε ερωτήσεις σχετικά με το API; Επικοινωνήστε μαζί μας.