Przewodnik migracji
Migracja z v1 na v2
Ten przewodnik opisuje zmiany, które musisz wprowadzić przy aktualizacji z SteamApis API v1 do v2. v2 dodaje nowe kategorie (Konto, Market Data), reorganizuje endpointy użytkowników Steam i aplikacji oraz wprowadza ustandaryzowaną kopertę odpowiedzi.
Uwierzytelnianie
v1 przekazywało klucz API jako query parameter, zazwyczaj api_key lub key:
GET /steam/profile/76561198038526790?api_key=YOUR_KEY
v2 przekazuje klucz API przez header x-api-key (zalecane) lub query parameter ?key= (nadal wspierany):
fetch('https://api.steamapis.com/v2/steam/users/76561198038526790', {
headers: { 'x-api-key': 'YOUR_KEY' }
})
Zalecamy header, bo klucz nie pojawia się wtedy w logach serwera, historii przeglądarki ani nagłówkach referer.
Koperta odpowiedzi
v1 zwracało dane bezpośrednio na najwyższym poziomie:
{
"steamid": "76561198038526790",
"personaname": "PEPZ"
}
v2 opakowuje każdą odpowiedź w standardową kopertę. Dokładny kształt zależy od tego, czy endpoint zwraca pojedynczy zasób czy paginowaną listę:
{
"success": true,
"result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
{
"success": true,
"results": [ { /* ... */ } ],
"cursor": "6789abcdef012345",
"hasMore": true
}
Błędy używają tej samej koperty z success: false:
{
"success": false,
"error": { "name": "NOT_FOUND", "message": "User not found", "meta": {} }
}
Aby dostać się do danych, użyj data.result (pojedynczy zasób) lub data.results (lista) zamiast czytać najwyższy poziom bezpośrednio.
response zamiast result. Traktuj to jako drift — autorytatywna koperta to { success, result } / { success, results, cursor, hasMore }.Zmiany nazw pól użytkownika Steam
Endpoint użytkownika v2 zwraca te same dane Steam, ale z nazwami pól w camelCase i zagnieżdżonym obiektem avatar. Jeśli parsujesz odpowiedzi użytkownika, zaktualizuj swoje typy:
| Pole v1 | Pole v2 | Uwagi |
|---|---|---|
steamid | steamID | Zmieniona nazwa. |
personaname | nickname | Zmieniona nazwa. |
profileurl | url | Zmieniona nazwa. |
personastate | personaState | camelCase. |
personastateflags | personaStateFlags | camelCase. |
primaryclanid | primaryGroupID | Zmieniona nazwa. |
timecreated | createdTimestamp | Zmieniona nazwa. |
loccountrycode | countryCode | Zmieniona nazwa. |
commentpermission (number) | allowsComments (boolean) | Zmiana typu. |
communityvisibilitystate (enum) | visible (boolean) | Zredukowane do booleana. |
avatar, avatarmedium, avatarfull, avatarhash | avatar.small, avatar.medium, avatar.large, avatar.hash | Płaskie pola przeniesione do zagnieżdżonego obiektu avatar. |
profilestate | — | Usunięte. |
| — | lastLogOffTimestamp | Nowe. |
Parametr Steam ID
W v1 endpointy użytkownika wymagały SteamID64 (17-cyfrowego identyfikatora numerycznego). W v2 parametr steamid akceptuje wiele formatów Steam ID — SteamID64, SteamID, SteamID3 — a API rozwiązuje je automatycznie.
Mapowanie endpointów
Poniższe tabele mapują każdy endpoint v1 na jego odpowiednik w v2, pogrupowane według kategorii. Wpisy oznaczone "Nowe w v2" nie mają poprzednika w v1.
Konto
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
| — | GET /v2/account | Nowe w v2. Zwraca saldo, konfigurację overage oraz status subskrypcji per produkt wraz z użyciem w bieżącym cyklu. |
Użytkownicy Steam
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
GET /steam/profile/{SteamID64} | GET /v2/steam/users/{steamid} | Zmieniona nazwa. Zmieniły się też nazwy pól — patrz Zmiany nazw pól użytkownika Steam. |
GET /steam/profile/{SteamID64}/summary | GET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badges | Summary podzielone. Podstawowe dane profilu łączą się z endpointem user; badges mają własny endpoint. |
GET /steam/profile/{SteamID64}/games | GET /v2/steam/users/{steamid}/games | Zmieniona ścieżka. |
GET /steam/profile/vanity/{VanityName} | GET /v2/steam/users/vanity/{vanityUrl} | Zmieniona ścieżka. |
GET /steam/inventory/{SteamID64}/{AppId}/{ContextId} | GET /v2/steam/users/{steamid}/inventory/{appId}/{contextId} | Zmieniona ścieżka (endpoint inventory nadal w Steam users). |
| — | GET /v2/steam/users/{steamid}/bans | Nowe w v2. Dedykowany endpoint statusu banów. |
| — | GET /v2/steam/users/{steamid}/recently-played | Nowe w v2. Gry zagrane w ostatnich dwóch tygodniach z minutami per platforma. |
| — | GET /v2/steam/users/{steamid}/achievements/{appid} | Nowe w v2. Osiągnięcia per gra z timestampami odblokowania. |
| — | GET /v2/steam/users/{steamid}/stats/{appid} | Nowe w v2. Statystyki per gra + odblokowane osiągnięcia. |
| — | GET /v2/steam/users/{steamid}/friends | Nowe w v2. Lista znajomych z timestampami znajomości. |
| — | GET /v2/steam/users/{steamid}/groups | Nowe w v2. Grupy, do których należy użytkownik. |
Aplikacje Steam
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
GET /market/apps | GET /v2/steam/apps | Zmieniona nazwa i kształt. Zwraca paginowaną listę każdej śledzonej aplikacji Steam. Użyj cursor do paginacji. |
GET /market/app/{AppID} | GET /v2/steam/apps/{appId} | Zmieniona nazwa. Szczegóły aplikacji (nazwa, typ, last modified itd.). |
GET /market/stats | — | Brak bezpośredniego odpowiednika. Najbliższe ekwiwalenty to GET /v2/steam/apps/player-counts i GET /v2/steam/apps/store/rankings/{type}. |
| — | GET /v2/steam/apps/player-counts | Nowe w v2. Aktualna liczba równoczesnych graczy per aplikacja, paginowane. |
| — | GET /v2/steam/apps/{appId}/changes | Nowe w v2. Changelog aplikacji. |
| — | GET /v2/steam/apps/{appId}/global-achievements | Nowe w v2. Globalny procent odblokowania per osiągnięcie. |
| — | GET /v2/steam/apps/{appId}/news | Nowe w v2. Zagregowane community announcements i zewnętrzne wiadomości prasowe. |
| — | GET /v2/steam/apps/{appId}/schema | Nowe w v2. Pełny schemat statystyk/osiągnięć (nazwy wyświetlane, opisy, URL-e ikon). |
| — | GET /v2/steam/apps/store/rankings/{type} | Nowe w v2. Listy rankingów Steam Store (popularnew, topsellers, popularcomingsoon, specials, trendingfree, mostplayed). |
Przedmioty Steam
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
GET /market/items/{AppID} | GET /v2/steam/items | Zmieniona nazwa i kształt. Paginowana lista każdego śledzonego przedmiotu; filtruj po appId. |
GET /market/item/{AppID}/{MarketHashName} | GET /v2/steam/items/{appId}/{marketHashName} | Zmieniona ścieżka. Pojedynczy przedmiot z aktualną ceną/wolumenem. |
GET /market/items/{AppID}/histograms | GET /v2/steam/items/{itemId}/histograms | Zmieniona ścieżka. Teraz kluczowane po wewnętrznym itemId zamiast appId. |
GET /market/items/{AppID}/descriptions | — | Usunięte. Opisy Steam nie są już udostępniane jako osobny endpoint. |
GET /market/items/cards | — | Usunięte. Brak bezpośredniego odpowiednika. |
GET /market/items/{AppID}/assetinfos | — | Usunięte. |
| — | GET /v2/steam/items/{itemId}/meta | Nowe w v2. Metadane przedmiotu (typ, tagi, opis). |
| — | GET /v2/steam/items/{itemId}/prices | Nowe w v2. Szereg czasowy historii cen przedmiotu. |
| — | GET /v2/steam/items/{itemId}/changes | Nowe w v2. Changelog przedmiotu. |
| — | GET /v2/steam/items/{appId}/list | Nowe w v2. Wcześniej wygenerowana lista cen dla całego rynku aplikacji (302-redirect do pliku w CDN). |
Obrazy
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
GET /image/item/{AppID}/{MarketHashName} | — | Usunięte. Konstruuj URL-e Steam CDN bezpośrednio z pól hash przedmiotu. |
GET /image/items/{AppID} | — | Usunięte. |
Market Data (zewnętrzne marketplace'y)
Market Data to nowa kategoria w v2. Agreguje dane cenowe, oferty, sprzedaże i order book z 26 zewnętrznych marketplace'ów — funkcjonalność, która nie istniała w v1.
https://marketplaceapi.steamapis.com/ — inną base URL niż główna API (https://api.steamapis.com/).Oprócz endpointów REST poniżej v2 udostępnia też strumień ofert WebSocket w czasie rzeczywistym:
| Endpoint v1 | Endpoint v2 | Protokół | Uwagi |
|---|---|---|---|
| — | wss://marketplaceapi.steamapis.com/ws/v2/offers | WebSocket | Nowe w v2. Pushuje pojedyncze listingi marketplace'ów gdy tylko zostaną wykryte. |
| Endpoint v1 | Endpoint v2 | Uwagi |
|---|---|---|
| — | GET /v2/marketplaces | Nowe w v2. Lista wspieranych marketplace'ów. |
| — | GET /v2/items | Nowe w v2. Pojedynczy przedmiot w różnych marketplace'ach. |
| — | GET /v2/items/search | Nowe w v2. Szukaj przedmiotów po nazwie. |
| — | GET /v2/items/compare | Nowe w v2. Porównaj przedmiot między marketplace'ami. |
| — | GET /v2/buy-orders | Nowe w v2. |
| — | GET /v2/price-history | Nowe w v2. Szereg czasowy historii cen. |
| — | GET /v2/sales | Nowe w v2. Ostatnie sprzedaże. |
Podsumowanie breaking changes
- Uwierzytelnianie — przenieś klucz API z query parameter
api_keyna headerx-api-key(lub zostaw jako?key=, jeśli dostęp do headera jest niepraktyczny). - Koperta odpowiedzi — rozpakuj
data.result(pojedynczy zasób) lubdata.results(lista) zamiast czytać najwyższy poziom. Paginowane odpowiedzi list zawierają teżcursorihasMore. - Pola użytkownika Steam — zmień nazwy
steamid→steamID,personaname→nickname,profileurl→urli innych (patrz pełna tabela wyżej). Płaskie pola avatara przeniesione do zagnieżdżonego obiektuavatar. - Ścieżki endpointów — endpointy użytkowników Steam są teraz pod
/v2/steam/users/, endpointy aplikacji pod/v2/steam/apps/, endpointy przedmiotów pod/v2/steam/items/. - Wejście Steam ID — v2 akceptuje wiele formatów Steam ID, nie tylko SteamID64.
- Nowe endpointy — Konto, bans, recently-played, achievements, stats, friends, groups, player-counts, global-achievements, news, schema, store rankings, lista przedmiotów i cała kategoria Market Data.
- Format błędów — błędy zwracają
{ "success": false, "error": { "name": "...", "message": "...", "meta": ... } }zamiast różnić się per endpoint.