D1Arena verileriyle botlar, katmanlar, yayın araçları ve entegrasyonlar oluşturun.
Kimlik doğrulama
Tüm API istekleri, X-API-Key / Authorization: Bearer başlığında aktarılan bir API anahtarı gerektirir.
Bir API anahtarı oluşturmak için kontrol panelinizde Geliştirici Ayarları adresine gidin. En fazla 5 anahtarınız olabilir.
429 Too Many Requests başlığını Retry-After başlığıyla döndürür.
Temel URL
Tüm uç noktalar JSON'u döndürür. Sayfalandırılmış uç noktalar current_page, last_page ve total içeren bir meta nesnesi içerir.
Akışlar
| Parametre | Tip | Açıklama |
|---|---|---|
category_id | integer | Oyun/kategori kimliğine göre filtrele |
limit | integer | Sayfa başına sonuçlar (varsayılan: 20) |
page | integer | Sayfa numarası |
Kategoriler
| Parametre | Tip | Açıklama |
|---|---|---|
search | string | Kategorileri ada göre filtrele |
limit | integer | Sayfa başına sonuçlar (varsayılan: 50) |
Kullanıcılar
Klipler
| Parametre | Tip | Açıklama |
|---|---|---|
streamer_id | integer | Klipleri yayıncının kullanıcı kimliğine göre filtreleyin |
category_id | integer | Oyun/kategori kimliğine göre filtrele |
limit | integer | Sayfa başına sonuçlar (varsayılan: 20) |
Turnuvalar
| Parametre | Tip | Açıklama |
|---|---|---|
status | string | Duruma göre filtrele (ör. open, in_progress, completed) |
league_id | integer | Lig kimliğine göre filtrele |
limit | integer | Sayfa başına sonuçlar (varsayılan: 20) |
ELO Sıralamaları
| Parametre | Tip | Açıklama |
|---|---|---|
category_id | integer | Oyun/kategori kimliğine göre filtrele |
limit | integer | Sonuç sayısı (varsayılan: 50) |
Ligler
| Parametre | Tip | Açıklama |
|---|---|---|
status | string | Lig durumuna göre filtrele |
category_id | integer | Oyun/kategori kimliğine göre filtrele |
limit | integer | Sayfa başına sonuçlar (varsayılan: 20) |
Hata Yanıtları
Tüm hatalar tutarlı bir JSON zarfı döndürür. error nesnesi her zaman makine tarafından okunabilen bir code ve insan tarafından okunabilen bir message içerir.
Durum Kodları
Hata Kodları Referansı
| Kod | HTTP Durumu | Açıklama |
|---|---|---|
invalid_api_key | 401 | API anahtarı eksik, hatalı biçimlendirilmiş veya mevcut değil |
api_key_disabled | 403 | API anahtarı iptal edildi veya devre dışı bırakıldı |
not_found | 404 | İstenilen kaynak bulunamadı |
validation_error | 422 | Bir veya daha fazla istek parametresi geçersiz |
rate_limited | 429 | Bu API anahtarı için istek hızı sınırı aşıldı |
server_error | 500 | Dahili sunucu hatası — lütfen tekrar deneyin veya destek ekibiyle iletişime geçin |
Hız Limitleri
API istekleri, API anahtarı başına hız sınırlıdır. Sınırı aştığınızda, istekler 429 Too Many Requests başlığını Retry-After başlığıyla döndürür.
Seviyeye Göre Sınırlar
| Seviye | İstek / Dakika (Varsayılan) | Maksimum Tuş Sayısı |
|---|---|---|
| Başlangıç (Ücretsiz) | 60 | 5 |
| PRO | 60 | 5 |
| Nihai | 60 | 5 |
| Ortak | 60 | 5 |
Hız Sınırı Başlıkları
API istekleri, API anahtarı başına hız sınırlıdır. Sınırı aştığınızda, istekler 429 Too Many Requests başlığını Retry-After başlığıyla döndürür.
| Başlık | Açıklama |
|---|---|
Retry-After | Yeniden denemeden önce beklenecek saniyeler (yalnızca 429 yanıtta mevcuttur) |
En İyi Uygulamalar
- Cache responses locally — stream and tournament data doesn't change every second.
- Uç noktaları yoklamak yerine gerçek zamanlı olaylar için webhooks'ye abone olun.
- Mümkün olduğunda toplu istekler — daha az aramayla tam olarak ihtiyacınız olanı elde etmek için filtre parametrelerini kullanın.
Web kancaları (EventSub)
Oylama yerine gerçek zamanlı anlık bildirimlere abone olun. Bir olay meydana geldiğinde D1Arena, geri çağırma URL'nize HMAC-SHA256 ile imzalanmış bir JSON verisi içeren bir HTTP POST gönderir.
Kurulum
Geliştirici Ayarları'te webhook abonelikleri oluşturun. Her abonelik şunları gerektirir:
- Geri arama URL'si — Sunucunuzdaki herkesin erişebildiği bir HTTPS uç noktası.
- Etkinlikler — Abone olunacak bir veya daha fazla etkinlik türü.
You'll receive a whsec_ signing secret upon creation. Store it securely — it's shown only once.
Yük Formatı
Her webhook teslimi şu yapıya sahip bir JSON gövdesi gönderir:
Başlıklar
Her teslimat, yönlendirme ve doğrulama için aşağıdaki başlıkları içerir:
| Başlık | Açıklama |
|---|---|
Content-Type | application/json |
X-D1Arena-Event | Etkinlik türü (ör. stream.online) |
X-D1Arena-Signature | Ham istek gövdesinin HMAC-SHA256 onaltılık özeti |
X-D1Arena-Signature-Version | İmza anahtarı biçimi: Mevcut abonelikler için v2 veya eski abonelikler için v1-hashed-secret |
X-D1Arena-Delivery-Id | Benzersiz teslimat UUID'si — tekilleştirme için kullanın |
X-D1Arena-Timestamp | Olayın gönderildiği zamanın Unix zaman damgası |
İmzaların Doğrulanması
Bir web kancasını işlemeden önce daima X-D1Arena-Signature başlığını doğrulayın. İmza HMAC-SHA256(raw_body, webhook_secret) olarak hesaplanır.
v2 teslimatları için abonelik oluşturulduğunda gösterilen whsec_ sırrını kullanın. Yükseltme öncesi v1-hashed-secret teslimatı için, önce orijinal gizli diziden SHA256(whsec_secret) hesaplayın ve elde edilen küçük harfli onaltılık özeti HMAC anahtarı olarak kullanın. v2'ye geçmek mümkün olduğunda aboneliği yeniden oluşturun.
Mevcut Etkinlikler
| Etkinlik | Açıklama |
|---|---|
| stream.online | Bir yayıncı canlı yayına başladı |
| stream.offline | Bir yayıncı çevrimdışı oldu |
| channel.follow | Bir kullanıcı bir kanalı takip etti |
| channel.subscribe | Bir kanala yeni destekçi aboneliği |
| channel.tip | Bir yayıncıya ipucu gönderildi |
| tournament.started | Turnuva maçı başladı |
| tournament.ended | Bir turnuva sonuçlandı |
| tournament.match.completed | Bir maç sonucu kaydedildi |
| clip.created | Canlı yayından yeni bir klip oluşturuldu |
| overdrive.started | D1 Frenzy bir kanalda başladı |
| overdrive.level_up | D1 Frenzy bir sonraki seviyeye ilerledi |
| overdrive.ended | D1 Frenzy tamamlandı veya süresi doldu |
Olay Yükü Örnekleri
stream.online
stream.offline
channel.follow
channel.tip
tournament.match.completed
clip.created
Teslimat ve Yeniden Deneme Politikası
| deneme | Gecikme | Notlar |
|---|---|---|
| 1. (ilk) | Hemen | Etkinlikten birkaç saniye sonra gönderildi |
| 2. (yeniden dene) | 30 saniye | İlk deneme başarısız olursa veya zaman aşımına uğrarsa |
| 3. (yeniden dene) | 2 dakika | Üstel geri çekilme |
| 4. (final) | 10 dakika | Başarısız olarak işaretlemeden önceki son deneme |
2xx status within 10 saniye. Non-2xx responses or timeouts trigger a retry. After 10 ardışık başarısızlık, the subscription is automatically disabled. You'll receive an email notification and can re-enable it in Geliştirici Ayarları.
En İyi Uygulamalar
- İmzaları her zaman doğrulayın Sahte olayları önlemek için yükleri işlemeden önce.
- Tekilleştirme için Teslimat Kimliğini kullanın — yeniden denemeler aynı kimliği gönderir; bu nedenle, çift işlemeyi önlemek için işlenmiş kimlikleri saklayın.
- Hızlı yanıt verin, eşzamansız işleyin — hemen return
200 OKve iş mantığını bir arka plan işinde ele alın. - Yalnızca HTTPS uç noktalarını kullanın — webhook URL'leri TLS kullanmalıdır. HTTP geri aramaları reddedilir.
- Bilinmeyen olayları zarif bir şekilde ele alın — yeni etkinlik türleri eklenebilir. Tanınmayan olaylar için hata yerine
200değerini döndürün.
D1 Çılgınlığı
D1 Frenzy, bir yayıncı canlı yayındayken hızlı ipuçları ve aboneliklerle tetiklenir. Artan hedeflerle 5 seviye boyunca ilerlemektedir.
GET /api/overdrive/{streamerId}
Bir yayıncı için aktif D1 Frenzy'yi edinin. Hiçbiri yoksa {"active": false} değerini döndürür.
Seviye Hedefleri
| Seviye | Puanlar |
|---|---|
| 1 | 100 |
| 2 | 250 |
| 3 | 500 |
| 4 | 1,000 |
| 5 | 2,000 |
D1 Çılgınlığı — Puanlar: İpucu $1 → 100; Abonelik 500 × Seviye. Süre: 5 dakika; Bekleme süresi: 30 dakika.
Uzantı SDK'sı
Yayıncıların kanal sayfalarına yükleyebilecekleri özel panel ve yer paylaşımı uzantıları oluşturun. Uzantılar korumalı alan iframe'lerinde çalışır ve ana bilgisayar sayfasıyla postMessage aracılığıyla iletişim kurar.
Başlarken
- Geliştirici Ayarları'te bir API anahtarı oluşturun.
- Uzantınızı alanınızda barındırılan bağımsız bir HTML sayfası olarak oluşturun (HTTPS gereklidir).
- Uzantılarım bölümünde incelenmek üzere gönderin.
- Onaylandıktan sonra yayıncılar bunu Extension Marketplace'ten yükleyebilir.
Uzantı Türleri
| Tip | Konum | Davranış |
|---|---|---|
panel | Akış oynatıcısının altında | Akış canlı olduğunda görünür. Tam genişlikte kart, 300 piksel varsayılan yükseklik. |
overlay | Video oynatıcının üzerinde | Canlıyken görünür. Konum/boyut, kaplama konumlandırma aracı aracılığıyla flama tarafından kontrol edilir. |
postMessage API'si
Uzantınız yüklendiğinde bağlam verilerini otomatik olarak alır. Bu olayları uygulayın:
Her mesaj için tam D1Arena ana kaynağını kullanın. Resmi SDK bu kaynağı otomatik olarak yerleştirme sayfasından türetir ve doğrular.
Uzantı iframe'leri kasıtlı olarak opak bir sanal alan kaynağı kullandığından, D1Arena ana bilgisayarı tam olarak kayıtlı iframe penceresinin kimliğini doğrular. Uzantı kodunun, bağlamı kabul etmeden önce yine de ana pencerenin kimliğini ve tam D1Arena kaynağını doğrulaması gerekir.
1. Sinyal hazırlığı
2. İçeriği alın
3. Eylemleri gönder (isteğe bağlı)
İzin Kapsamları
Uzantınızın hangi verilere ihtiyacı olduğunu bildirin. Gözden geçirenler kodunuzun beyan edilen izinlerinizle eşleştiğini doğrular.
| Kapsam | Erişim Veriyor |
|---|---|
read:stream | Akış durumu, başlık, kategori |
read:viewers | İzleyici sayısı ve listesi |
read:chat | Sohbet mesajları (Pusher kanalı aracılığıyla) |
read:clips | Kanal klipleri /api/clips/{slug} aracılığıyla |
read:tournaments | /api/active-match/{id} aracılığıyla aktif maç bilgisi |
read:channel | Kanal profili, takipçiler, program |
Güvenlik Gereksinimleri
sandbox="allow-scripts" ile bir korumalı alan iframe içinde çalışır. yapamam uzantınız çerezlere, localStorage'a erişiyor veya d1arena.com'a kimliği doğrulanmış isteklerde bulunuyor.
- Herkese açık HTTPS gerekli — iframe URL'niz TLS kullanmalı ve yalnızca genel ağ adreslerine çözümlenmelidir.
- İnsan tarafından okunabilen kaynak — Karmaşıklaştırılmış veya yalnızca küçültülmüş JavaScript yok. Gözden geçirenlerin kodunuzu okuyabilmesi gerekir.
- Harici komut dosyası yüklemesi yok başvurunuzda belirtilmediği sürece. CDN kütüphaneleri (jQuery, Chart.js, vb.) gayet iyi.
- Veri sızıntısı yok — Uzantılar, izleyici verilerini üçüncü taraf analizlere veya izleme hizmetlerine göndermemelidir.
- İçerik politikası — Reklam yok, NSFW içeriği, kripto para birimi madenciliği veya kötü niyetli davranış yok.
İnceleme Süreci
| Durum | Anlamı |
|---|---|
| pending | Gönderildi, yöneticinin incelemesi bekleniyor (genellikle 1-3 iş günü). |
| approved | Onaylandı ve Extension Marketplace'te görünür. |
| rejected | Gerekçeyle reddedildi. Sorunları düzeltip yeniden gönderin. |
| suspended | Politika ihlali nedeniyle geçici olarak kaldırıldı. Desteğe başvurun. |
Sürüm Güncellemeleri
Onaylanmış bir uzantıyı güncellemek için mevcut sürümü silin ve artırılmış sürüm numarasına sahip yeni bir uzantı gönderin. Yeni sürüm tekrar incelemeye alınır.
Değişiklik günlüğü
API değişikliklerini ve yeni özellikleri izleyin. Anlamsal versiyonlamayı takip ediyoruz ve son değişiklikleri en az 30 gün önceden duyuruyoruz.
- API anahtarı kimlik doğrulamasıyla ilk genel API sürümü.
- Yayınlar: Canlı yayınları listeleyin, yayıncı ayrıntılarını ayrıntılı olarak öğrenin.
- Kategoriler: Tüm oyun kategorilerini arayın ve listeleyin.
- Kullanıcılar: Rekabetçi istatistikler, ELO derecelendirmesi ve madalya sayılarını içeren herkese açık profiller.
- Klipler: Yayıncı/içerik oluşturucu bilgileriyle birlikte klip ayrıntılarına göz atın ve alın.
- Turnuvalar: Listeleyin, duruma/lige göre filtreleyin, katılımcı sayılarını alın.
- ELO Lider Tablosu: Küresel ve kategoriye göre sıralanmış lider tabloları.
- Ligler: Ligleri sıralamalar ve puan dökümleri ile listeleyin.
- D1 Çılgınlığı: Her yayıncı için gerçek zamanlı Çılgınlık durumu.
- Webhook'lar (EventSub): Yayın, kanal, turnuva, klip ve Frenzy etkinlikleri dahil 12 etkinlik türü.
- Hız Limitleri
Yardıma mı ihtiyacınız var?
API hakkında sorularınız mı var? Bize ulaşın.