Руководство по миграции
Миграция с v1 на v2
Это руководство описывает изменения, которые тебе нужно внести при переходе с SteamApis API v1 на v2. В v2 добавлены новые категории (Аккаунт, Market Data), реорганизованы endpoint'ы Steam-пользователей и приложений и введена стандартизированная обёртка ответа.
Аутентификация
v1 передавала API-ключ как query-параметр, обычно api_key или key:
GET /steam/profile/76561198038526790?api_key=YOUR_KEY
v2 передаёт API-ключ через request header x-api-key (рекомендуется) или query-параметр ?key= (всё ещё поддерживается):
fetch('https://api.steamapis.com/v2/steam/users/76561198038526790', {
headers: { 'x-api-key': 'YOUR_KEY' }
})
Использовать header рекомендуется, потому что так ключ не попадает в серверные логи, историю браузера и referer'ы.
Обёртка ответа
v1 возвращала данные напрямую на верхнем уровне:
{
"steamid": "76561198038526790",
"personaname": "PEPZ"
}
v2 оборачивает каждый ответ в стандартную обёртку. Точная форма зависит от того, возвращает ли endpoint одиночный ресурс или постраничный список:
{
"success": true,
"result": { "steamID": "76561198038526790", "nickname": "PEPZ" }
}
{
"success": true,
"results": [ { /* ... */ } ],
"cursor": "6789abcdef012345",
"hasMore": true
}
Ошибки используют ту же обёртку с success: false:
{
"success": false,
"error": { "name": "NOT_FOUND", "message": "User not found", "meta": {} }
}
Чтобы получить данные, используй data.result (одиночный ресурс) или data.results (список) вместо чтения верхнего уровня напрямую.
response вместо result. Считай это дрейфом — авторитетная обёртка — { success, result } / { success, results, cursor, hasMore }.Переименования полей Steam-пользователя
v2-endpoint пользователя возвращает те же данные Steam, но с именами полей в camelCase и вложенным объектом avatar. Если ты парсишь ответы по пользователям, обнови свои типы:
| Поле v1 | Поле v2 | Примечания |
|---|---|---|
steamid | steamID | Переименование. |
personaname | nickname | Переименование. |
profileurl | url | Переименование. |
personastate | personaState | camelCase. |
personastateflags | personaStateFlags | camelCase. |
primaryclanid | primaryGroupID | Переименование. |
timecreated | createdTimestamp | Переименование. |
loccountrycode | countryCode | Переименование. |
commentpermission (number) | allowsComments (boolean) | Изменение типа. |
communityvisibilitystate (enum) | visible (boolean) | Сведено к булевому. |
avatar, avatarmedium, avatarfull, avatarhash | avatar.small, avatar.medium, avatar.large, avatar.hash | Плоские поля перенесены во вложенный объект avatar. |
profilestate | — | Удалено. |
| — | lastLogOffTimestamp | Новое. |
Параметр Steam ID
В v1 endpoint'ы пользователей требовали SteamID64 (17-значный числовой ID). В v2 параметр steamid принимает несколько форматов Steam ID — SteamID64, SteamID, SteamID3 — и API разрешает их автоматически.
Маппинг endpoint'ов
Таблицы ниже сопоставляют каждый v1-endpoint с его v2-эквивалентом, сгруппированы по категории. Записи с пометкой «Новое в v2» не имеют v1-предшественника.
Аккаунт
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
| — | GET /v2/account | Новое в v2. Возвращает баланс, конфигурацию overage и статус подписок по продуктам с использованием в текущем цикле. |
Steam-пользователи
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
GET /steam/profile/{SteamID64} | GET /v2/steam/users/{steamid} | Переименован. Имена полей тоже изменились — см. Переименования полей Steam-пользователя. |
GET /steam/profile/{SteamID64}/summary | GET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badges | Summary разделён. Основной профиль сливается с endpoint'ом пользователя; badges — отдельный endpoint. |
GET /steam/profile/{SteamID64}/games | GET /v2/steam/users/{steamid}/games | Изменён путь. |
GET /steam/profile/vanity/{VanityName} | GET /v2/steam/users/vanity/{vanityUrl} | Изменён путь. |
GET /steam/inventory/{SteamID64}/{AppId}/{ContextId} | GET /v2/steam/users/{steamid}/inventory/{appId}/{contextId} | Изменён путь (endpoint инвентаря остаётся в Steam users). |
| — | GET /v2/steam/users/{steamid}/bans | Новое в v2. Отдельный endpoint статуса банов. |
| — | GET /v2/steam/users/{steamid}/recently-played | Новое в v2. Игры за последние две недели с минутами по платформам. |
| — | GET /v2/steam/users/{steamid}/achievements/{appid} | Новое в v2. Достижения по игре с timestamp'ами разблокировки. |
| — | GET /v2/steam/users/{steamid}/stats/{appid} | Новое в v2. Статистика по игре + разблокированные достижения. |
| — | GET /v2/steam/users/{steamid}/friends | Новое в v2. Список друзей с timestamp'ами дружбы. |
| — | GET /v2/steam/users/{steamid}/groups | Новое в v2. Группы, в которых состоит пользователь. |
Steam-приложения
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
GET /market/apps | GET /v2/steam/apps | Переименован и переработан. Возвращает постраничный список всех отслеживаемых Steam-приложений. Используй cursor для пагинации. |
GET /market/app/{AppID} | GET /v2/steam/apps/{appId} | Переименован. Детали приложения (имя, тип, last modified и т. д.). |
GET /market/stats | — | Прямого аналога нет. Ближайшие эквиваленты — GET /v2/steam/apps/player-counts и GET /v2/steam/apps/store/rankings/{type}. |
| — | GET /v2/steam/apps/player-counts | Новое в v2. Текущее количество одновременных игроков по приложению, постранично. |
| — | GET /v2/steam/apps/{appId}/changes | Новое в v2. Changelog приложения. |
| — | GET /v2/steam/apps/{appId}/global-achievements | Новое в v2. Глобальный процент разблокировки по достижениям. |
| — | GET /v2/steam/apps/{appId}/news | Новое в v2. Агрегированные community announcements и внешние пресс-материалы. |
| — | GET /v2/steam/apps/{appId}/schema | Новое в v2. Полная схема стат/достижений (отображаемые имена, описания, URL-ы иконок). |
| — | GET /v2/steam/apps/store/rankings/{type} | Новое в v2. Списки рейтингов Steam Store (popularnew, topsellers, popularcomingsoon, specials, trendingfree, mostplayed). |
Steam-предметы
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
GET /market/items/{AppID} | GET /v2/steam/items | Переименован и переработан. Постраничный список всех отслеживаемых предметов; фильтруй по appId. |
GET /market/item/{AppID}/{MarketHashName} | GET /v2/steam/items/{appId}/{marketHashName} | Изменён путь. Один предмет с текущей ценой/объёмом. |
GET /market/items/{AppID}/histograms | GET /v2/steam/items/{itemId}/histograms | Изменён путь. Теперь по внутреннему itemId вместо appId. |
GET /market/items/{AppID}/descriptions | — | Удалено. Описания Steam больше не доступны как отдельный endpoint. |
GET /market/items/cards | — | Удалено. Прямого аналога нет. |
GET /market/items/{AppID}/assetinfos | — | Удалено. |
| — | GET /v2/steam/items/{itemId}/meta | Новое в v2. Метаданные предмета (тип, теги, описание). |
| — | GET /v2/steam/items/{itemId}/prices | Новое в v2. Временной ряд истории цен предмета. |
| — | GET /v2/steam/items/{itemId}/changes | Новое в v2. Changelog предмета. |
| — | GET /v2/steam/items/{appId}/list | Новое в v2. Заранее сгенерированный массовый прайс-лист для всего рынка приложения (302-редирект на файл в CDN). |
Изображения
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
GET /image/item/{AppID}/{MarketHashName} | — | Удалено. Формируй URL-ы Steam CDN напрямую из hash-полей предмета. |
GET /image/items/{AppID} | — | Удалено. |
Market Data (сторонние маркетплейсы)
Market Data — новая категория в v2. Агрегирует ценовые данные, офферы, продажи и order book с 26 сторонних маркетплейсов — функциональность, которой не было в v1.
https://marketplaceapi.steamapis.com/ — это другая base URL, чем у основного API (https://api.steamapis.com/).Помимо REST-endpoint'ов ниже, v2 также предоставляет WebSocket-стрим офферов в реальном времени:
| Endpoint v1 | Endpoint v2 | Протокол | Примечания |
|---|---|---|---|
| — | wss://marketplaceapi.steamapis.com/ws/v2/offers | WebSocket | Новое в v2. Пушит отдельные листинги маркетплейсов по мере их обнаружения. |
| Endpoint v1 | Endpoint v2 | Примечания |
|---|---|---|
| — | GET /v2/marketplaces | Новое в v2. Список поддерживаемых маркетплейсов. |
| — | GET /v2/items | Новое в v2. Один предмет по разным маркетплейсам. |
| — | GET /v2/items/search | Новое в v2. Поиск предметов по имени. |
| — | GET /v2/items/compare | Новое в v2. Сравнение предмета по маркетплейсам. |
| — | GET /v2/buy-orders | Новое в v2. |
| — | GET /v2/price-history | Новое в v2. Временной ряд истории цен. |
| — | GET /v2/sales | Новое в v2. Последние продажи. |
Сводка критических изменений
- Аутентификация — перенеси API-ключ из query-параметра
api_keyв request headerx-api-key(или оставь как?key=, если работать с header'ом непрактично). - Обёртка ответа — распаковывай
data.result(одиночный ресурс) илиdata.results(список) вместо чтения верхнего уровня. Постраничные ответы списков также включаютcursorиhasMore. - Поля Steam-пользователя — переименуй
steamid→steamID,personaname→nickname,profileurl→urlи далее (см. полную таблицу выше). Плоские поля аватара перенесены во вложенный объектavatar. - Пути endpoint'ов — endpoint'ы Steam-пользователей теперь под
/v2/steam/users/, endpoint'ы приложений — под/v2/steam/apps/, endpoint'ы предметов — под/v2/steam/items/. - Ввод Steam ID — v2 принимает несколько форматов Steam ID, не только SteamID64.
- Новые endpoint'ы — Аккаунт, bans, recently-played, achievements, stats, friends, groups, player-counts, global-achievements, news, schema, store rankings, список предметов и вся категория Market Data.
- Формат ошибок — ошибки возвращают
{ "success": false, "error": { "name": "...", "message": "...", "meta": ... } }вместо разных форматов под разные endpoint'ы.