API

Horizon Dispatch API

VTC’nin istatistiklerini sitene veya Discord botuna bağla. Salt okunur, JSON, açık CORS — widget’lar, overlay’ler ve entegrasyonlar için tasarlandı.

0sonuç

Anahtarsız herkese açık API

En basit yol: anahtar yok, boost yok, tüm VTC’ler için. ma-vtc kısmını VTC’nin kimliğiyle değiştir (sayfasının adresi /vtcs/ma-vtc). JSON, salt okunur, açık CORS, IP başına dakikada 120 istek.

GET https://hdispatch.eu/api/vtc                       kullanılabilir endpoint’lerin listesi
GET https://hdispatch.eu/api/vtc/ma-vtc/stats          üyeler, çevrimiçi, km (toplam ve ay), sonraki etkinlik, sertifika
GET https://hdispatch.eu/api/vtc/ma-vtc/online         çevrimiçi sürücüler (konumlar dahil)
GET https://hdispatch.eu/api/vtc/ma-vtc/jobs?limit=10  son teslimatlar (1 ile 50 arası, varsayılan 10)
GET https://hdispatch.eu/api/vtc/ma-vtc/events?limit=5 yaklaşan herkese açık etkinlikler (1 ile 20 arası, varsayılan 5)
GET https://hdispatch.eu/api/vtc/ma-vtc/members        kilometreye göre sıralı aktif üyeler (1 ile 200 arası, varsayılan 50), VTC herkese açık yaptıysa
GET https://hdispatch.eu/api/vtc/ma-vtc/certification  doğrulanabilir sertifika durumu
fetch('https://hdispatch.eu/api/vtc/ma-vtc/stats')
  .then((r) => r.json())
  .then((d) => console.log(d.members.online + ' en ligne · ' + d.month.km + ' km ce mois-ci'));

VTC’nin ayarlarına uyar: “üyeleri göster” kapalıysa adlar gizlenir, gelirler herkese açık değilse gelir verisi olmaz, API Ayarlar → API bölümünden tamamen kapatılabilir. Yanıtlar 5 saniye (çevrimiçi) ile 5 dakika (sertifika) arasında önbelleğe alınır. Hatalar: VTC yoksa, kara listedeyse veya API’sini kapattıysa 404 {"error":"not_found"}; sınır aşıldığında 429 {"success":false,"message":…}. Ayrıntılı veriler için aşağıdaki anahtarlı v1 API’yi kullan.

VTC’nin sitesi için widget’lar

Çevrimiçi üyeler, son seferler, ayın kilometreleri, sonraki etkinlik, alım, tam kart veya canlı mini harita. Ücretsiz, 9 dilde, açık veya koyu tema. Yapıştırmaya hazır kodlar Panel → VTC’n → Widget’lar & rozet bölümünde.

<div class="hd-widget" data-vtc="ma-vtc" data-type="online"></div>
<script src="https://hdispatch.eu/widgets/embed.js" async></script>
data-type
online · jobs · km · event · recruit · card · map
data-theme
dark · light · auto
data-lang
fr en de es it nl pl pt tr
Diğer
data-accent="ff8800" · data-limit="1..15" · data-header="0" · data-height="360" · data-game="ats" (harita)

JavaScript olmadan her widget iframe olarak da çalışır: https://hdispatch.eu/widgets/vtc/ma-vtc/online?theme=dark. Widget’lar kendiliğinden yenilenir (“çevrimiçi” için 30 sn, “alım” için 10 dakikaya kadar) ve VTC API’sini kapattıysa bir hata gösterir. Sertifika rozeti: https://hdispatch.eu/badges/vtc/ma-vtc.svg (veya .png), seçenekler ?style=flat, ?theme=light, ?lang=en, doğrulama adresi https://hdispatch.eu/verify/ma-vtc.

Hızlı başlangıç

  1. API’yi aç — 5 boost kademesinin bir parçasıdır (VTC web sitesi gibi).
  2. Herkese açık anahtarını al: Panel → Ayarlar → API. pk_ ile başlar ve güvenle paylaşılabilir.
  3. API’yi çağır: anahtarını x-api-key başlığında (veya ?key= parametresinde) gönder.
