Steam Web API/Feedback
- 1 Problems
- 2 Suggestions
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 \ . . .
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.
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):
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 (
language) should be available to provide a two-character language name.
ITFItems_440/GetSchema is already doing this.