Steam Web API/Feedback: Difference between revisions
Spezifanta (talk | contribs) (Added ResolveVanityURL URL) |
No edit summary |
||
Line 128: | Line 128: | ||
-- [[User:Jddcef|Jddcef]] 01:57, 9 January 2012 (PST) | -- [[User:Jddcef|Jddcef]] 01:57, 9 January 2012 (PST) | ||
[[Category:Steam]] | [[Category:Steam]] | ||
=== Resolve nickname to Steam ID === | |||
An extremely useful feature would be to grab the Steam IDs of the users in a server. Currently, server queries only return player nicknames, unless you have RCON access to the server. Steam IDs could conceivably be returned by the GetAccountPublicInfoBySteamID but I imagine that would be more cumbersome. A simple solution would be to have a method much like the ResolveVanityURL with the same response: | |||
* <code> http://api.steampowered.com/ISteamUser/ResolveNickname/v0001/?nickname=XXXXXXXXX</code> | |||
=== GetAccountPublicInfoBySteamID Broken? === | |||
Using the following method call, I always get a failed result. | |||
* <code>http://api.steampowered.com/ISteamGameServerAccount/GetAccountPublicInfoBySteamID/v0001/?steamID=90084331676311555</code> | |||
result { | |||
success: false, | |||
error: "SteamID does not refer to a persistent gameserver account" | |||
} | |||
Where the steamID was the value returned for "gameserversteamid" from GetPlayerSummaries while I was connected to "Valve tf Server #8 (srcds111.iad-1)". |
Revision as of 07:55, 18 February 2012
Problems
Data layout & error handling inconsistency
This is really important for a good API: Almost all methods response with other data layouts. While the TF2 methods (except that for the Golden Wrenches) have a consistent layout. All other methods respond with different data. This isn't a huge problem for single applications, but for a library that wants to abstract access to the Web API.
- I was happy to see the first two TF2 methods having a unified layout and error handling and integrated a pretty nice abstraction into my library Steam Condenser. But this doesn't fit the all the other methods that came afterwards and pretty much obsolete any effort to abstract API access into a single class. --Koraktor
As TF2's methods are pretty much everything that's needed, I'm fine with it the way it is, but to be honest, all reponses should more or less look like the follwoing:
response \ |-status | \ | |-code [| \-detail] # This is only needed for errors (or warnings, e.g. "Your API request limit is almost reached: 10 left") \-data \ . . .
API Considerations for Web Developers
Currently, the "Steam Web API" isn't very forgiving to web developers. There is a lack of support for the JSONP protocol and the API's acceptable usage policy requires that the API key is not to be shared. As described, using this API key inside of a Javascript file (which is downloaded in full source by the client) would be against the policy that Valve has provided. This requires that anyone wanting to create a web site that makes use of this data would be required to run a proxy (which I have personally done) in order to properly hide the API key. This could be remedied by changing the usage policy to allow "sharing" of the key, or to simply provide a mechanism that provides public keys that work along-side the private ones.
An API that I am working on strictly enforces that a proxy be used in it's current implementation, but I hope one day to allow someone to provide their API key in their Javascript files and download API data through a jsonp request. This would be ideal for wider usage in the web world. monokrome 04:37, 1 August 2010 (UTC)
I would like to add to user monokrome's suggestion. In the case of TF2, where the data that is returned is usually public, there is little to no security concern for implementing a JSON-P format. It could be done transparently through URL parameters and would not break any existing applications. The benefit would be significantly faster applications since Steam's API servers no longer have to be proxied by the application's servers and the request can be done on the client.
Although, this would require changes to the way Steam handles API keys. If the motivation behind implementing the API key system is to track server load and hinder API abuse, there is much to be learned from well-established JSON-P providers like Twitter, Facebook and Yahoo. Their implementations of JSON-P allow client-side, cross-site requests and also limit usage at the user/client level, instead of at the application level. So a single user (and IP) that is using an abnormal amount of usage can be blacklisted, instead of the entire web application. Doesn't that sound nice?
In order to bring some very cool Steam API applications to light, I hope Valve can implement a more friendly cross-site request protocol. Thanks for reading.
--Dum 01:19, 9 September 2011 (PDT)
Allow custom profile nicknames in the API
Right now you have to know the 64bit SteamIDs for any player related API call. The old community XML allows using the players nicknames (a.k.a. custom URLs). This seems to be a must-have for the Web API.
- This can now be achieved by using ISteamUser/ResolveVanityURL --Spezifanta 05:48, 28 January 2012 (PST)
Suggestions
Allow using API in desktop applications
Please allow using Steam Web API in desktop applications
Provide more information about player profiles (like the old XML interface)
ISteamUser
should either have another method to get the entire information about a player (e.g. friends, groups and games) or GetUserSummaries
should provide these (with an optional argument):
http://api.steampowered.com/ISteamUser/GetPlayerProfile/v0001/?steamid=XXXXXXXXXXXX
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0001/?steamids=XXXXXXXXXXXX&full=1
Provide games and packages information
There should be something like ISteamGame
to retrieve information about every game available on Steam. One method to get all games and one for detailed information about one game, e.g. appid, name, release date, publisher, achievements, store link, price (depending on the country code) etc. and all subIDs (packages) they're included in.
Equally there should be something like ISteamPackage
to retrieve information about every package available on Steam. One method to get all packages and one for detailed information about one package. e.g subid, name and all appIDs of games, that are included and price (depending on the country code).
Both interfaces also should have a third method that only returns a "last update" time stamp of the games / packages list to decrease traffic. This way a developer only needs to update his data if the time stamp has changed.
Search for players and groups
A feature to search for community profiles and groups would be nice, too.
Provide language options
For methods that may return localized data (like ISteamUserStats/GetGlobalAchievementPercentagesForApp
) an additional parameter (lang
or language
) should be available to provide a two-character language name. ITFItems_440/GetSchema
is already doing this.
Provide last 10 persona history
It will be helpful if you can get persona histories via API. The output will be nice if ordered by time from latest.
Access to blotter
It would be great to be able to get the blotter history for a user as JSON/XML (even RSS?). Parsing the HTML is not hard but obviously is quite fragile. More structured information could be provided eg specific dates, achievement names, etc.
Let a user authorise access to private data (ie OAuth)
Currently the only way to get at private data (eg current game, blotter history) is to either create a dummy steam account and have the user add you as a friend or ask the user for their credentials. Providing a way for a user to authorise a third-party website to access their data via something like OAuth would remove this difficulty.
- A great way to do this is using the OpenID system. When someone logs into the site using OpenID, authorize that site and API Key on file for that site to access private data from the user's profile. Optionally, you can have add an agreement tic to notify the user that they are sharing their normally private data. --Deadeye536 01:16, 4 October 2010 (UTC)
- Care to give more info on that? I'm very familiar with both OpenID and OAuth and I'm not how I would get a user would authorise ongoing access to an API using OpenID directly. I suppose something could be (nastily) hacked on via SREG or AX, but the Steam OpenID endpoint doesn't claim support for those Robn 06:54, 25 October 2010 (UTC)
Community Announcements
Allow us to post announcements / events to the community website through the API. This would allow better integration with Clan websites / CMS engines and make the management of communities easier.
Community Data Group API
Currently the only information you can get about groups is who is in them. I'd love to see an equivalent to the player profile, but for groups. Elements: group name, abbreviation, headline, summary, custom url/id, country, avatar images, administers, officers, websites, player of the week, recent announcements
--KarlKFI 13:35, 23 July 2011 (PDT)
List of "Community Game Names"
The Leaderboards and Stats are only available if you know each game's "CommunityGameName". Is there a list of these somewhere?
--KarlKFI 13:35, 23 July 2011 (PDT)
Achievements List
One frequent request is to be able to compare achievements or even just count the number of achievements players have for each game and for all games. Being able to request a list of received achievements for a player and/or total possible achievements for a game would be awesome.
--KarlKFI 13:35, 23 July 2011 (PDT)
- Add ?xml=1 to achievements page of any player. SiPlus 04:49, 11 December 2011 (PST)
Less data
Ability for Clan websites / WCMS to receive less data.
http://api.steampowered.com/ISteamUser/GetPlayerProfile/steamID64/v0003/?customURL=XXXXXXXX
http://api.steampowered.com/ISteamUser/GetPlayerProfile/customURL/v0003/?steamid=XXXXXXXXXXXX
http://api.steampowered.com/ISteamUser/GetPlayerProfile/friends/v0003/?steamid=XXXXXXXXXXXX
http://api.steampowered.com/ISteamUser/GetPlayerProfile/games/v0003/?steamid=XXXXXXXXXXXX
http://api.steampowered.com/ISteamUser/GetPlayerProfile/favoriteGame/v0003/?steamid=XXXXXXXXXXXX
--Diblo Dk 06:44, 27 July 2011 (PDT)
Bugs/Live issues
500 Error
The steamcommunity XML data is returning Error 500 for TF2 Game stats: e.g. this url http://steamcommunity.com/id/ChetFaliszek/stats/TF2/?xml=1 Gives an error page where as it was working before. As referred to by: https://partner.steamgames.com/documentation/community_data -- Jddcef 01:57, 9 January 2012 (PST)
Resolve nickname to Steam ID
An extremely useful feature would be to grab the Steam IDs of the users in a server. Currently, server queries only return player nicknames, unless you have RCON access to the server. Steam IDs could conceivably be returned by the GetAccountPublicInfoBySteamID but I imagine that would be more cumbersome. A simple solution would be to have a method much like the ResolveVanityURL with the same response:
GetAccountPublicInfoBySteamID Broken?
Using the following method call, I always get a failed result.
result { success: false, error: "SteamID does not refer to a persistent gameserver account" }
Where the steamID was the value returned for "gameserversteamid" from GetPlayerSummaries while I was connected to "Valve tf Server #8 (srcds111.iad-1)".