curl -H "x-api-key: pk_VOTRE_CLE" https://hdispatch.eu/api/v1/vtc

Kimlik doğrulama ve kurallar

Temel URL
https://hdispatch.eu/api/v1
Başlık
x-api-key: pk_…
Yöntemler
GET (salt okunur)
İstek sınırı
Anahtar başına dakikada 120 istek
Biçim
JSON · CORS *
Erişim
5 boost kademesi gerekli

GET https://hdispatch.eu/api/v1 endpoint listesini döndürür. Hatalar {"error":"…"} biçimindedir (aşağıya bak).

⚠️ Herkese açık anahtarını (pk_…, okuma) tracker anahtarınla (gizli, yazma) karıştırma: ikincisi bir web sayfasında asla görünmemeli. Bir VTC ayarlarından API’sini kapatabilir veya bazı alanları (gelir, üyeler) gizleyebilir.

Endpoint’ler

Bu arama için sonuç yok.
GET /api/v1/vtc

VTC bilgileri ve toplamları (üyeler, km, oluşturma tarihi…).

Örnek yanıt
{
  "id": "6600…", "name": "Horizon Dispatch", "slug": "horizon-dispatch",
  "tag": "[HDX]", "description": "…", "game": "ets2", "color": "#cfd4dc",
  "recruitmentOpen": true, "hdPartner": false, "premium": false,
  "memberCount": 42,
  "totals": { "distanceKm": 1284000, "deliveries": 3120, "revenue": 9800000 },
  "createdAt": "2025-01-08T12:00:00.000Z"
}
GET /api/v1/members?limit=1..500

VTC üyeleri, kilometreye göre sıralı (varsayılan 100).

Örnek yanıt
{
  "count": 42,
  "members": [
    { "discordId": "1234…", "name": "Marco", "avatar": "…", "role": "driver",
      "traction": false, "joinedAt": "…",
      "stats": { "distanceKm": 84210, "deliveries": 190, "revenue": 512000 } }
  ]
}
GET /api/v1/events

VTC’nin yaklaşan etkinlikleri, herkese açık ve yalnızca üyelere özel (en fazla 50).

Örnek yanıt
{
  "count": 2,
  "events": [
    { "id": "…", "title": "Convoi du dimanche", "game": "ets2", "server": "Simulation 1",
      "departureCity": "Paris", "arrivalCity": "Berlin", "plannedKm": 1050,
      "meetupAt": "…", "startAt": "…", "slots": { "total": 20, "taken": 12 },
      "going": 18, "externalUrl": "" }
  ]
}
GET /api/v1/deliveries?limit=1..200

Son teslimatlar (varsayılan 50).

Örnek yanıt
{
  "count": 50,
  "deliveries": [
    { "driverDiscordId": "…", "game": "ets2", "cargo": "Ciment", "from": "Lyon",
      "to": "Milan", "distanceKm": 480, "damagePercent": 0, "truck": "Scania S",
      "at": "…", "income": 42000 }
  ]
}
GET /api/v1/live

Çevrimiçi sürücüler (varlık < 60 sn).

Örnek yanıt
{
  "count": 3,
  "drivers": [
    { "discordId": "…", "name": "Marco", "avatar": "…", "game": "ETS2",
      "onJob": true, "cargo": "Bois", "from": "Oslo", "to": "Stockholm",
      "truck": "Volvo FH", "speed": 88, "distanceLeft": 120, "progressPct": 64 }
  ]
}
GET /api/v1/news?limit=1..100

VTC’nin herkese açık ve yayımlanmış duyuruları.

Örnek yanıt
{
  "count": 5,
  "news": [
    { "id": "…", "title": "Recrutement ouvert !", "content": "…", "coverUrl": "…",
      "pinned": true, "authorName": "Léa", "at": "…", "updatedAt": "…" }
  ]
}
GET /api/v1/partners

