REST endpoint-i

Base URL: https://stats-api.ds2.app/api/v1 — svi endpoint-i zahtevaju Bearer token i vraćaju JSON.

Meta

GET/me
Vraća informacije o nalogu: plan, rate limit, lista dozvoljenih takmičenja.

Takmičenja

GET/competitions
Lista svih takmičenja na koja imaš pristup.
GET/competitions/{id}/standings
Tabela takmičenja sa pozicijama, bodovima i diferencijom. Autoritativno iz DScore-a.
GET/competitions/{id}/schedule
Utakmice takmičenja. Parametri: time=upcoming|past|all (default upcoming), limit, round.
GET/competitions/{id}/teams
Timovi u trenutnoj sezoni sa klubom i logom.

Mečevi

GET/matches/{id}
Metadata meča: timovi, rezultat, dvorana, sudije, linkovi.
GET/matches/{id}/box-score
Box score po igraču (Indeks/PIR + šut statistika) + team totals + shot chart koordinate.
GET/matches/{id}/play-by-play
Hronološki events — tip, igrač, period, clock, x/y za šuteve.

Igrači

GET/players/{id}
Profil igrača, per-match stats, career totals, career records po EBR-u, shot chart.

WebSocket auth

POST/broadcasting/auth
Pusher-kompatibilan signed auth za private channel subscription. Koriste ga Echo/Pusher SDK-ovi automatski.

Primer: ticker za takmičenje

bash
# 1. Dobij upcoming utakmice
curl "https://stats-api.ds2.app/api/v1/competitions/4/schedule?time=upcoming&limit=10" \
  -H "Authorization: Bearer YOUR_TOKEN"

# 2. Za svaku, subscribe na private-match.{id} (WebSocket)
# 3. Primeni update-ove na UI bez polling-a

Response format

Svi odgovori su obmotani u { data: ... }. Liste su direktno udata (nizu), ili paginated sa data.data kao nizom unutra.

json
{
  "data": {
    "teams": [
      { "position": 1, "name": "KK Mega Super", "wins": 19, "losses": 2, "points": 40 },
      { "position": 2, "name": "KK Dynamic BG", "wins": 18, "losses": 3, "points": 39 }
    ]
  }
}

Verzionisanje

V1 je stabilan. Breaking izmene (refaktor response shape-a, preimenovanje polja) idu u novu verziju /api/v2 sa deprecation najavom minimum 90 dana unapred. Nove opcije i polja mogu biti dodate u V1 bez breaking promene.