Geçiş Rehberi
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:
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:
{
"success": true,
"result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
{
"success": true,
"results": [ { /* ... */ } ],
"cursor": "6789abcdef012345",
"hasMore": true
}
Hatalar aynı envelope'u success: false ile kullanır:
{
"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.
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 |
|---|---|---|
steamid | steamID | Yeniden adlandırıldı. |
personaname | nickname | Yeniden adlandırıldı. |
profileurl | url | Yeniden adlandırıldı. |
personastate | personaState | camelCase. |
personastateflags | personaStateFlags | camelCase. |
primaryclanid | primaryGroupID | Yeniden adlandırıldı. |
timecreated | createdTimestamp | Yeniden adlandırıldı. |
loccountrycode | countryCode | Yeniden adlandırıldı. |
commentpermission (number) | allowsComments (boolean) | Tip değişikliği. |
communityvisibilitystate (enum) | visible (boolean) | Boolean'a indirgendi. |
avatar, avatarmedium, avatarfull, avatarhash | avatar.small, avatar.medium, avatar.large, avatar.hash | Düz alanlar iç içe bir avatar objesine taşındı. |
profilestate | — | Kaldırıldı. |
| — | lastLogOffTimestamp | Yeni. |
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 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
| — | GET /v2/account | v2'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 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
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}/summary | GET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badges | Summary bölündü. Temel profil kullanıcı endpoint'iyle birleşir; badges'in kendi endpoint'i vardır. |
GET /steam/profile/{SteamID64}/games | GET /v2/steam/users/{steamid}/games | Yol 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}/bans | v2'de yeni. Özel ban durum endpoint'i. |
| — | GET /v2/steam/users/{steamid}/recently-played | v2'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}/friends | v2'de yeni. Arkadaşlık timestamp'leriyle arkadaş listesi. |
| — | GET /v2/steam/users/{steamid}/groups | v2'de yeni. Kullanıcının ait olduğu gruplar. |
Steam uygulamaları
| v1 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
GET /market/apps | GET /v2/steam/apps | Yeniden 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-counts | v2'de yeni. Uygulama başına mevcut eşzamanlı oyuncu sayısı, sayfalı. |
| — | GET /v2/steam/apps/{appId}/changes | v2'de yeni. Uygulama changelog'u. |
| — | GET /v2/steam/apps/{appId}/global-achievements | v2'de yeni. Başarım başına global açılış yüzdesi. |
| — | GET /v2/steam/apps/{appId}/news | v2'de yeni. Toplulaştırılmış community announcements ve harici basın haberleri. |
| — | GET /v2/steam/apps/{appId}/schema | v2'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 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
GET /market/items/{AppID} | GET /v2/steam/items | Yeniden 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}/histograms | GET /v2/steam/items/{itemId}/histograms | Yol 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}/meta | v2'de yeni. Item metadata'sı (tip, etiketler, açıklama). |
| — | GET /v2/steam/items/{itemId}/prices | v2'de yeni. Item fiyat geçmişi zaman serisi. |
| — | GET /v2/steam/items/{itemId}/changes | v2'de yeni. Item changelog'u. |
| — | GET /v2/steam/items/{appId}/list | v2'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 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
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.
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 Endpoint | v2 Endpoint | Protokol | Notlar |
|---|---|---|---|
| — | wss://marketplaceapi.steamapis.com/ws/v2/offers | WebSocket | v2'de yeni. Marketplace listelemelerini tespit edildikçe tek tek pushlar. |
| v1 Endpoint | v2 Endpoint | Notlar |
|---|---|---|
| — | GET /v2/marketplaces | v2'de yeni. Desteklenen marketplace'lerin listesi. |
| — | GET /v2/items | v2'de yeni. Marketplace'ler arasında tek item. |
| — | GET /v2/items/search | v2'de yeni. Item'ları ada göre ara. |
| — | GET /v2/items/compare | v2'de yeni. Bir item'ı marketplace'ler arasında karşılaştır. |
| — | GET /v2/buy-orders | v2'de yeni. |
| — | GET /v2/price-history | v2'de yeni. Fiyat geçmişi zaman serisi. |
| — | GET /v2/sales | v2'de yeni. Son satışlar. |
Breaking changes özeti
- Kimlik doğrulama — API key'i
api_keyquery parameter'ındanx-api-keyrequest header'ına taşı (veya header erişimi pratik değilse?key=olarak bırak). - Yanıt envelope'u — en üst seviyeyi doğrudan okumak yerine
data.result(tek kaynak) veyadata.results(liste) olarak aç. Sayfalı liste yanıtları ayrıcacursorvehasMoreiçerir. - Steam kullanıcı alanları —
steamid→steamID,personaname→nickname,profileurl→urlve diğerlerini yeniden adlandır (yukarıdaki tam tabloya bak). Düz avatar alanları iç içe biravatarobjesine taşındı. - 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. | - Steam ID girişi — v2 yalnızca SteamID64 değil, birden fazla Steam ID formatını kabul eder.
- 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ı.
- Hata formatı — hatalar, endpoint bazında değişmek yerine
{ "success": false, "error": { "name": "...", "message": "...", "meta": ... } }döndürür.