Difference between revisions of "WebAPI"

From Team Fortress Wiki
Jump to: navigation, search
(Result layout)
m
 
(132 intermediate revisions by 32 users not shown)
Line 1: Line 1:
The Steam Web API is documented at http://steamcommunity.com/dev and http://developer.valvesoftware.com/wiki/Steam_Web_API. The mapping of the API data to each data format is described on the latter.
+
== Contributing ==
  
This page documents the web API calls that allow you to retrieve information from the item system in Team Fortress 2.
+
If you would like to help in writing API documentation there is a tool available [https://github.com/Lagg/steam-swissapiknife here] (requires python) that can generate skeleton documentation pages
 +
that match the style guidelines and can be easily copied and pasted.
  
Calls to the TF2 Web API require a valid Steam Web API key to function. You can get your own API Key [http://www.steamcommunity.com/dev/apikey here]. Each example URL will only work after replacing "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" with your API key.
+
Otherwise be sure to follow the existing structure and format of the documentation to keep things consistent.
  
 
== Common elements ==
 
== Common elements ==
  
=== Arguments ===
+
=== Parameters ===
  
All TF2 methods take the following arguments in their URL:
+
Most WebAPI methods take the following arguments in their URL:
  
*'''key''': Your Steam Web API key. Without this, the server will return a 403 Forbidden HTTP status.
+
;key: Your Steam Web API key. Without this, the server will return an HTTP 403 (forbidden) error. A key can be generated [http://www.steamcommunity.com/dev/apikey here].
*'''format''' ''(optional)'': The format to return the data in ("'''<tt>json</tt>'''" for JSON, "'''<tt>xml</tt>'''" for XML, or "'''<tt>vdf</tt>'''" for VDF). The structure of the data for each format is described at
+
;{{API optional|format}}: The file format to return output in.
http://developer.valvesoftware.com/wiki/Steam_Web_API#Formats. If no format is specified, the data will be returned with the default of JSON.
+
:;<code>json</code> (default): The [https://www.json.org/json-en.html JavaScript Object Notation] format
 
+
:;<code>xml</code>: Standard XML
=== Result structure ===
+
:;<code>vdf</code>: [[WebAPI/VDF|Valve Data Format]]
 
+
;{{API optional|language}}
All TF2 methods return a "'''<tt>result</tt>'''" object containing a status code (at "'''<tt>status</tt>'''") and either the data requested or a status message explaining why the data was not returned (at "'''<tt>statusDetail</tt>'''").
+
:The [[w:List of ISO 639-1 codes|ISO639-1 language code]] for the language all tokenized strings should be returned in. Not all strings have been translated to every language. If a language does not have a string, the English string will be returned instead. If this parameter is omitted the string token will be returned for the strings.
  
 
=== Terminology ===
 
=== Terminology ===
  
A "tokenized string" refers to a string containing "#"-prefixed tokens that are replaced with the equivalent string in the game's VDF for the chosen language. For instance, "TF_Weapon_Jar" is defined as "[[Jarate|Jar Based Karate]]" in tf/resource/tf_english.txt (as found in "team fortress 2 content.gcf").
+
A "tokenized string" refers to a string containing "<code>#</code>"-prefixed tokens that are replaced with the equivalent string in the game's VDF for the chosen language. For instance, "<code>TF_Weapon_Jar</code>" is defined as "<code>[[Jarate|Jar Based Karate]]</code>" in tf/resource/tf_english.txt (as found in "team fortress 2 content.gcf").
  
== GetSchema (v0001) ==
+
== Methods ==
 +
=== General interfaces ===
  
This method returns the item schema for the current build of Team Fortress 2. It takes no additional parameters.
+
;ISteamApps: Methods relating to Steam Apps in general.
 +
:;[[WebAPI/GetAppList|GetAppList]]: Full list of every publicly facing program in the store/library.
 +
:;[[WebAPI/GetServersAtAddress|GetServersAtAddress]]: Shows all steam-compatible servers related to a IPv4 Address.
 +
:;[[WebAPI/UpToDateCheck|UpToDateCheck]]: Check if a given app version is the most current available.
  
Example URL: http://api.steampowered.com/ITFItems_440/GetSchema/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&format=json
+
;ISteamEconomy: Methods relating to games' store's assets.
 +
:;[[WebAPI/GetAssetClassInfo|GetAssetClassInfo]]: Asset metadata
 +
:;[[WebAPI/GetAssetPrices|GetAssetPrices]]: Prices of items in the economy.
  
=== Status codes ===
+
;ISteamNews: Methods relating to Steam News.
 +
:;[[WebAPI/GetNewsForApp|GetNewsForApp]]: News feed for various games
  
*'''<tt>1</tt>''': The normal code. Should always be returned.
+
;ISteamRemoteStorage: Methods relating to stored files.
 +
:;[[WebAPI/GetCollectionDetails|GetCollectionDetails]]:
 +
:;[[WebAPI/GetPublishedFileDetails|GetPublishedFileDetails]]:
 +
:;[[WebAPI/GetUGCFileDetails|GetUGCFileDetails]]: UGC file size, local filename, and URL.
  
=== Result data ===
+
;ISteamUser: Methods relating to Steam users.
 +
:;[[WebAPI/GetFriendList|GetFriendList]]: User friend list
 +
:;[[WebAPI/GetPlayerBans|GetPlayerBans]]: Player ban/probation status
 +
:;[[WebAPI/GetPlayerSummaries|GetPlayerSummaries]]: User profile data
 +
:;[[WebAPI/GetUserGroupList|GetUserGroupList]]: Lists Group ID(s) linked with 64 bit ID
 +
:;[[WebAPI/ResolveVanityURL|ResolveVanityURL]]: Resolve vanity URL parts to a 64 bit ID.
  
*"'''<tt>qualities</tt>'''": An object containing the numeric values corresponding to each "quality" an item can have (excluding three entries for the standard Medic weapons between the standard weapons and the unlockable weapons, which have the unlisted quality of 255):
+
;ISteamUserStats: Methods relating to User stats.
**"'''<tt>normal</tt>'''" ''(<tt>0</tt>)'': In the list of items returned by GetSchema, all of the standard inherent basic class weapons have this listed as their quality.
+
:;[[WebAPI/GetGlobalAchievementPercentagesForApp|GetGlobalAchievementPercentagesForApp]]: Statistics showing how much of the player base have unlocked various achievements.
**"'''<tt>common</tt>'''" ''(<tt>1</tt>)'': In the list of items returned by GetSchema, no items have this listed as their quality.
+
:;[[WebAPI/GetGlobalStatsForGame|GetGlobalStatsForGame]]:
**"'''<tt>rare</tt>'''" ''(<tt>2</tt>)'': In the list of items returned by GetSchema, no items have this listed as their quality.
+
:;[[WebAPI/GetNumberOfCurrentPlayers|GetNumberOfCurrentPlayers]]: Returns the current number of players for an app.
**"'''<tt>unique</tt>'''" ''(<tt>3</tt>)'': In GetPlayerItems, all normally-obtained (not manually awarded by Valve) unlockable items have this as their quality. In the list of items returned by GetSchema, all findable items have this listed as their quality.
+
:;[[WebAPI/GetPlayerAchievements|GetPlayerAchievements]]: Game achievements
**"'''<tt>community</tt>'''" ''(<tt>7</tt>)'': In GetPlayerItems, Community items (a special kind of item, normally with special particle effects and description line, given to valuable community contributors) have this quality. In the list of items returned by GetSchema, no items have this as listed their quality.
+
:;[[WebAPI/GetSchemaForGame|GetSchemaForGame]]:
**"'''<tt>developer</tt>'''" ''(<tt>8</tt>)'': In GetPlayerItems, Valve items (a special kind of item with special properties belonging only to Valve employees) have this as their quality. In the list of items returned by GetSchema, no items have this as listed their quality.
+
:;[[WebAPI/GetUserStatsForGame|GetUserStatsForGame]]:
**"'''<tt>selfmade</tt>'''" ''(<tt>9</tt>)'': In GetPlayerItems, self-made items (items whose model was made by the player possessing the item, or Telltale Games employees in the case of the Sam & Max items, normally with a special particle effect and description line) have this as their quality. In the list of items returned by GetSchema, no items have this as listed their quality.
 
*"'''<tt>items</tt>'''": An object containing an array of "'''<tt>item</tt>'''":
 
**"'''<tt>name</tt>'''": A string that defines the item in the items_game.txt
 
**"'''<tt>defindex</tt>'''": The item's unique index, used to refer to instances of the item in GetPlayerItems.
 
**"'''<tt>item_class</tt>'''": The item's class in game (ie. what you would use as the argument to "equip" in the console to equip it).
 
**"'''<tt>item_type_name</tt>'''": The tokenized string that describes the item's class (eg. "#TF_Wearable_Shield" for the [[Chargin' Targe]] and the [[Razorback]]).
 
**"'''<tt>item_name</tt>'''": The tokenized string for the item's name (eg. "#TF_Spy_Camera_Beard" for the [[Camera Beard]]).
 
**"'''<tt>item_slot</tt>'''": A string describing what loadout slot the item corresponds to:
 
***"''<tt>primary</tt>''" for primary slot items (including "Slot Token - Primary")
 
***"''<tt>secondary</tt>''" for secondary slot items (including "Slot Token - Secondary")
 
***"''<tt>melee</tt>''" for melee slot items (including "Slot Token - Melee")
 
***"''<tt>head</tt>''" for hats and "Slot Token - Head"
 
***"''<tt>misc</tt>''" for misc slot items such as medals
 
***"''<tt>pda</tt>''" for the Engineer's Build PDA, the Spy's Disguise Kit, and "Slot Token - PDA"
 
***"''<tt>pda2</tt>''" for the Engineer's Destroy PDA, the Spy's [[Invisibility Watch]], the [[Cloak and Dagger]], the [[Dead Ringer]], and "Slot Token - PDA2"
 
***"''<tt>Engineer</tt>''" for metal and class tokens ''(yes, all class tokens)''
 
***"''<tt>building</tt>''" for "TF_WEAPON_BUILDER" (an unused copy of the Engineer's Build PDA) and the unused "Slot Token - Building"
 
***"''<tt>grenade</tt>''" for only the unused "Slot Token - Grenade"
 
**"'''<tt>item_quality</tt>'''": See description of "quality" above
 
**"'''<tt>image_inventory</tt>'''": The image to display, as an escaped-slash ("\/") path to the material, without the extension
 
**"'''<tt>model_player</tt>'''": The model to display for the item, using a path similar to the above but with an ".mdf" extension, or null if the object has no model.
 
**"'''<tt>attributes</tt>'''" ''(Optional)'': If the item has effects normally associated with it, an object containing an array of "'''<tt>attribute</tt>'''":
 
***"'''<tt>name</tt>'''": The attribute's "name" value ''(see below)''
 
***"'''<tt>class</tt>'''": The attribute's "attribute_class" value ''(see below)''
 
***"'''<tt>value</tt>'''": The "value" of that attribute as a "%0.6f" formatted number: 1 (or 0) for boolean attributes (such as the [[Razorback]]'s backstab blocking), or the multiplier for percentage-based attributes (such as 0.300000 for the [[Direct Hit]]'s 30% blast radius, or 1.800000 for its 180% projectile speed)
 
*"'''<tt>attributes</tt>'''": An object containing an array of "'''<tt>attribute</tt>'''":
 
**"'''<tt>name</tt>'''": A name describing the attribute (eg. "damage bonus" for damage increases found on weapons such as the [[Scotsman's Skullcutter]], or "scattergun has knockback" for the [[Force-A-Nature]]'s knockback)
 
**"'''<tt>defindex</tt>'''": The attribute's unique index, possibly used to refer to unique instances of the item with these attributes in GetPlayerItems.
 
**"'''<tt>attribute_class</tt>'''": an underscore-based name for the attribute (eg. "mult_dmg" for "damage bonus")
 
**"'''<tt>minvalue</tt>'''": The minimum value allowed for this attribute.
 
**"'''<tt>maxvalue</tt>'''": The maximum value allowed for this attribute.
 
*** Note that values found on items are not guaranteed to fall within this range: for instance, "attach particle effect" lists "0.000000" as both its minvalue and maxvalue, but non-zero values are used to specify what particle effect to attach.
 
**"'''<tt>description_string</tt>'''": The tokenized string that describes the attribute (eg. "#Attrib_RocketJumpDmgReduction" for the [[Gunboats]]' "rocket jump damage reduction" attribute, where "#Attrib_RocketJumpDmgReduction" is defined in tf_english.txt as "%s1% blast damage from rocket jumps"), or ''"unused"'' for hidden attributes that aren't listed (eg. a change in ammo count from the normal weapon)
 
**"'''<tt>description_format</tt>'''": A string describing how to format the value for a description:
 
***"''<tt>value_is_percentage</tt>''" for values that translate into percentages and are represented by that percentage (eg. changes to the blast radius)
 
***"''<tt>value_is_inverted_percentage</tt>''" for values that translate into percentages and are represented by the difference in that percentage from 100% (eg. changes to the fire rate)
 
***"''<tt>value_is_additive</tt>''" for values that are a specific number (eg. max health bonuses and bleed durations) and boolean attributes (such as [[The Sandman]]'s ability to knock out balls)
 
**"'''<tt>effect_type</tt>'''": "''positive''" if the effect is outright beneficial to the user (displayed in blue text in the item description window), "''negative''" if the effect is punitive to the user (red text), or "''neutral''" if the effect is more tangential to the normal behavior (eg. the [[Kritzkrieg]]'s ubercharge being critical hits rather than invulnerability) (white text).
 
  
=== Further notes ===
+
;IPlayerService: Methods relating to a Steam user's games.
 +
:;[[WebAPI/GetRecentlyPlayedGames|GetRecentlyPlayedGames]]:
 +
:;[[WebAPI/GetOwnedGames|GetOwnedGames]]:
 +
:;[[WebAPI/GetSteamLevel|GetSteamLevel]]:
 +
:;[[WebAPI/GetBadges|GetBadges]]:
 +
:;[[WebAPI/GetCommunityBadgeProgress|GetCommunityBadgeProgress]]:
  
The first 32 items listed describe the original class weapons, with an extraneous "TF_WEAPON_BUILDER" at defindex 28, which has the icon of the Engineer's Destroy PDA but the model of the Build PDA, and a "TF_WEAPON_FLAREGUN" at defindex 31, which uses "#TF_Weapon_Flaregun" for both item_name and item_type_name (where the normal "Unique Achievement Flaregun" uses "#TF_Unique_Achievement_Flaregun" for the item_name) and the pistol for the model. Every weapon in the first 32's name is its item_class in all caps. The next 3 items (defindex 32-35) describe abortive attempts at the original Medic unlockables, with the names being "Level 1 X" (where X is the name of the original item), and the original's art files defined (although the saw lists the Ubersaw's icon).
+
;ISteamWebAPIUtil: Methods relating to the WebAPI itself.
 +
:;[[WebAPI/GetServerInfo|GetServerInfo]]: Returns WebAPI server time & checks server status.
 +
:;[[WebAPI/GetSupportedAPIList|GetSupportedAPIList]]: Lists all available WebAPI interfaces.
  
Both Engineer PDAs and the Spy PDA use "#TF_Weapon_PDA_Engineer" for both their item_type_name and their item_name.
+
=== Game specific interfaces ===
 +
==== Generic ====
 +
;IEconItems_<ID>: Methods relating to in-game items for supported games.
 +
:;[[WebAPI/GetPlayerItems|GetPlayerItems]]: Lists items in a player's backpack.
 +
:;[[WebAPI/GetSchema|GetSchema]]: Information about the items in a supporting game.
 +
:;[[WebAPI/GetSchemaURL|GetSchemaURL]]: Returns a URL for the games' item_game.txt file.
 +
:;[[WebAPI/GetStoreMetadata|GetStoreMetadata]]: Information about the game's store.
 +
:;[[WebAPI/GetStoreStatus|GetStoreStatus]]: The game's store status.
  
== GetPlayerItems (v0001) ==
+
;IGCVersion_<ID>: TODO.
 +
:;[[WebAPI/GetClientVersion|GetClientVersion]]: TODO
 +
:;[[WebAPI/GetClusterVersion|GetClusterVersion]]: TODO
 +
:;[[WebAPI/GetServerVersion|GetServerVersion]]: TODO
  
The GetPlayerItems call returns a the items for a specific player.
+
;ITFPromos_<ID>: TODO.
 +
:;[[WebAPI/GetItemID|GetItemID]]: TODO
 +
:;[[WebAPI/GrantItem|GrantItem]]: TODO
  
The player is specified with their Steam ID number, as the "SteamID" value in the URL arguments. This is also known as a "SteamID64" value, which one can retrieve either through an OpenID transaction, or by going to the person's steam community page XML feed manually, such as http://steamcommunity.com/id/robinwalker?xml=1. The SteamID64 value is the value listed inside the <steamID64> tags (in the XML feed) and should be something like 76561197960435530.
+
==== Dota 2 ====
 +
;IDOTA2Match_<ID>: Methods relating to Dota 2 matches.
 +
:;[[WebAPI/GetLeagueListing|GetLeagueListing]]: Information about DotaTV-supported leagues.
 +
:;[[WebAPI/GetLiveLeagueGames|GetLiveLeagueGames]]: A list of in-progress league matches, as well as details of that match as it unfolds.
 +
:;[[WebAPI/GetMatchDetails|GetMatchDetails]]: Information about a particular match.
 +
:;[[WebAPI/GetMatchHistory|GetMatchHistory]]: A list of matches, filterable by various parameters.
 +
:;[[WebAPI/GetMatchHistoryBySequenceNum|GetMatchHistoryBySequenceNum]]: A list of matches ordered by their sequence num.
 +
:;[[WebAPI/GetScheduledLeagueGames|GetScheduledLeagueGames]]: A list of scheduled league games coming up.
 +
:;[[WebAPI/GetTeamInfoByTeamID|GetTeamInfoByTeamID]]: A list of all the teams set up in-game.
 +
:;[[WebAPI/GetTournamentPlayerStats|GetTournamentPlayerStats]]: Stats about a particular player within a tournament.
 +
:;[[WebAPI/GetTopLiveGame|GetTopLiveGame]]: TODO
  
Example URL: http://api.steampowered.com/ITFItems_440/GetPlayerItems/v0001/?key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&SteamID=76561197960435530 (returns the items in Robin Walker's inventory)
+
;IEconDOTA2_<ID>: Methods relating to the Dota2 economy.
 +
:;[[WebAPI/GetGameItems|GetGameItems]]: Dota 2 In-game items
 +
:;[[WebAPI/GetItemIconPath|GetItemIconPath]]: TODO
 +
:;[[WebAPI/GetHeroes|GetHeroes]]: A list of heroes within Dota 2.
 +
:;[[WebAPI/GetRarities|GetRarities]]: Dota 2 item rarity list.
 +
:;[[WebAPI/GetTournamentPrizePool|GetTournamentPrizePool]]: The current prizepool for specific tournaments.
 +
:;[[WebAPI/GetEventStatsForAccount|GetEventStatsForAccount]]: TODO
  
=== Status codes ===
+
;IDOTA2MatchStats_<ID>: TODO.
 +
:;[[WebAPI/GetRealtimeStats|GetRealtimeStats]]: TODO
  
*'''<tt>1</tt>''': OK. Data returned as specified below.
+
;IDOTA2Fantasy_<ID>: Methods relating to the Dota 2 fantasy team system.
*'''<tt>8</tt>''' ("<tt>SteamID parameter was missing</tt>"): The "steamID" parameter of the URL was not included, or if present was not a valid SteamID64 value.
+
:;[[WebAPI/GetFantasyPlayerStats|GetFantasyPlayerStats]]: TODO
*'''<tt>15</tt>''' ("<tt>Permission denied</tt>"): The player's profile is set to Private.
+
:;[[WebAPI/GetPlayerOfficialInfo|GetPlayerOfficialInfo]]: TODO
  
=== Result layout ===
+
;IDOTA2StreamSystem_<ID>: Methods relating to the Dota 2 streaming system.
 +
:;[[WebAPI/GetBroadcasterInfo|GetBroadcasterInfo]]: TODO
  
A list of the player's items is returned, as follows:
+
;IDOTA2Teams_<ID>: Methods relating to Dota 2 teams.
 +
:;[[WebAPI/GetTeamInfo|GetTeamInfo]]: TODO
  
*"'''<tt>items</tt>'''": An object containing an unsorted array of "'''<tt>item</tt>'''":
+
;IDOTA2AutomatedTourney_<ID>: TODO
**"'''<tt>id</tt>'''": The unique ID of the specific item.
+
:;[[WebAPI/GetActiveTournamentList|GetActiveTournamentList]]: TODO
**"'''<tt>defindex</tt>'''": the defindex of the item, as found in the item array returned from GetSchema.
 
**"'''<tt>level</tt>'''": The arbitrary "level" value of the item as displayed in the inventory.
 
**"'''<tt>quantity</tt>'''": 1.
 
**"'''<tt>inventory</tt>'''": An inventory token as described below, or 0 if the item has been awarded but not yet found (placed in the backpack).
 
**"'''<tt>quality</tt>'''": The "quality" of the item (see definition in GetSchema).
 
**"'''<tt>attributes</tt>'''": If the item has additional effects to the ones normally associated with it as described in GetSchema, an object containing an array of '''"attribute"''':
 
***"'''<tt>defindex</tt>'''": (eg. 133 for the medal number attribute for the [[Gentle Manne's Service Medal]]).
 
***"'''<tt>value</tt>'''": The value for this attribute for this item (eg. the medal number for the [[Gentle Manne's Service Medal]]).
 
  
=== Inventory Token ===
+
;IDOTA2Ticket_<ID>: TODO
 +
:;[[WebAPI/SetSteamAccountPurchased|SetSteamAccountPurchased]]: TODO
 +
:;[[WebAPI/SteamAccountValidForEvent|SteamAccountValidForEvent]]: TODO
  
The inventory token is a combination of class loadout flags and position in the player's backpack. This unsigned 32 bit number is split into two two-byte words. The high word contains flags for each class. A 1 bit in a class's slot indicates that the items is equipped in the appropriate loadout slot for that class. The low word contains the backback position with 0 being the upper left slot, 1 the second slot from the left on the top row, etc. Here it is visually:
+
==== Portal 2 ====
 +
;IPortal2Leaderboards_<ID>: Methods relating to Portal 2 Leaderboards.
 +
:;[[WebAPI/GetBucketizedData|GetBucketizedData]]: TODO
  
 +
=== Other undocumented interfaces ===
 +
;ISteamGameServerAccount: TODO
 +
;ISteamOAuth2: TODO
 +
;ISteamUserAuth: TODO
 +
;ISteamWebUserPresenceOAuth: TODO
  
  ┌───────────────────────────────────────────────────────────────── Always 1
+
== Notes ==
  │ ┌─┬─┬─┬─┬─┬─┬─────────────────────────────────────────────────── Unused
 
  │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────────── Engineer
 
  │ │ │ │ │ │ │ │ │ ┌─────────────────────────────────────────────── Spy
 
  │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────── Pyro
 
  │ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────────────────────────── Heavy
 
  │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────── Medic
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────────────────────── Demoman
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────── Soldier
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─────────────────────────────────── Sniper
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────── Scout
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─ Backpack Position
 
  │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
 
  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 
  
Examples:
+
=== List of IDs ===
  1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1  Equipped Pyro item
 
                                                                      in backback slot 9
 
  1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1  Unequipped item
 
                                                                      in backback slot 41
 
  1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0  Equipped by Pyro and Engy
 
                                                                      in backback slot 42
 
  
In C++ the backpack position and equip status could be determined from an inventory token with these functions:
+
{{anchor|appids}}
 +
''For a complete list, see [[WebAPI/GetAppList|GetAppList]].''
 +
;240: Counter-Strike: Source
 +
;260: Counter-Strike: Source Beta
 +
;440: Team Fortress 2
 +
;520: Team Fortress 2 Beta
 +
;570: Dota 2
 +
;620: Portal 2
 +
;710: Counter-Strike: Global Offensive Beta Dev
 +
;730: Counter-Strike: Global Offensive
 +
;816: Dota 2 Private Beta
 +
;841: Portal 2 Beta
 +
;205790: Dota 2 (Beta) Test
  
#define CLASS_SCOUT    0
+
=== Methods Requiring a 64-bit User ID ===
#define CLASS_SNIPER    1
+
Most API requests that take an ID parameter require a 64 bit ID, if one is not readily available a vanity URL part can be resolved via [[WebAPI/ResolveVanityURL|ResolveVanityURL]].
#define CLASS_SOLDIER  2
 
#define CLASS_DEMOMAN  3
 
#define CLASS_MEDIC    4
 
#define CLASS_HEAVY    5
 
#define CLASS_PYRO      6
 
#define CLASS_SPY      7
 
#define CLASS_ENGINEER  8
 
 
uint32 ExtractBackpackPosition( uint32 unInventoryToken )
 
{
 
  return unInventoryToken & 0xFFFF;
 
}
 
 
bool IsEquippedForClass( uint32 unInventoryToken, uint32 unClass )
 
{
 
  return 0 != unInventoryToken & ( 1 << ( unClass + 16 ) );
 
}
 
  
Similarly, in PHP (assuming $class is a numeric matching the defines above):
+
== Implementations ==
 +
<!-- Please only add notable implementations to this section. If you have another one to add put it in the Implementations subpage. -->
 +
* [https://github.com/koraktor/steam-condenser Steam Condenser] Ruby, PHP, and Java library.
 +
* [https://github.com/Lagg/steamodd Steamodd] Python library, used by OPTF2.
 +
* [[WebAPI/Implementations|More]]
  
function is_equipped_for_class($class,$inventory_token)
+
== See also ==
{
 
  return ($inventory_token & 0x80000000) && ($inventory_token & (0x00010000 << $class));
 
}
 
function extract_backpack_position($inventory_token)
 
{
 
  return $inventory_token & 0x0000FFFF;
 
}
 
  
In Lua 5.1 (which does not have bitwise operators), these functions can be used:
+
* [[Talk:WebAPI/Feedback|Feedback]] for requests, suggestions, and issues.
  
function extract_backpack_position(inventory_token)
+
[[Category:Valve]]
  return inventory_token % 2^16
+
[[Category:WebAPI| ]]
end
 
 
function is_equipped_for_class(inventory_token, class)
 
  return inventory_token % 2^(class+17) >= 2^(class+16)
 
end
 

Latest revision as of 19:40, 3 June 2023

Contributing

If you would like to help in writing API documentation there is a tool available here (requires python) that can generate skeleton documentation pages that match the style guidelines and can be easily copied and pasted.

Otherwise be sure to follow the existing structure and format of the documentation to keep things consistent.

Common elements

Parameters

Most WebAPI methods take the following arguments in their URL:

key
Your Steam Web API key. Without this, the server will return an HTTP 403 (forbidden) error. A key can be generated here.
format (Optional)
The file format to return output in.
json (default)
The JavaScript Object Notation format
xml
Standard XML
vdf
Valve Data Format
language (Optional)
The ISO639-1 language code for the language all tokenized strings should be returned in. Not all strings have been translated to every language. If a language does not have a string, the English string will be returned instead. If this parameter is omitted the string token will be returned for the strings.

Terminology

A "tokenized string" refers to a string containing "#"-prefixed tokens that are replaced with the equivalent string in the game's VDF for the chosen language. For instance, "TF_Weapon_Jar" is defined as "Jar Based Karate" in tf/resource/tf_english.txt (as found in "team fortress 2 content.gcf").

Methods

General interfaces

ISteamApps
Methods relating to Steam Apps in general.
GetAppList
Full list of every publicly facing program in the store/library.
GetServersAtAddress
Shows all steam-compatible servers related to a IPv4 Address.
UpToDateCheck
Check if a given app version is the most current available.
ISteamEconomy
Methods relating to games' store's assets.
GetAssetClassInfo
Asset metadata
GetAssetPrices
Prices of items in the economy.
ISteamNews
Methods relating to Steam News.
GetNewsForApp
News feed for various games
ISteamRemoteStorage
Methods relating to stored files.
GetCollectionDetails
GetPublishedFileDetails
GetUGCFileDetails
UGC file size, local filename, and URL.
ISteamUser
Methods relating to Steam users.
GetFriendList
User friend list
GetPlayerBans
Player ban/probation status
GetPlayerSummaries
User profile data
GetUserGroupList
Lists Group ID(s) linked with 64 bit ID
ResolveVanityURL
Resolve vanity URL parts to a 64 bit ID.
ISteamUserStats
Methods relating to User stats.
GetGlobalAchievementPercentagesForApp
Statistics showing how much of the player base have unlocked various achievements.
GetGlobalStatsForGame
GetNumberOfCurrentPlayers
Returns the current number of players for an app.
GetPlayerAchievements
Game achievements
GetSchemaForGame
GetUserStatsForGame
IPlayerService
Methods relating to a Steam user's games.
GetRecentlyPlayedGames
GetOwnedGames
GetSteamLevel
GetBadges
GetCommunityBadgeProgress
ISteamWebAPIUtil
Methods relating to the WebAPI itself.
GetServerInfo
Returns WebAPI server time & checks server status.
GetSupportedAPIList
Lists all available WebAPI interfaces.

Game specific interfaces

Generic

IEconItems_<ID>
Methods relating to in-game items for supported games.
GetPlayerItems
Lists items in a player's backpack.
GetSchema
Information about the items in a supporting game.
GetSchemaURL
Returns a URL for the games' item_game.txt file.
GetStoreMetadata
Information about the game's store.
GetStoreStatus
The game's store status.
IGCVersion_<ID>
TODO.
GetClientVersion
TODO
GetClusterVersion
TODO
GetServerVersion
TODO
ITFPromos_<ID>
TODO.
GetItemID
TODO
GrantItem
TODO

Dota 2

IDOTA2Match_<ID>
Methods relating to Dota 2 matches.
GetLeagueListing
Information about DotaTV-supported leagues.
GetLiveLeagueGames
A list of in-progress league matches, as well as details of that match as it unfolds.
GetMatchDetails
Information about a particular match.
GetMatchHistory
A list of matches, filterable by various parameters.
GetMatchHistoryBySequenceNum
A list of matches ordered by their sequence num.
GetScheduledLeagueGames
A list of scheduled league games coming up.
GetTeamInfoByTeamID
A list of all the teams set up in-game.
GetTournamentPlayerStats
Stats about a particular player within a tournament.
GetTopLiveGame
TODO
IEconDOTA2_<ID>
Methods relating to the Dota2 economy.
GetGameItems
Dota 2 In-game items
GetItemIconPath
TODO
GetHeroes
A list of heroes within Dota 2.
GetRarities
Dota 2 item rarity list.
GetTournamentPrizePool
The current prizepool for specific tournaments.
GetEventStatsForAccount
TODO
IDOTA2MatchStats_<ID>
TODO.
GetRealtimeStats
TODO
IDOTA2Fantasy_<ID>
Methods relating to the Dota 2 fantasy team system.
GetFantasyPlayerStats
TODO
GetPlayerOfficialInfo
TODO
IDOTA2StreamSystem_<ID>
Methods relating to the Dota 2 streaming system.
GetBroadcasterInfo
TODO
IDOTA2Teams_<ID>
Methods relating to Dota 2 teams.
GetTeamInfo
TODO
IDOTA2AutomatedTourney_<ID>
TODO
GetActiveTournamentList
TODO
IDOTA2Ticket_<ID>
TODO
SetSteamAccountPurchased
TODO
SteamAccountValidForEvent
TODO

Portal 2

IPortal2Leaderboards_<ID>
Methods relating to Portal 2 Leaderboards.
GetBucketizedData
TODO

Other undocumented interfaces

ISteamGameServerAccount
TODO
ISteamOAuth2
TODO
ISteamUserAuth
TODO
ISteamWebUserPresenceOAuth
TODO

Notes

List of IDs

For a complete list, see GetAppList.

240
Counter-Strike: Source
260
Counter-Strike: Source Beta
440
Team Fortress 2
520
Team Fortress 2 Beta
570
Dota 2
620
Portal 2
710
Counter-Strike: Global Offensive Beta Dev
730
Counter-Strike: Global Offensive
816
Dota 2 Private Beta
841
Portal 2 Beta
205790
Dota 2 (Beta) Test

Methods Requiring a 64-bit User ID

Most API requests that take an ID parameter require a 64 bit ID, if one is not readily available a vanity URL part can be resolved via ResolveVanityURL.

Implementations

See also

  • Feedback for requests, suggestions, and issues.