Başlarken

Geçiş Rehberi

SteamApis v1'den v2'ye geç. Güncellenmiş kimlik doğrulama, yanıt envelope'u, Steam kullanıcı alan adları ve çok daha geniş bir endpoint yüzeyi.

v1'den v2'ye geçiş

Bu rehber, SteamApis API v1'den v2'ye yükseltirken yapman gereken değişiklikleri kapsar. v2 yeni kategoriler ekler (Hesap, Market Data), Steam kullanıcı ve uygulama endpoint'lerini yeniden düzenler ve standart bir yanıt envelope'u tanıtır.

Kimlik Doğrulama

v1, API key'i genellikle api_key veya key adıyla query parameter olarak gönderirdi:

GET /steam/profile/76561198038526790?api_key=YOUR_KEY

v2, API key'i x-api-key request header'ı (önerilir) ya da ?key= query parameter'ı (hâlâ desteklenir) ile gönderir:

index.js
fetch('https://api.steamapis.com/v2/steam/users/76561198038526790', {
  headers: { 'x-api-key': 'YOUR_KEY' }
})

Header'ı kullanmanı öneririz çünkü key; sunucu logları, tarayıcı geçmişi veya referer header'larında görünmez.

Yanıt envelope'u

v1 endpoint'leri veriyi en üst seviyede doğrudan döndürürdü:

{
  "steamid": "76561198038526790",
  "personaname": "PEPZ"
}

v2 her yanıtı standart bir envelope içinde sarar. Kesin şekil, endpoint'in tek bir kaynak mı yoksa sayfalı bir liste mi döndürdüğüne bağlıdır:

