Rozpoczęcie

Przewodnik migracji

Zmigruj z SteamApis v1 na v2. Zaktualizowane uwierzytelnianie, koperta odpowiedzi, nazwy pól użytkownika Steam i znacznie większa powierzchnia endpointów.

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):

index.js
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ę:

Pojedynczy zasób
{
  "success": true,
  "result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
Paginowana lista
{
  "success": true,
  "results": [ { /* ... */ } ],
  "cursor": "6789abcdef012345",
  "hasMore": true
}

Błędy używają tej samej koperty z success: false:

Błąd
{
  "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.

Kilka wczesnych dokumentacji endpointów v2 wciąż odwołuje się do starego klucza 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 v1Pole v2Uwagi
steamidsteamIDZmieniona nazwa.
personanamenicknameZmieniona nazwa.
profileurlurlZmieniona nazwa.
personastatepersonaStatecamelCase.
personastateflagspersonaStateFlagscamelCase.
primaryclanidprimaryGroupIDZmieniona nazwa.
timecreatedcreatedTimestampZmieniona nazwa.
loccountrycodecountryCodeZmieniona nazwa.
commentpermission (number)allowsComments (boolean)Zmiana typu.
communityvisibilitystate (enum)visible (boolean)Zredukowane do booleana.
avatar, avatarmedium, avatarfull, avatarhashavatar.small, avatar.medium, avatar.large, avatar.hashPłaskie pola przeniesione do zagnieżdżonego obiektu avatar.
profilestate—Usunięte.
—lastLogOffTimestampNowe.

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 v1Endpoint v2Uwagi
—GET /v2/accountNowe w v2. Zwraca saldo, konfigurację overage oraz status subskrypcji per produkt wraz z użyciem w bieżącym cyklu.

Użytkownicy Steam

Endpoint v1Endpoint v2Uwagi
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}/summaryGET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badgesSummary podzielone. Podstawowe dane profilu łączą się z endpointem user; badges mają własny endpoint.
GET /steam/profile/{SteamID64}/gamesGET /v2/steam/users/{steamid}/gamesZmieniona ś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}/bansNowe w v2. Dedykowany endpoint statusu banów.
—GET /v2/steam/users/{steamid}/recently-playedNowe 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}/friendsNowe w v2. Lista znajomych z timestampami znajomości.
—GET /v2/steam/users/{steamid}/groupsNowe w v2. Grupy, do których należy użytkownik.

Aplikacje Steam

Endpoint v1Endpoint v2Uwagi
GET /market/appsGET /v2/steam/appsZmieniona 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-countsNowe w v2. Aktualna liczba równoczesnych graczy per aplikacja, paginowane.
—GET /v2/steam/apps/{appId}/changesNowe w v2. Changelog aplikacji.
—GET /v2/steam/apps/{appId}/global-achievementsNowe w v2. Globalny procent odblokowania per osiągnięcie.
—GET /v2/steam/apps/{appId}/newsNowe w v2. Zagregowane community announcements i zewnętrzne wiadomości prasowe.
—GET /v2/steam/apps/{appId}/schemaNowe 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 v1Endpoint v2Uwagi
GET /market/items/{AppID}GET /v2/steam/itemsZmieniona 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}/histogramsGET /v2/steam/items/{itemId}/histogramsZmieniona ś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}/metaNowe w v2. Metadane przedmiotu (typ, tagi, opis).
—GET /v2/steam/items/{itemId}/pricesNowe w v2. Szereg czasowy historii cen przedmiotu.
—GET /v2/steam/items/{itemId}/changesNowe w v2. Changelog przedmiotu.
—GET /v2/steam/items/{appId}/listNowe w v2. Wcześniej wygenerowana lista cen dla całego rynku aplikacji (302-redirect do pliku w CDN).

Obrazy

Endpoint v1Endpoint v2Uwagi
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.

Endpointy Market Data są hostowane pod 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 v1Endpoint v2ProtokółUwagi
—wss://marketplaceapi.steamapis.com/ws/v2/offersWebSocketNowe w v2. Pushuje pojedyncze listingi marketplace'ów gdy tylko zostaną wykryte.
Endpoint v1Endpoint v2Uwagi
—GET /v2/marketplacesNowe w v2. Lista wspieranych marketplace'ów.
—GET /v2/itemsNowe w v2. Pojedynczy przedmiot w różnych marketplace'ach.
—GET /v2/items/searchNowe w v2. Szukaj przedmiotów po nazwie.
—GET /v2/items/compareNowe w v2. Porównaj przedmiot między marketplace'ami.
—GET /v2/buy-ordersNowe w v2.
—GET /v2/price-historyNowe w v2. Szereg czasowy historii cen.
—GET /v2/salesNowe w v2. Ostatnie sprzedaże.

Podsumowanie breaking changes

  1. Uwierzytelnianie — przenieś klucz API z query parameter api_key na header x-api-key (lub zostaw jako ?key=, jeśli dostęp do headera jest niepraktyczny).
  2. Koperta odpowiedzi — rozpakuj data.result (pojedynczy zasób) lub data.results (lista) zamiast czytać najwyższy poziom. Paginowane odpowiedzi list zawierają też cursor i hasMore.
  3. Pola użytkownika Steam — zmień nazwy steamid → steamID, personaname → nickname, profileurl → url i innych (patrz pełna tabela wyżej). Płaskie pola avatara przeniesione do zagnieżdżonego obiektu avatar.
  4. Ś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/.
  5. Wejście Steam ID — v2 akceptuje wiele formatów Steam ID, nie tylko SteamID64.
  6. 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.
  7. Format błędów — błędy zwracają { "success": false, "error": { "name": "...", "message": "...", "meta": ... } } zamiast różnić się per endpoint.