Kabul edilmiş ortaklıklar (ortak VTC’ler).

Örnek yanıt
{
  "count": 3,
  "partners": [
    { "id": "…", "name": "Nordic Logistics", "slug": "nordic-logistics",
      "tag": "[NL]", "logoUrl": "…", "game": "ets2", "since": "…" }
  ]
}
GET /api/v1/divisions

VTC’nin taşımacılık bölümleri.

Örnek yanıt
{
  "count": 4,
  "divisions": [
    { "id": "…", "name": "Frigo", "description": "…", "imageUrl": "…",
      "color": "#4ea1ff", "trucks": ["Scania S"], "trailers": ["Krone Cool"],
      "position": 0 }
  ]
}
GET /api/v1/gallery?limit=1..100

VTC’nin herkese açık fotoğraf galerileri (panelden yayımlanan albümler).

Örnek yanıt
{
  "count": 6,
  "galleries": [
    { "id": "…", "title": "Convoi de Noël", "description": "…",
      "images": ["https://…/1.jpg", "https://…/2.jpg"], "photoCount": 2,
      "authorName": "Léa", "discordUrl": "https://discord.com/channels/…",
      "at": "…" }
  ]
}
GET /api/v1/hd/events?limit=1..100

Horizon Dispatch etkinlikleri (genel, tüm herkese açık VTC’ler).

Örnek yanıt
{
  "count": 10,
  "events": [
    { "id": "…", "title": "Grand convoi HD", "game": "ets2", "server": "Simulation 1",
      "departureCity": "Madrid", "arrivalCity": "Lisbonne", "plannedKm": 620,
      "meetupAt": "…", "startAt": "…",
      "vtc": { "name": "Horizon Dispatch", "slug": "horizon-dispatch", "tag": "[HDX]", "logoUrl": "…" },
      "externalUrl": "" }
  ]
}

Hatalar

Kod
error
Anlamı
401
missing_api_key
Anahtar sağlanmadı.
403
invalid_api_key
Bilinmeyen anahtar.
403
boost_required
VTC’nin 5 boost kademesi yok.
403
api_disabled
VTC herkese açık API’sini kapattı.
403
members_hidden
VTC üye listesini gizliyor (/members).
429
rate_limited
İstek sınırı aşıldı (Retry-After başlığına bak).
500
server_error
Dahili hata, daha sonra tekrar dene.

Horizon Connect (OAuth 2)

Sitene “Horizon Dispatch ile giriş yap” ekle. Uygulamayı Panel → VTC’n → Ekosistem bölümünde oluştur: gizli anahtar yalnızca bir kez gösterilir.

GET  https://hdispatch.eu/connect/authorize?client_id=…&redirect_uri=…&scope=identity%20profile%20vtc&state=…
     (PKCE: S256 ile hesaplanan code_challenge ekle)
POST https://hdispatch.eu/connect/token      client_id, client_secret, code, redirect_uri (code_verifier si PKCE)
     → { "access_token": "…", "token_type": "Bearer", "expires_in": 2592000, "scope": "…" }
GET  https://hdispatch.eu/connect/userinfo   Authorization: Bearer <access_token>

Yetkilendirme kodu 5 dakika geçerlidir ve yalnızca bir kez kullanılabilir; token ise 30 gün. Kapsamlar: identity (kimlik), profile (profil), vtc (kullanıcının VTC’si).

Kopyala-yapıştır widget

Bunu sitene yapıştır ve pk_VOTRE_CLE kısmını herkese açık anahtarınla değiştir:

<div id="hd-stats">Chargement…</div>
<script>
  fetch("https://hdispatch.eu/api/v1/vtc", { headers: { "x-api-key": "pk_VOTRE_CLE" } })
    .then(function (r) { return r.json(); })
    .then(function (v) {
      document.getElementById("hd-stats").innerHTML =
        "<b>" + v.name + "</b> — " + v.memberCount + " membres · " +
        v.totals.distanceKm.toLocaleString() + " km";
    });
</script>
Anahtar almak için giriş yap