Tek kaynak
{
  "success": true,
  "result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
Sayfalı liste
{
  "success": true,
  "results": [ { /* ... */ } ],
  "cursor": "6789abcdef012345",
  "hasMore": true
}

Hatalar aynı envelope'u success: false ile kullanır:

Hata
{
  "success": false,
  "error": { "name": "NOT_FOUND", "message": "User not found", "meta": {} }
}

Veriye erişmek için en üst seviyeyi doğrudan okumak yerine data.result (tek kaynak) veya data.results (liste) kullan.

Birkaç erken v2 endpoint dokümantasyonu hâlâ result yerine eski response anahtarına atıfta bulunuyor. Bunu drift olarak değerlendir — otorite envelope'lar { success, result } / { success, results, cursor, hasMore }.

Steam kullanıcı alan yeniden adlandırmaları

v2 kullanıcı endpoint'i aynı Steam verisini döndürür, ancak camelCase alan adları ve iç içe avatar objesiyle. Kullanıcı yanıtlarını parse ediyorsan tiplerini güncelle:

v1 alanıv2 alanıNotlar
steamidsteamIDYeniden adlandırıldı.
personanamenicknameYeniden adlandırıldı.
profileurlurlYeniden adlandırıldı.
personastatepersonaStatecamelCase.
personastateflagspersonaStateFlagscamelCase.
primaryclanidprimaryGroupIDYeniden adlandırıldı.
timecreatedcreatedTimestampYeniden adlandırıldı.
loccountrycodecountryCodeYeniden adlandırıldı.
commentpermission (number)allowsComments (boolean)Tip değişikliği.
communityvisibilitystate (enum)visible (boolean)Boolean'a indirgendi.
avatar, avatarmedium, avatarfull, avatarhashavatar.small, avatar.medium, avatar.large, avatar.hashDüz alanlar iç içe bir avatar objesine taşındı.
profilestate—Kaldırıldı.
—lastLogOffTimestampYeni.

Steam ID parametresi

v1'de kullanıcı endpoint'leri SteamID64 (17 haneli sayısal ID) gerektirirdi. v2'de steamid parametresi birden fazla Steam ID formatını kabul eder — SteamID64, SteamID, SteamID3 — ve API bunları otomatik olarak çözer.

Endpoint eşleme

Aşağıdaki tablolar her v1 endpoint'ini kategorilere göre gruplanmış v2 karşılığına eşler. "v2'de yeni" olarak işaretli girişlerin v1 öncülü yoktur.

Hesap

v1 Endpointv2 EndpointNotlar
—GET /v2/accountv2'de yeni. Bakiye, overage yapılandırması ve ürün bazlı abonelik durumunu güncel döngü kullanımıyla birlikte döndürür.

Steam kullanıcıları

v1 Endpointv2 EndpointNotlar
GET /steam/profile/{SteamID64}GET /v2/steam/users/{steamid}Yeniden adlandırıldı. Alan adları da değişti — bkz. Steam kullanıcı alan yeniden adlandırmaları.
GET /steam/profile/{SteamID64}/summaryGET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badgesSummary bölündü. Temel profil kullanıcı endpoint'iyle birleşir; badges'in kendi endpoint'i vardır.
GET /steam/profile/{SteamID64}/gamesGET /v2/steam/users/{steamid}/gamesYol değişti.
GET /steam/profile/vanity/{VanityName}GET /v2/steam/users/vanity/{vanityUrl}Yol değişti.
GET /steam/inventory/{SteamID64}/{AppId}/{ContextId}GET /v2/steam/users/{steamid}/inventory/{appId}/{contextId}Yol değişti (inventory endpoint'i Steam users altında kalır).
—GET /v2/steam/users/{steamid}/bansv2'de yeni. Özel ban durum endpoint'i.
—GET /v2/steam/users/{steamid}/recently-playedv2'de yeni. Son iki haftada oynanan oyunlar, platform bazında dakikalarla.
—GET /v2/steam/users/{steamid}/achievements/{appid}v2'de yeni. Oyun bazlı başarımlar, açılış timestamp'leriyle.
—GET /v2/steam/users/{steamid}/stats/{appid}v2'de yeni. Oyun bazlı istatistikler + açılmış başarımlar.
—GET /v2/steam/users/{steamid}/friendsv2'de yeni. Arkadaşlık timestamp'leriyle arkadaş listesi.
—GET /v2/steam/users/{steamid}/groupsv2'de yeni. Kullanıcının ait olduğu gruplar.

Steam uygulamaları

v1 Endpointv2 EndpointNotlar
GET /market/appsGET /v2/steam/appsYeniden adlandırıldı ve şekillendirildi. Takip edilen her Steam uygulamasının sayfalı listesini döndürür. Sayfalamak için cursor kullan.
GET /market/app/{AppID}GET /v2/steam/apps/{appId}Yeniden adlandırıldı. Uygulama detayları (ad, tip, last modified vb.).
GET /market/stats—Doğrudan bir karşılığı yok. En yakın eşdeğerleri GET /v2/steam/apps/player-counts ve GET /v2/steam/apps/store/rankings/{type}.
—GET /v2/steam/apps/player-countsv2'de yeni. Uygulama başına mevcut eşzamanlı oyuncu sayısı, sayfalı.
—GET /v2/steam/apps/{appId}/changesv2'de yeni. Uygulama changelog'u.
—GET /v2/steam/apps/{appId}/global-achievementsv2'de yeni. Başarım başına global açılış yüzdesi.
—GET /v2/steam/apps/{appId}/newsv2'de yeni. Toplulaştırılmış community announcements ve harici basın haberleri.
—GET /v2/steam/apps/{appId}/schemav2'de yeni. Tam istatistik/başarım şeması (görüntü adları, açıklamalar, ikon URL'leri).
—GET /v2/steam/apps/store/rankings/{type}v2'de yeni. Steam Store sıralama listeleri (popularnew, topsellers, popularcomingsoon, specials, trendingfree, mostplayed).

Steam item'ları

v1 Endpointv2 EndpointNotlar
GET /market/items/{AppID}GET /v2/steam/itemsYeniden adlandırıldı ve şekillendirildi. Takip edilen her item'ın sayfalı listesi; appId'e göre filtrele.
GET /market/item/{AppID}/{MarketHashName}GET /v2/steam/items/{appId}/{marketHashName}Yol değişti. Mevcut fiyat/hacim ile tek item.
GET /market/items/{AppID}/histogramsGET /v2/steam/items/{itemId}/histogramsYol değişti. Artık appId yerine dahili itemId üzerinden.
GET /market/items/{AppID}/descriptions—Kaldırıldı. Steam açıklamaları artık bağımsız bir endpoint olarak sunulmuyor.
GET /market/items/cards—Kaldırıldı. Doğrudan karşılığı yok.
GET /market/items/{AppID}/assetinfos—Kaldırıldı.
—GET /v2/steam/items/{itemId}/metav2'de yeni. Item metadata'sı (tip, etiketler, açıklama).
—GET /v2/steam/items/{itemId}/pricesv2'de yeni. Item fiyat geçmişi zaman serisi.
—GET /v2/steam/items/{itemId}/changesv2'de yeni. Item changelog'u.
—GET /v2/steam/items/{appId}/listv2'de yeni. Bir uygulamanın tüm market'i için önceden oluşturulmuş toplu fiyat listesi (CDN dosyasına 302 yönlendirmesi).

Görseller

v1 Endpointv2 EndpointNotlar
GET /image/item/{AppID}/{MarketHashName}—Kaldırıldı. Steam CDN URL'lerini item'ın hash alanlarından doğrudan oluştur.
GET /image/items/{AppID}—Kaldırıldı.

Market Data (üçüncü taraf marketplace'ler)

Market Data, v2'de yeni bir kategoridir. 26 üçüncü taraf marketplace'ten fiyat, teklif, satış ve order book verilerini toplar — v1'de var olmayan bir işlevsellik.

Market Data endpoint'leri https://marketplaceapi.steamapis.com/ üzerinde barındırılır — ana API'den (https://api.steamapis.com/) farklı bir base URL.

Aşağıdaki REST endpoint'lerine ek olarak v2, gerçek zamanlı bir WebSocket teklif akışı da sunar:

v1 Endpointv2 EndpointProtokolNotlar
—wss://marketplaceapi.steamapis.com/ws/v2/offersWebSocketv2'de yeni. Marketplace listelemelerini tespit edildikçe tek tek pushlar.
v1 Endpointv2 EndpointNotlar
—GET /v2/marketplacesv2'de yeni. Desteklenen marketplace'lerin listesi.
—GET /v2/itemsv2'de yeni. Marketplace'ler arasında tek item.
—GET /v2/items/searchv2'de yeni. Item'ları ada göre ara.
—GET /v2/items/comparev2'de yeni. Bir item'ı marketplace'ler arasında karşılaştır.
—GET /v2/buy-ordersv2'de yeni.
—GET /v2/price-historyv2'de yeni. Fiyat geçmişi zaman serisi.
—GET /v2/salesv2'de yeni. Son satışlar.

Breaking changes özeti

  1. Kimlik doğrulama — API key'i api_key query parameter'ından x-api-key request header'ına taşı (veya header erişimi pratik değilse ?key= olarak bırak).
  2. Yanıt envelope'u — en üst seviyeyi doğrudan okumak yerine data.result (tek kaynak) veya data.results (liste) olarak aç. Sayfalı liste yanıtları ayrıca cursor ve hasMore içerir.
  3. Steam kullanıcı alanları — steamid → steamID, personaname → nickname, profileurl → url ve diğerlerini yeniden adlandır (yukarıdaki tam tabloya bak). Düz avatar alanları iç içe bir avatar objesine taşındı.
  4. Endpoint yolları — Steam kullanıcı endpoint'leri artık /v2/steam/users/ altında, uygulama endpoint'leri /v2/steam/apps/ altında, item endpoint'leri /v2/steam/items/ altında. |
  5. Steam ID girişi — v2 yalnızca SteamID64 değil, birden fazla Steam ID formatını kabul eder.
  6. Yeni endpoint'ler — Hesap, bans, recently-played, achievements, stats, friends, groups, player-counts, global-achievements, news, schema, store rankings, item listesi ve Market Data kategorisinin tamamı.
  7. Hata formatı — hatalar, endpoint bazında değişmek yerine { "success": false, "error": { "name": "...", "message": "...", "meta": ... } } döndürür.