diff --git a/Facepunch.Steamworks.Test/Facepunch.Steamworks.Test.csproj b/Facepunch.Steamworks.Test/Facepunch.Steamworks.Test.csproj index dc48076..4901f2e 100644 --- a/Facepunch.Steamworks.Test/Facepunch.Steamworks.Test.csproj +++ b/Facepunch.Steamworks.Test/Facepunch.Steamworks.Test.csproj @@ -71,6 +71,10 @@ MinimumRecommendedRules.ruleset + + ..\packages\Newtonsoft.Json.9.0.2-beta1\lib\net45\Newtonsoft.Json.dll + True + @@ -96,6 +100,7 @@ + @@ -107,6 +112,9 @@ + + + diff --git a/Facepunch.Steamworks.Test/Web/WebSteamApps.cs b/Facepunch.Steamworks.Test/Web/WebSteamApps.cs new file mode 100644 index 0000000..73c43c3 --- /dev/null +++ b/Facepunch.Steamworks.Test/Web/WebSteamApps.cs @@ -0,0 +1,58 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Facepunch.Steamworks.Test +{ + [TestClass] + public partial class WebSteamApps + { + [TestInitialize] + public void Init() + { + // + // For the sake of tests, we store our Key in an environment variable + // (so we don't end up shipping it to github and exposing it to everyone) + // + Facepunch.SteamApi.Config.Key = Environment.GetEnvironmentVariable( "SteamWebApi", EnvironmentVariableTarget.User ); + + // + // We're going to be using Newtonsoft to deserialize our json + // + Facepunch.SteamApi.Config.DeserializeJson = ( str, type ) => + { + return Newtonsoft.Json.JsonConvert.DeserializeObject( str, type ); + }; + } + + [TestMethod] + public void GetAppBetas() + { + foreach ( var beta in Facepunch.SteamApi.ISteamApps.GetAppBetas( 252490 ).betas ) + { + Console.WriteLine( beta.Key ); + } + } + + [TestMethod] + public void GetAppBuilds() + { + foreach ( var build in Facepunch.SteamApi.ISteamApps.GetAppBuilds( 252490, 10 ).builds ) + { + Console.WriteLine( build.Key ); + Console.WriteLine( " Desc: " + build.Value.Description ); + Console.WriteLine( " Accnt:" + build.Value.AccountIDCreator ); + + foreach ( var depot in build.Value.depots ) + { + Console.WriteLine( " Depot" + depot.Value.DepotId + ":" ); + Console.WriteLine( " GID: " + depot.Value.DepotVersionGID ); + Console.WriteLine( " Bytes: " + depot.Value.TotalOriginalBytes ); + Console.WriteLine( " Compressed: " + depot.Value.TotalCompressedBytes ); + } + } + } + } +} diff --git a/Facepunch.Steamworks.Test/packages.config b/Facepunch.Steamworks.Test/packages.config new file mode 100644 index 0000000..af81a38 --- /dev/null +++ b/Facepunch.Steamworks.Test/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Facepunch.Steamworks/Facepunch.Steamworks.csproj b/Facepunch.Steamworks/Facepunch.Steamworks.csproj index 21d3f90..fe21a51 100644 --- a/Facepunch.Steamworks/Facepunch.Steamworks.csproj +++ b/Facepunch.Steamworks/Facepunch.Steamworks.csproj @@ -144,6 +144,10 @@ + + + + diff --git a/Facepunch.Steamworks/SteamNative/SteamApi.Config.cs b/Facepunch.Steamworks/SteamNative/SteamApi.Config.cs new file mode 100644 index 0000000..ea8f2fc --- /dev/null +++ b/Facepunch.Steamworks/SteamNative/SteamApi.Config.cs @@ -0,0 +1,36 @@ +using System; +using System.Runtime.InteropServices; + +namespace Facepunch +{ + namespace SteamApi + { + /// + /// Static class to configure SteamApi + /// + public static class Config + { + /// + /// Your Steam Api Key is secret. + /// Don't ship it with your game. + /// Treat it like a password. + /// + public static string Key; + + /// + /// Plug your json deserializer in here. We don't force one on you, this is left + /// up to the implementation. We've only tested Newtonsoft.Json though. Here's an example of + /// how to set it up. + /// + /// + /// + /// Facepunch.SteamApi.Config.DeserializeJson = ( str, type ) => + /// { + /// return Newtonsoft.Json.JsonConvert.DeserializeObject( str, type ); + /// }; + /// + /// + public static Func DeserializeJson; + } + } +} \ No newline at end of file diff --git a/Facepunch.Steamworks/SteamNative/SteamApi.Response.cs b/Facepunch.Steamworks/SteamNative/SteamApi.Response.cs new file mode 100644 index 0000000..397c3bf --- /dev/null +++ b/Facepunch.Steamworks/SteamNative/SteamApi.Response.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Xml; +using System.Xml.Serialization; + +namespace Facepunch.SteamApi +{ + internal class ApiResponse + { + public T Response { get; set; } + } + + public partial class ISteamApps + { + public class GetAppBetasResponse + { + public class Beta + { + public ulong BuildId { get; set; } + public string Description { get; set; } + public bool ReqPassword { get; set; } + public bool ReqLocalCS { get; set; } + } + + public Dictionary betas; + } + + public class GetAppBuildsResponse + { + public class Build + { + public ulong BuildId { get; set; } + public string Description { get; set; } + public uint CreationTime { get; set; } + public ulong AccountIDCreator { get; set; } + + public class Depot + { + public ulong DepotId { get; set; } + public ulong DepotVersionGID { get; set; } + public ulong TotalOriginalBytes { get; set; } + public ulong TotalCompressedBytes { get; set; } + } + + public Dictionary depots; + } + + public Dictionary builds; + } + } + + +} diff --git a/Facepunch.Steamworks/SteamNative/SteamApi.Utility.cs b/Facepunch.Steamworks/SteamNative/SteamApi.Utility.cs new file mode 100644 index 0000000..87c31be --- /dev/null +++ b/Facepunch.Steamworks/SteamNative/SteamApi.Utility.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Runtime.InteropServices; +using System.Xml; +using System.Xml.Serialization; + +namespace Facepunch.SteamApi +{ + public class Utility + { + public static T WebGet( string url ) + { + var www = new System.Net.WebClient(); + var data = www.DownloadString( url ); + + if ( typeof( T ) == typeof( string ) ) + return (T)(object)data; + + var response = DeserializeJson>( data ); + + www.Dispose(); + + return response.Response; + } + + private static T DeserializeJson( string data ) + { + return (T)Facepunch.SteamApi.Config.DeserializeJson( data, typeof( T ) ); + } + + + + + } +} diff --git a/Facepunch.Steamworks/SteamNative/SteamApi.cs b/Facepunch.Steamworks/SteamNative/SteamApi.cs new file mode 100644 index 0000000..f5fee24 --- /dev/null +++ b/Facepunch.Steamworks/SteamNative/SteamApi.cs @@ -0,0 +1,1895 @@ +using System; +using System.Runtime.InteropServices; + +namespace Facepunch.SteamApi +{ + /// + /// IGameInventory + /// + public partial class IGameInventory + { + private const string Url = "http://api.steampowered.com/IGameInventory/"; + + /// appid of game + /// The steam ID of the account to operate on + /// The command to run on that asset + /// The context to fetch history for + /// The arguments that were provided with the command in the first place + public static string GetHistoryCommandDetails(uint appid, ulong steamid, string command, ulong contextid, string arguments) + { + string url = $"{Url}GetHistoryCommandDetails/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&steamid={steamid}&command={command}&contextid={contextid}&arguments={arguments}"; + return Utility.WebGet( url ); + } + + /// appid of game + /// The Steam ID to fetch history for + /// The context to fetch history for + /// Start time of the history range to collect + /// End time of the history range to collect + public static string GetUserHistory(uint appid, ulong steamid, ulong contextid, uint starttime, uint endtime) + { + string url = $"{Url}GetUserHistory/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&steamid={steamid}&contextid={contextid}&starttime={starttime}&endtime={endtime}"; + return Utility.WebGet( url ); + } + + /// appid of game + /// The asset ID to operate on + /// The context to fetch history for + /// A unique 32 bit ID for the support person executing the command + public static string HistoryExecuteCommands(uint appid, ulong steamid, ulong contextid, uint actorid) + { + string url = $"{Url}/HistoryExecuteCommands/v0001/"; + return url; + } + + /// appid of game + /// The asset ID to operate on + /// The context to fetch history for + public static string SupportGetAssetHistory(uint appid, ulong assetid, ulong contextid) + { + string url = $"{Url}SupportGetAssetHistory/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&assetid={assetid}&contextid={contextid}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamApps + /// + public partial class ISteamApps + { + private const string Url = "http://api.steampowered.com/ISteamApps/"; + + /// AppID of game + public static GetAppBetasResponse GetAppBetas(uint appid) + { + string url = $"{Url}GetAppBetas/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + /// AppID of game + /// # of builds to retrieve (default 10) + public static GetAppBuildsResponse GetAppBuilds(uint appid, uint count) + { + string url = $"{Url}GetAppBuilds/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&count={count}"; + return Utility.WebGet( url ); + } + + /// AppID of depot + public static string GetAppDepotVersions(uint appid) + { + string url = $"{Url}GetAppDepotVersions/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + public static string GetAppList() + { + string url = $"{Url}GetAppList/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&"; + return Utility.WebGet( url ); + } + + /// AppID of game + /// Time range begin + /// Time range end + /// include reports that were not bans + /// include reports that were bans + /// minimum report id + public static string GetCheatingReports(uint appid, uint timebegin, uint timeend, bool includereports, bool includebans, ulong reportidmin) + { + string url = $"{Url}GetCheatingReports/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&timebegin={timebegin}&timeend={timeend}&includereports={includereports}&includebans={includebans}&reportidmin={reportidmin}"; + return Utility.WebGet( url ); + } + + /// AppID of game + public static string GetPlayersBanned(uint appid) + { + string url = $"{Url}GetPlayersBanned/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + /// Query filter string + /// Limit number of servers in the response + public static string GetServerList(string filter, uint limit) + { + string url = $"{Url}GetServerList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&filter={filter}&limit={limit}"; + return Utility.WebGet( url ); + } + + /// IP or IP:queryport to list + public static string GetServersAtAddress(string addr) + { + string url = $"{Url}GetServersAtAddress/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&addr={addr}"; + return Utility.WebGet( url ); + } + + /// AppID of game + /// BuildID + /// beta key, required. Use public for default branch + /// optional description for this build + public static string SetAppBuildLive(uint appid, uint buildid, string betakey, string description) + { + string url = $"{Url}/SetAppBuildLive/v0001/"; + return url; + } + + /// AppID of game + /// The installed version of the game + public static string UpToDateCheck(uint appid, uint version) + { + string url = $"{Url}UpToDateCheck/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&version={version}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamBitPay + /// + public partial class ISteamBitPay + { + private const string Url = "http://api.steampowered.com/ISteamBitPay/"; + + public static string BitPayPaymentNotification() + { + string url = $"{Url}/BitPayPaymentNotification/v0001/"; + return url; + } + + } + + /// + /// ISteamCDN + /// + public partial class ISteamCDN + { + private const string Url = "http://api.steampowered.com/ISteamCDN/"; + + /// Steam name of CDN property + /// comma-separated list of allowed IP address blocks in CIDR format - blank for not used + /// comma-separated list of allowed client network AS numbers - blank for not used + /// comma-separated list of allowed client IP country codes in ISO 3166-1 format - blank for not used + public static string SetClientFilters(string cdnname, string allowedipblocks, string allowedasns, string allowedipcountries) + { + string url = $"{Url}/SetClientFilters/v0001/"; + return url; + } + + /// Steam name of CDN property + /// Outgoing network traffic in Mbps + /// Incoming network traffic in Mbps + /// Percent CPU load + /// Percent cache hits + public static string SetPerformanceStats(string cdnname, uint mbps_sent, uint mbps_recv, uint cpu_percent, uint cache_hit_percent) + { + string url = $"{Url}/SetPerformanceStats/v0001/"; + return url; + } + + } + + /// + /// ISteamCommunity + /// + public partial class ISteamCommunity + { + private const string Url = "http://api.steampowered.com/ISteamCommunity/"; + + /// SteamID of user doing the reporting + /// SteamID of the entity being accused of abuse + /// AppID to check for ownership + /// Abuse type code (see EAbuseReportType enum) + /// Content type code (see ECommunityContentType enum) + /// Narrative from user + /// GID of related record (depends on content type) + public static string ReportAbuse(ulong steamidActor, ulong steamidTarget, uint appid, uint abuseType, uint contentType, string description, ulong gid) + { + string url = $"{Url}/ReportAbuse/v0001/"; + return url; + } + + } + + /// + /// ISteamDirectory + /// + public partial class ISteamDirectory + { + private const string Url = "http://api.steampowered.com/ISteamDirectory/"; + + /// Client's Steam cell ID + /// Max number of servers to return + public static string GetCMList(uint cellid, uint maxcount) + { + string url = $"{Url}GetCMList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&cellid={cellid}&maxcount={maxcount}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamEconomy + /// + public partial class ISteamEconomy + { + private const string Url = "http://api.steampowered.com/ISteamEconomy/"; + + /// That the key is associated with. Must be a steam economy app. + /// SteamID of user attempting to initiate a trade + /// SteamID of user that is the target of the trade invitation + public static string CanTrade(uint appid, ulong steamid, ulong targetid) + { + string url = $"{Url}CanTrade/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&steamid={steamid}&targetid={targetid}"; + return Utility.WebGet( url ); + } + + /// The app ID the user is buying assets for + /// SteamID of the user making a purchase + /// The transaction ID + /// The local language for the user + public static string FinalizeAssetTransaction(uint appid, ulong steamid, string txnid, string language) + { + string url = $"{Url}/FinalizeAssetTransaction/v0001/"; + return url; + } + + /// Must be a steam economy app. + /// The user's local language + /// Number of classes requested. Must be at least one. + /// Class ID of the nth class. + /// Instance ID of the nth class. + public static string GetAssetClassInfo(uint appid, string language, uint class_count, ulong classid0, ulong instanceid0) + { + string url = $"{Url}GetAssetClassInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&language={language}&class_count={class_count}&classid0={classid0}&instanceid0={instanceid0}"; + return Utility.WebGet( url ); + } + + /// Must be a steam economy app. + /// The currency to filter for + /// The user's local language + public static string GetAssetPrices(uint appid, string currency, string language) + { + string url = $"{Url}GetAssetPrices/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}¤cy={currency}&language={language}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// The app to get exported items from. + /// The context in the app to get exported items from. + public static string GetExportedAssetsForUser(ulong steamid, uint appid, ulong contextid) + { + string url = $"{Url}GetExportedAssetsForUser/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}&contextid={contextid}"; + return Utility.WebGet( url ); + } + + /// Must be a steam economy app. + public static string GetMarketPrices(uint appid) + { + string url = $"{Url}GetMarketPrices/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + /// The app ID the user is buying assets for + /// SteamID of user making a purchase + /// The ID of the first asset the user is buying - there must be at least one + /// The quantity of assetid0's the the user is buying + /// The local currency for the user + /// The local language for the user + /// The user's IP address + /// The referring URL + /// If true (default is false), the authorization will appear in the user's steam client overlay, rather than as a web page - useful for stores that are embedded in products. + public static string StartAssetTransaction(uint appid, ulong steamid, string assetid0, uint assetquantity0, string currency, string language, string ipaddress, string referrer, bool clientauth) + { + string url = $"{Url}/StartAssetTransaction/v0001/"; + return url; + } + + /// That the key is associated with. Must be a steam economy app. + /// SteamID of first user in the trade + /// SteamID of second user in the trade + public static string StartTrade(uint appid, ulong partya, ulong partyb) + { + string url = $"{Url}StartTrade/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&partya={partya}&partyb={partyb}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamEnvoy + /// + public partial class ISteamEnvoy + { + private const string Url = "http://api.steampowered.com/ISteamEnvoy/"; + + public static string PaymentOutNotification() + { + string url = $"{Url}/PaymentOutNotification/v0001/"; + return url; + } + + public static string PaymentOutReversalNotification() + { + string url = $"{Url}/PaymentOutReversalNotification/v0001/"; + return url; + } + + } + + /// + /// ISteamGameServerStats + /// + public partial class ISteamGameServerStats + { + private const string Url = "http://api.steampowered.com/ISteamGameServerStats/"; + + /// game id to get stats for, if not a mod, it's safe to use appid here + /// appID of the game + /// range start date/time (Format: YYYY-MM-DD HH:MM:SS, seattle local time + /// range end date/time (Format: YYYY-MM-DD HH:MM:SS, seattle local time + /// Max number of results to return (up to 1000) + public static string GetGameServerPlayerStatsForGame(ulong gameid, uint appid, string rangestart, string rangeend, uint maxresults) + { + string url = $"{Url}GetGameServerPlayerStatsForGame/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&gameid={gameid}&appid={appid}&rangestart={rangestart}&rangeend={rangeend}&maxresults={maxresults}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamLeaderboards + /// + public partial class ISteamLeaderboards + { + private const string Url = "http://api.steampowered.com/ISteamLeaderboards/"; + + /// appid of game + /// name of the leaderboard to delete + public static string DeleteLeaderboard(uint appid, string name) + { + string url = $"{Url}/DeleteLeaderboard/v0001/"; + return url; + } + + /// appid of game + /// name of the leaderboard to create + /// sort method to use for this leaderboard (defaults to Ascending) + /// display type for this leaderboard (defaults to Numeric) + /// if this is true the leaderboard will be created if it doesn't exist. Defaults to true. + /// if this is true the leaderboard scores cannot be set by clients, and can only be set by publisher via SetLeaderboardScore WebAPI. Defaults to false. + /// if this is true the leaderboard scores can only be read for friends by clients, scores can always be read by publisher. Defaults to false. + public static string FindOrCreateLeaderboard(uint appid, string name, string sortmethod, string displaytype, bool createifnotfound, bool onlytrustedwrites, bool onlyfriendsreads) + { + string url = $"{Url}/FindOrCreateLeaderboard/v0002/"; + return url; + } + + /// appid of game + /// range start or 0 + /// range end or max LB entries + /// SteamID used for friend & around user requests + /// ID of the leaderboard to view + /// type of request: RequestGlobal, RequestAroundUser, RequestFriends + public static string GetLeaderboardEntries(uint appid, int rangestart, int rangeend, ulong steamid, int leaderboardid, uint datarequest) + { + string url = $"{Url}GetLeaderboardEntries/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&rangestart={rangestart}&rangeend={rangeend}&steamid={steamid}&leaderboardid={leaderboardid}&datarequest={datarequest}"; + return Utility.WebGet( url ); + } + + /// appid of game + public static string GetLeaderboardsForGame(uint appid) + { + string url = $"{Url}GetLeaderboardsForGame/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + /// appid of game + /// numeric ID of the target leaderboard. Can be retrieved from GetLeaderboardsForGame + public static string ResetLeaderboard(uint appid, uint leaderboardid) + { + string url = $"{Url}/ResetLeaderboard/v0001/"; + return url; + } + + /// appid of game + /// numeric ID of the target leaderboard. Can be retrieved from GetLeaderboardsForGame + /// steamID to set the score for + /// the score to set for this user + /// update method to use. Can be "KeepBest" or "ForceUpdate" + /// game-specific details for how the score was earned. Up to 256 bytes. + public static string SetLeaderboardScore(uint appid, uint leaderboardid, ulong steamid, int score, string scoremethod, byte[] details) + { + string url = $"{Url}/SetLeaderboardScore/v0001/"; + return url; + } + + } + + /// + /// ISteamMicroTxn + /// + public partial class ISteamMicroTxn + { + private const string Url = "http://api.steampowered.com/ISteamMicroTxn/"; + + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + /// Date for next process + public static string AdjustAgreement(ulong steamid, ulong agreementid, uint appid, string nextprocessdate) + { + string url = $"{Url}/AdjustAgreement/v0001/"; + return url; + } + + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + public static string CancelAgreement(ulong steamid, ulong agreementid, uint appid) + { + string url = $"{Url}/CancelAgreement/v0001/"; + return url; + } + + /// 3rd party ID for transaction + /// AppID of game this transaction is for + public static string FinalizeTxn(ulong orderid, uint appid) + { + string url = $"{Url}/FinalizeTxn/v0002/"; + return url; + } + + /// AppID of game this transaction is for + /// Report type (GAMESALES, STEAMSTORE, SETTLEMENT) + /// Beginning time to start report from (RFC 3339 UTC format) + /// Max number of results to return (up to 1000) + public static string GetReport(uint appid, string type, string time, uint maxresults) + { + string url = $"{Url}GetReport/v0003/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&type={type}&time={time}&maxresults={maxresults}"; + return Utility.WebGet( url ); + } + + /// SteamID of user making purchase + /// AppID of game + public static string GetUserAgreementInfo(ulong steamid, uint appid) + { + string url = $"{Url}GetUserAgreementInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user making purchase + /// ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web + public static string GetUserInfo(ulong steamid, string ipaddress) + { + string url = $"{Url}GetUserInfo/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&ipaddress={ipaddress}"; + return Utility.WebGet( url ); + } + + /// 3rd party ID for transaction + /// SteamID of user making purchase + /// AppID of game this transaction is for + /// Number of items in cart + /// ISO 639-1 language code of description + /// ISO 4217 currency code + /// session where user will authorize the transaction. client or web (defaults to client) + /// ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web + /// 3rd party ID for item + /// Quantity of this item + /// Total cost (in cents) of item(s) + /// Description of item + /// Optional category grouping for item + /// Optional bundleid of associated bundle + /// Optional recurring billing type + /// Optional start date for recurring billing + /// Optional end date for recurring billing + /// Optional period for recurring billing + /// Optional frequency for recurring billing + /// Optional recurring billing amount + /// Number of bundles in cart + /// 3rd party ID of the bundle. This shares the same ID space as 3rd party items. + /// Quantity of this bundle + /// Description of bundle + /// Optional category grouping for bundle + public static string InitTxn(ulong orderid, ulong steamid, uint appid, uint itemcount, string language, string currency, string usersession, string ipaddress, uint[] itemid, uint[] qty, int[] amount, string[] description, string[] category, uint[] associated_bundle, string[] billingtype, string[] startdate, string[] enddate, string[] period, uint[] frequency, string[] recurringamt, uint bundlecount, uint[] bundleid, uint[] bundle_qty, string[] bundle_desc, string[] bundle_category) + { + string url = $"{Url}/InitTxn/v0003/"; + return url; + } + + /// 3rd party ID for transaction + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + /// Total cost (in cents) to charge + /// ISO 4217 currency code + public static string ProcessAgreement(ulong orderid, ulong steamid, ulong agreementid, uint appid, int amount, string currency) + { + string url = $"{Url}/ProcessAgreement/v0001/"; + return url; + } + + /// AppID of game this transaction is for + /// 3rd party ID for transaction + /// Steam transaction ID + public static string QueryTxn(uint appid, ulong orderid, ulong transid) + { + string url = $"{Url}QueryTxn/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&orderid={orderid}&transid={transid}"; + return Utility.WebGet( url ); + } + + /// 3rd party ID for transaction + /// AppID of game this transaction is for + public static string RefundTxn(ulong orderid, uint appid) + { + string url = $"{Url}/RefundTxn/v0002/"; + return url; + } + + } + + /// + /// ISteamMicroTxnSandbox + /// + public partial class ISteamMicroTxnSandbox + { + private const string Url = "http://api.steampowered.com/ISteamMicroTxnSandbox/"; + + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + /// Date for next process + public static string AdjustAgreement(ulong steamid, ulong agreementid, uint appid, string nextprocessdate) + { + string url = $"{Url}/AdjustAgreement/v0001/"; + return url; + } + + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + public static string CancelAgreement(ulong steamid, ulong agreementid, uint appid) + { + string url = $"{Url}/CancelAgreement/v0001/"; + return url; + } + + /// 3rd party ID for transaction + /// AppID of game this transaction is for + public static string FinalizeTxn(ulong orderid, uint appid) + { + string url = $"{Url}/FinalizeTxn/v0002/"; + return url; + } + + /// AppID of game this transaction is for + /// Report type (GAMESALES, STEAMSTORE, SETTLEMENT) + /// Beginning time to start report from (RFC 3339 UTC format) + /// Max number of results to return (up to 1000) + public static string GetReport(uint appid, string type, string time, uint maxresults) + { + string url = $"{Url}GetReport/v0003/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&type={type}&time={time}&maxresults={maxresults}"; + return Utility.WebGet( url ); + } + + /// SteamID of user making purchase + /// AppID of game + public static string GetUserAgreementInfo(ulong steamid, uint appid) + { + string url = $"{Url}GetUserAgreementInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user making purchase + /// ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web + public static string GetUserInfo(ulong steamid, string ipaddress) + { + string url = $"{Url}GetUserInfo/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&ipaddress={ipaddress}"; + return Utility.WebGet( url ); + } + + /// 3rd party ID for transaction + /// SteamID of user making purchase + /// AppID of game this transaction is for + /// Number of items in cart + /// ISO 639-1 language code of description + /// ISO 4217 currency code + /// 3rd party ID for item + /// Quantity of this item + /// Total cost (in cents) of item(s) + /// Description of item + /// Optional category grouping for item + /// Optional recurring billing type + /// Optional start date for recurring billing + /// Optional end date for recurring billing + /// Optional period for recurring billing + /// Optional frequency for recurring billing + /// Optional recurring billing amount + public static string InitTxn(ulong orderid, ulong steamid, uint appid, uint itemcount, string language, string currency, uint[] itemid, uint[] qty, int[] amount, string[] description, string[] category, string[] billingtype, string[] startdate, string[] enddate, string[] period, uint[] frequency, string[] recurringamt) + { + string url = $"{Url}/InitTxn/v0003/"; + return url; + } + + /// SteamID of user with the agreement + /// ID of agreement + /// AppID of game + /// Total cost (in cents) to charge + /// ISO 4217 currency code + public static string ProcessAgreement(ulong steamid, ulong agreementid, uint appid, int amount, string currency) + { + string url = $"{Url}/ProcessAgreement/v0001/"; + return url; + } + + /// AppID of game this transaction is for + /// 3rd party ID for transaction + /// Steam transaction ID + public static string QueryTxn(uint appid, ulong orderid, ulong transid) + { + string url = $"{Url}QueryTxn/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&orderid={orderid}&transid={transid}"; + return Utility.WebGet( url ); + } + + /// 3rd party ID for transaction + /// AppID of game this transaction is for + public static string RefundTxn(ulong orderid, uint appid) + { + string url = $"{Url}/RefundTxn/v0002/"; + return url; + } + + } + + /// + /// ISteamNews + /// + public partial class ISteamNews + { + private const string Url = "http://api.steampowered.com/ISteamNews/"; + + /// AppID to retrieve news for + /// Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit. + /// Retrieve posts earlier than this date (unix epoch timestamp) + /// # of posts to retrieve (default 20) + /// Comma-seperated list of feed names to return news for + public static string GetNewsForApp(uint appid, uint maxlength, uint enddate, uint count, string feeds) + { + string url = $"{Url}GetNewsForApp/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&maxlength={maxlength}&enddate={enddate}&count={count}&feeds={feeds}"; + return Utility.WebGet( url ); + } + + /// AppID to retrieve news for + /// Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit. + /// Retrieve posts earlier than this date (unix epoch timestamp) + /// # of posts to retrieve (default 20) + /// Comma-seperated list of feed names to return news for + public static string GetNewsForAppAuthed(uint appid, uint maxlength, uint enddate, uint count, string feeds) + { + string url = $"{Url}GetNewsForAppAuthed/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&maxlength={maxlength}&enddate={enddate}&count={count}&feeds={feeds}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamPayPalPaymentsHub + /// + public partial class ISteamPayPalPaymentsHub + { + private const string Url = "http://api.steampowered.com/ISteamPayPalPaymentsHub/"; + + public static string PayPalPaymentsHubPaymentNotification() + { + string url = $"{Url}/PayPalPaymentsHubPaymentNotification/v0001/"; + return url; + } + + } + + /// + /// ISteamPublishedItemSearch + /// + public partial class ISteamPublishedItemSearch + { + private const string Url = "http://api.steampowered.com/ISteamPublishedItemSearch/"; + + /// SteamID of user + /// appID of product + /// Starting index in the result set (0 based) + /// Number Requested + /// Number of Tags Specified + /// Number of User specific tags requested + /// Whether the user making the request is an admin for the app and can see private files + /// EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items + /// Tag to filter result set + /// A user specific tag + public static string RankedByPublicationOrder(ulong steamid, uint appid, uint startidx, uint count, uint tagcount, uint usertagcount, bool hasappadminaccess, uint fileType, string[] tag, string[] usertag) + { + string url = $"{Url}/RankedByPublicationOrder/v0001/"; + return url; + } + + /// SteamID of user + /// appID of product + /// Starting index in the result set (0 based) + /// Number Requested + /// Number of Tags Specified + /// Number of User specific tags requested + /// Whether the user making the request is an admin for the app and can see private files + /// EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items + /// [1,7] number of days for the trend period, including today + /// Tag to filter result set + /// A user specific tag + public static string RankedByTrend(ulong steamid, uint appid, uint startidx, uint count, uint tagcount, uint usertagcount, bool hasappadminaccess, uint fileType, uint days, string[] tag, string[] usertag) + { + string url = $"{Url}/RankedByTrend/v0001/"; + return url; + } + + /// SteamID of user + /// appID of product + /// Starting index in the result set (0 based) + /// Number Requested + /// Number of Tags Specified + /// Number of User specific tags requested + /// Whether the user making the request is an admin for the app and can see private files + /// EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items + /// Tag to filter result set + /// A user specific tag + public static string RankedByVote(ulong steamid, uint appid, uint startidx, uint count, uint tagcount, uint usertagcount, bool hasappadminaccess, uint fileType, string[] tag, string[] usertag) + { + string url = $"{Url}/RankedByVote/v0001/"; + return url; + } + + /// SteamID of user + /// appID relevant to all subsequent tags + /// Number of Tags Specified + /// Number of User specific tags requested + /// Whether the user making the request is an admin for the app and can see private files + /// EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items + /// Tag to filter result set + /// A user specific tag + public static string ResultSetSummary(ulong steamid, ulong appid, uint tagcount, uint usertagcount, bool hasappadminaccess, uint fileType, string[] tag, string[] usertag) + { + string url = $"{Url}/ResultSetSummary/v0001/"; + return url; + } + + } + + /// + /// ISteamPublishedItemVoting + /// + public partial class ISteamPublishedItemVoting + { + private const string Url = "http://api.steampowered.com/ISteamPublishedItemVoting/"; + + /// Steam ID of user + /// appID of product + /// Count of how many items we are querying + /// The Published File ID who's vote details are required + public static string ItemVoteSummary(ulong steamid, uint appid, uint count, ulong[] publishedfileid) + { + string url = $"{Url}/ItemVoteSummary/v0001/"; + return url; + } + + /// Steam ID of user + /// Count of how many items we are querying + /// A Specific Published Item + public static string UserVoteSummary(ulong steamid, uint count, ulong[] publishedfileid) + { + string url = $"{Url}/UserVoteSummary/v0001/"; + return url; + } + + } + + /// + /// ISteamRemoteStorage + /// + public partial class ISteamRemoteStorage + { + private const string Url = "http://api.steampowered.com/ISteamRemoteStorage/"; + + /// SteamID of user + /// appID of product + public static string EnumerateUserPublishedFiles(ulong steamid, uint appid) + { + string url = $"{Url}/EnumerateUserPublishedFiles/v0001/"; + return url; + } + + /// SteamID of user + /// appID of product + /// EUCMListType + public static string EnumerateUserSubscribedFiles(ulong steamid, uint appid, uint listtype) + { + string url = $"{Url}/EnumerateUserSubscribedFiles/v0001/"; + return url; + } + + /// Number of collections being requested + /// collection ids to get the details for + public static string GetCollectionDetails(uint collectioncount, ulong[] publishedfileids) + { + string url = $"{Url}/GetCollectionDetails/v0001/"; + return url; + } + + /// Number of items being requested + /// published file id to look up + public static string GetPublishedFileDetails(uint itemcount, ulong[] publishedfileids) + { + string url = $"{Url}/GetPublishedFileDetails/v0001/"; + return url; + } + + /// If specified, only returns details if the file is owned by the SteamID specified + /// ID of UGC file to get info for + /// appID of product + public static string GetUGCFileDetails(ulong steamid, ulong ugcid, uint appid) + { + string url = $"{Url}GetUGCFileDetails/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&ugcid={ugcid}&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// ID of UGC file whose bits are being fiddled with + /// appID of product to change updating state for + /// New state of flag + public static string SetUGCUsedByGC(ulong steamid, ulong ugcid, uint appid, bool used) + { + string url = $"{Url}/SetUGCUsedByGC/v0001/"; + return url; + } + + /// SteamID of user + /// appID of product + /// published file id to subscribe to + public static string SubscribePublishedFile(ulong steamid, uint appid, ulong publishedfileid) + { + string url = $"{Url}/SubscribePublishedFile/v0001/"; + return url; + } + + /// SteamID of user + /// appID of product + /// published file id to unsubscribe from + public static string UnsubscribePublishedFile(ulong steamid, uint appid, ulong publishedfileid) + { + string url = $"{Url}/UnsubscribePublishedFile/v0001/"; + return url; + } + + } + + /// + /// ISteamSpecialSurvey + /// + public partial class ISteamSpecialSurvey + { + private const string Url = "http://api.steampowered.com/ISteamSpecialSurvey/"; + + /// appid of game + /// ID of the survey being taken + /// SteamID of the user taking the survey + /// Survey identity verification token for the user + public static string CheckUserStatus(uint appid, uint surveyid, ulong steamid, string token) + { + string url = $"{Url}CheckUserStatus/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&surveyid={surveyid}&steamid={steamid}&token={token}"; + return Utility.WebGet( url ); + } + + /// appid of game + /// ID of the survey being taken + /// SteamID of the user taking the survey + /// Survey identity verification token for the user + public static string SetUserFinished(uint appid, uint surveyid, ulong steamid, string token) + { + string url = $"{Url}/SetUserFinished/v0001/"; + return url; + } + + } + + /// + /// ISteamUser + /// + public partial class ISteamUser + { + private const string Url = "http://api.steampowered.com/ISteamUser/"; + + /// SteamID of user + /// AppID to check for ownership + public static string CheckAppOwnership(ulong steamid, uint appid) + { + string url = $"{Url}CheckAppOwnership/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// Comma-delimited list of appids (max: 100) + public static string GetAppPriceInfo(ulong steamid, string appids) + { + string url = $"{Url}GetAppPriceInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appids={appids}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// relationship type (ex: friend) + public static string GetFriendList(ulong steamid, string relationship) + { + string url = $"{Url}GetFriendList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&relationship={relationship}"; + return Utility.WebGet( url ); + } + + /// Comma-delimited list of SteamIDs + public static string GetPlayerBans(string steamids) + { + string url = $"{Url}GetPlayerBans/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamids={steamids}"; + return Utility.WebGet( url ); + } + + /// Comma-delimited list of SteamIDs (max: 100) + public static string GetPlayerSummaries(string steamids) + { + string url = $"{Url}GetPlayerSummaries/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&steamids={steamids}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + public static string GetPublisherAppOwnership(ulong steamid) + { + string url = $"{Url}GetPublisherAppOwnership/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + public static string GetUserGroupList(ulong steamid) + { + string url = $"{Url}GetUserGroupList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// PackageID to grant + /// ip address of user in string format (xxx.xxx.xxx.xxx). + /// Optionally associate third party key during grant. 'thirdpartyappid' will have to be set. + /// Has to be set if 'thirdpartykey' is set. The appid associated with the 'thirdpartykey'. + public static string GrantPackage(ulong steamid, uint packageid, string ipaddress, string thirdpartykey, uint thirdpartyappid) + { + string url = $"{Url}/GrantPackage/v0001/"; + return url; + } + + /// The vanity URL to get a SteamID for + /// The type of vanity URL. 1 (default): Individual profile, 2: Group, 3: Official game group + public static string ResolveVanityURL(string vanityurl, int url_type) + { + string url = $"{Url}ResolveVanityURL/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&vanityurl={vanityurl}&url_type={url_type}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamUserAuth + /// + public partial class ISteamUserAuth + { + private const string Url = "http://api.steampowered.com/ISteamUserAuth/"; + + /// Should be the users steamid, unencrypted. + /// Should be a 32 byte random blob of data, which is then encrypted with RSA using the Steam system's public key. Randomness is important here for security. + /// Should be the users hashed loginkey, AES encrypted with the sessionkey. + public static string AuthenticateUser(ulong steamid, byte[] sessionkey, byte[] encrypted_loginkey) + { + string url = $"{Url}/AuthenticateUser/v0001/"; + return url; + } + + /// appid of game + /// Ticket from GetAuthSessionTicket. + public static string AuthenticateUserTicket(uint appid, string ticket) + { + string url = $"{Url}AuthenticateUserTicket/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&ticket={ticket}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamUserOAuth + /// + public partial class ISteamUserOAuth + { + private const string Url = "http://api.steampowered.com/ISteamUserOAuth/"; + + /// OAuth2 token for which to return details + public static string GetTokenDetails(string access_token) + { + string url = $"{Url}GetTokenDetails/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&access_token={access_token}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamUserStats + /// + public partial class ISteamUserStats + { + private const string Url = "http://api.steampowered.com/ISteamUserStats/"; + + /// GameID to retrieve the achievement percentages for + public static string GetGlobalAchievementPercentagesForApp(ulong gameid) + { + string url = $"{Url}GetGlobalAchievementPercentagesForApp/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&gameid={gameid}"; + return Utility.WebGet( url ); + } + + /// AppID that we're getting global stats for + /// Number of stats get data for + /// Names of stat to get data for + /// Start date for daily totals (unix epoch timestamp) + /// End date for daily totals (unix epoch timestamp) + public static string GetGlobalStatsForGame(uint appid, uint count, string[] name, uint startdate, uint enddate) + { + string url = $"{Url}GetGlobalStatsForGame/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&count={count}&name[0]={name[0]}&startdate={startdate}&enddate={enddate}"; + return Utility.WebGet( url ); + } + + /// AppID that we're getting user count for + public static string GetNumberOfCurrentPlayers(uint appid) + { + string url = $"{Url}GetNumberOfCurrentPlayers/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// AppID to get achievements for + /// Language to return strings for + public static string GetPlayerAchievements(ulong steamid, uint appid, string l) + { + string url = $"{Url}GetPlayerAchievements/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}&l={l}"; + return Utility.WebGet( url ); + } + + /// appid of game + /// localized language to return (english, french, etc.) + public static string GetSchemaForGame(uint appid, string l) + { + string url = $"{Url}GetSchemaForGame/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&l={l}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// appid of game + public static string GetUserStatsForGame(ulong steamid, uint appid) + { + string url = $"{Url}GetUserStatsForGame/v0002/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid={appid}"; + return Utility.WebGet( url ); + } + + /// SteamID of user + /// appid of game + /// Number of stats and achievements to set a value for (name/value param pairs) + /// Name of stat or achievement to set + /// Value to set + public static string SetUserStatsForGame(ulong steamid, uint appid, uint count, string[] name, uint[] value) + { + string url = $"{Url}/SetUserStatsForGame/v0001/"; + return url; + } + + } + + /// + /// ISteamVideo + /// + public partial class ISteamVideo + { + private const string Url = "http://api.steampowered.com/ISteamVideo/"; + + /// SteamID of user + /// appID of the video + /// ID of the video on the provider's site + /// Account name of the video's owner on the provider's site + public static string AddVideo(ulong steamid, uint appid, string videoid, string accountname) + { + string url = $"{Url}/AddVideo/v0001/"; + return url; + } + + } + + /// + /// ISteamWebAPIUtil + /// + public partial class ISteamWebAPIUtil + { + private const string Url = "http://api.steampowered.com/ISteamWebAPIUtil/"; + + public static string GetServerInfo() + { + string url = $"{Url}GetServerInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&"; + return Utility.WebGet( url ); + } + + public static string GetSupportedAPIList() + { + string url = $"{Url}GetSupportedAPIList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&"; + return Utility.WebGet( url ); + } + + } + + /// + /// ISteamWebUserPresenceOAuth + /// + public partial class ISteamWebUserPresenceOAuth + { + private const string Url = "http://api.steampowered.com/ISteamWebUserPresenceOAuth/"; + + /// Steam ID of the user + /// UMQ Session ID + /// Message that was last known to the user + /// Caller-specific poll id + /// Long-poll timeout in seconds + /// How many seconds is client considering itself idle, e.g. screen is off + /// Boolean, 0 (default): return steamid_from in output, 1: return accountid_from + public static string PollStatus(string steamid, ulong umqid, uint message, uint pollid, uint sectimeout, uint secidletime, uint use_accountids) + { + string url = $"{Url}/PollStatus/v0001/"; + return url; + } + + } + + /// + /// ISteamWorkshop + /// + public partial class ISteamWorkshop + { + private const string Url = "http://api.steampowered.com/ISteamWorkshop/"; + + /// AppID of game this transaction is for + /// Number of items to associate + /// the workshop published file id + /// 3rd party ID for item + /// Percentage of revenue the owners of the workshop item will get from the sale of the item [0.0, 100.0]. For bundle-like items, send over an entry for each item in the bundle (gameitemid = bundle id) with different publishedfileids and with the revenue percentage pre-split amongst the items in the bundle (i.e. 30% / 10 items in the bundle) + /// Game's description of the game item + public static string AssociateWorkshopItems(uint appid, uint itemcount, ulong[] publishedfileid, uint[] gameitemid, float[] revenuepercentage, string[] gameitemdescription) + { + string url = $"{Url}/AssociateWorkshopItems/v0001/"; + return url; + } + + /// AppID of game this transaction is for + public static string GetContributors(uint appid) + { + string url = $"{Url}/GetContributors/v0001/"; + return url; + } + + } + + /// + /// IGameServersService + /// + public partial class IGameServersService + { + private const string Url = "http://api.steampowered.com/IGameServersService/"; + + /// The app to use the account for + /// The memo to set on the new account + public static string CreateAccount(uint appid, string memo) + { + string url = $"{Url}/CreateAccount/v0001/"; + return url; + } + + /// The SteamID of the game server account to delete + public static string DeleteAccount(ulong steamid) + { + string url = $"{Url}/DeleteAccount/v0001/"; + return url; + } + + public static string GetAccountList() + { + string url = $"{Url}GetAccountList/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&"; + return Utility.WebGet( url ); + } + + /// The SteamID of the game server to get info on + public static string GetAccountPublicInfo(ulong steamid) + { + string url = $"{Url}GetAccountPublicInfo/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// + public static string GetServerIPsBySteamID(ulong server_steamids) + { + string url = $"{Url}GetServerIPsBySteamID/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&server_steamids={server_steamids}"; + return Utility.WebGet( url ); + } + + /// + public static string GetServerSteamIDsByIP(string server_ips) + { + string url = $"{Url}GetServerSteamIDsByIP/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&server_ips={server_ips}"; + return Utility.WebGet( url ); + } + + /// Login token to query + public static string QueryLoginToken(string login_token) + { + string url = $"{Url}QueryLoginToken/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&login_token={login_token}"; + return Utility.WebGet( url ); + } + + /// The SteamID of the game server to reset the login token of + public static string ResetLoginToken(ulong steamid) + { + string url = $"{Url}/ResetLoginToken/v0001/"; + return url; + } + + /// + /// + /// + public static string SetBanStatus(ulong steamid, bool banned, uint ban_seconds) + { + string url = $"{Url}/SetBanStatus/v0001/"; + return url; + } + + /// The SteamID of the game server to set the memo on + /// The memo to set on the new account + public static string SetMemo(ulong steamid, string memo) + { + string url = $"{Url}/SetMemo/v0001/"; + return url; + } + + } + + /// + /// IBroadcastService + /// + public partial class IBroadcastService + { + private const string Url = "http://api.steampowered.com/IBroadcastService/"; + + /// + /// + /// + /// + public static string PostGameDataFrame(uint appid, ulong steamid, ulong broadcast_id, string frame_data) + { + string url = $"{Url}/PostGameDataFrame/v0001/"; + return url; + } + + } + + /// + /// IPublishedFileService + /// + public partial class IPublishedFileService + { + private const string Url = "http://api.steampowered.com/IPublishedFileService/"; + + /// enumeration EPublishedFileQueryType in clientenums.h + /// Current page + /// (Optional) The number of results, per page to return. + /// App that created the files + /// App that consumes the files + /// Tags to match on. See match_all_tags parameter below + /// (Optional) Tags that must NOT be present on a published file to satisfy the query. + /// If true, then items must have all the tags specified, otherwise they must have at least one of the tags. + /// Required flags that must be set on any returned items + /// Flags that must not be set on any returned items + /// Text to match in the item's title or description + /// EPublishedFileInfoMatchingFileType + /// Find all items that reference the given item. + /// If query_type is k_PublishedFileQueryType_RankedByTrend, then this is the number of days to get votes for [1,7]. + /// If query_type is k_PublishedFileQueryType_RankedByTrend, then limit result set just to items that have votes within the day range given + /// Allow stale data to be returned for the specified number of seconds. + /// Language to search in and also what gets returned. Defaults to English. + /// Required key-value tags to match on. + /// (Optional) If true, only return the total number of files that satisfy this query. + /// (Optional) If true, only return the published file ids of files that satisfy this query. + /// Return vote data + /// Return tags in the file details + /// Return key-value tags in the file details + /// Return preview image and video details in the file details + /// Return child item ids in the file details + /// Populate the short_description field instead of file_description + /// Return pricing information, if applicable + /// Populate the metadata + public static string QueryFiles(uint query_type, uint page, uint numperpage, uint creator_appid, uint appid, string requiredtags, string excludedtags, bool match_all_tags, string required_flags, string omitted_flags, string search_text, uint filetype, ulong child_publishedfileid, uint days, bool include_recent_votes_only, uint cache_max_age_seconds, int language, string required_kv_tags, bool totalonly, bool ids_only, bool return_vote_data, bool return_tags, bool return_kv_tags, bool return_previews, bool return_children, bool return_short_description, bool return_for_sale_data, bool return_metadata) + { + string url = $"{Url}QueryFiles/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&query_type={query_type}&page={page}&numperpage={numperpage}&creator_appid={creator_appid}&appid={appid}&requiredtags={requiredtags}&excludedtags={excludedtags}&match_all_tags={match_all_tags}&required_flags={required_flags}&omitted_flags={omitted_flags}&search_text={search_text}&filetype={filetype}&child_publishedfileid={child_publishedfileid}&days={days}&include_recent_votes_only={include_recent_votes_only}&cache_max_age_seconds={cache_max_age_seconds}&language={language}&required_kv_tags={required_kv_tags}&totalonly={totalonly}&ids_only={ids_only}&return_vote_data={return_vote_data}&return_tags={return_tags}&return_kv_tags={return_kv_tags}&return_previews={return_previews}&return_children={return_children}&return_short_description={return_short_description}&return_for_sale_data={return_for_sale_data}&return_metadata={return_metadata}"; + return Utility.WebGet( url ); + } + + /// + /// + /// + public static string SetDeveloperMetadata(ulong publishedfileid, uint appid, string metadata) + { + string url = $"{Url}/SetDeveloperMetadata/v0001/"; + return url; + } + + /// + /// + /// + /// + public static string UpdateTags(ulong publishedfileid, uint appid, string add_tags, string remove_tags) + { + string url = $"{Url}/UpdateTags/v0001/"; + return url; + } + + } + + /// + /// IEconService + /// + public partial class IEconService + { + private const string Url = "http://api.steampowered.com/IEconService/"; + + /// + public static string CancelTradeOffer(ulong tradeofferid) + { + string url = $"{Url}/CancelTradeOffer/v0001/"; + return url; + } + + /// + public static string DeclineTradeOffer(ulong tradeofferid) + { + string url = $"{Url}/DeclineTradeOffer/v0001/"; + return url; + } + + /// + public static string FlushAssetAppearanceCache(uint appid) + { + string url = $"{Url}/FlushAssetAppearanceCache/v0001/"; + return url; + } + + /// User to clear cache for. + /// App to clear cache for. + /// Context to clear cache for. + public static string FlushInventoryCache(ulong steamid, uint appid, ulong contextid) + { + string url = $"{Url}/FlushInventoryCache/v0001/"; + return url; + } + + /// The number of trades to return information for + /// The time of the last trade shown on the previous page of results, or the time of the first trade if navigating back + /// The tradeid shown on the previous page of results, or the ID of the first trade if navigating back + /// The user wants the previous page of results, so return the previous max_trades trades before the start time and ID + /// If set, the item display data for the items included in the returned trades will also be returned + /// The language to use when loading item display data + /// + /// If set, the total number of trades the account has participated in will be included in the response + public static string GetTradeHistory(uint max_trades, uint start_after_time, ulong start_after_tradeid, bool navigating_back, bool get_descriptions, string language, bool include_failed, bool include_total) + { + string url = $"{Url}GetTradeHistory/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&max_trades={max_trades}&start_after_time={start_after_time}&start_after_tradeid={start_after_tradeid}&navigating_back={navigating_back}&get_descriptions={get_descriptions}&language={language}&include_failed={include_failed}&include_total={include_total}"; + return Utility.WebGet( url ); + } + + /// + /// + public static string GetTradeOffer(ulong tradeofferid, string language) + { + string url = $"{Url}GetTradeOffer/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&tradeofferid={tradeofferid}&language={language}"; + return Utility.WebGet( url ); + } + + /// Request the list of sent offers. + /// Request the list of received offers. + /// If set, the item display data for the items included in the returned trade offers will also be returned. + /// The language to use when loading item display data. + /// Indicates we should only return offers which are still active, or offers that have changed in state since the time_historical_cutoff + /// Indicates we should only return offers which are not active. + /// When active_only is set, offers updated since this time will also be returned + public static string GetTradeOffers(bool get_sent_offers, bool get_received_offers, bool get_descriptions, string language, bool active_only, bool historical_only, uint time_historical_cutoff) + { + string url = $"{Url}GetTradeOffers/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&get_sent_offers={get_sent_offers}&get_received_offers={get_received_offers}&get_descriptions={get_descriptions}&language={language}&active_only={active_only}&historical_only={historical_only}&time_historical_cutoff={time_historical_cutoff}"; + return Utility.WebGet( url ); + } + + /// The time the user last visited. If not passed, will use the time the user last visited the trade offer page. + public static string GetTradeOffersSummary(uint time_last_visit) + { + string url = $"{Url}GetTradeOffersSummary/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&time_last_visit={time_last_visit}"; + return Utility.WebGet( url ); + } + + } + + /// + /// IPlayerService + /// + public partial class IPlayerService + { + private const string Url = "http://api.steampowered.com/IPlayerService/"; + + /// The player we're asking about + public static string GetBadges(ulong steamid) + { + string url = $"{Url}GetBadges/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// The player we're asking about + /// The badge we're asking about + public static string GetCommunityBadgeProgress(ulong steamid, int badgeid) + { + string url = $"{Url}GetCommunityBadgeProgress/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&badgeid={badgeid}"; + return Utility.WebGet( url ); + } + + /// The player we're asking about + /// true if we want additional details (name, icon) about each game + /// Free games are excluded by default. If this is set, free games the user has played will be returned. + /// if set, restricts result set to the passed in apps + public static string GetOwnedGames(ulong steamid, bool include_appinfo, bool include_played_free_games, uint appids_filter) + { + string url = $"{Url}GetOwnedGames/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&include_appinfo={include_appinfo}&include_played_free_games={include_played_free_games}&appids_filter={appids_filter}"; + return Utility.WebGet( url ); + } + + /// The player we're asking about + /// The number of games to return (0/unset: all) + public static string GetRecentlyPlayedGames(ulong steamid, uint count) + { + string url = $"{Url}GetRecentlyPlayedGames/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&count={count}"; + return Utility.WebGet( url ); + } + + /// The player we're asking about + public static string GetSteamLevel(ulong steamid) + { + string url = $"{Url}GetSteamLevel/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// The player we're asking about + /// The game player is currently playing + public static string IsPlayingSharedGame(ulong steamid, uint appid_playing) + { + string url = $"{Url}IsPlayingSharedGame/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}&appid_playing={appid_playing}"; + return Utility.WebGet( url ); + } + + /// + /// + /// + public static string RecordOfflinePlaytime(ulong steamid, string ticket, string play_sessions) + { + string url = $"{Url}/RecordOfflinePlaytime/v0001/"; + return url; + } + + } + + /// + /// IGameNotificationsService + /// + public partial class IGameNotificationsService + { + private const string Url = "http://api.steampowered.com/IGameNotificationsService/"; + + /// The appid to create the session for. + /// Game-specified context value the game can used to associate the session with some object on their backend. + /// The title of the session to be displayed within each user's list of sessions. + /// The initial state of all users in the session. + /// (Optional) steamid to make the request on behalf of -- if specified, the user must be in the session and all users being added to the session must be friends with the user. + public static string CreateSession(uint appid, ulong context, string title, string users, ulong steamid) + { + string url = $"{Url}/CreateSession/v0001/"; + return url; + } + + /// The sessionid to delete. + /// The appid of the session to delete. + /// (Optional) steamid to make the request on behalf of -- if specified, the user must be in the session. + public static string DeleteSession(ulong sessionid, uint appid, ulong steamid) + { + string url = $"{Url}/DeleteSession/v0001/"; + return url; + } + + /// The sessionid to delete. + /// The appid of the session to delete. + public static string DeleteSessionBatch(ulong sessionid, uint appid) + { + string url = $"{Url}/DeleteSessionBatch/v0001/"; + return url; + } + + /// The sessionid to request details for. Optional. If not specified, all the user's sessions will be returned. + /// The user whose sessions are to be enumerated. + /// (Optional) Boolean determining whether the message for all users should be included. Defaults to false. + /// (Optional) Boolean determining whether the message for the authenticated user should be included. Defaults to false. + /// (Optional) Language to localize the text in. + public static string EnumerateSessionsForApp(uint appid, ulong steamid, bool include_all_user_messages, bool include_auth_user_message, string language) + { + string url = $"{Url}EnumerateSessionsForApp/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&steamid={steamid}&include_all_user_messages={include_all_user_messages}&include_auth_user_message={include_auth_user_message}&language={language}"; + return Utility.WebGet( url ); + } + + /// + /// The appid for the sessions. + /// Language to localize the text in. + public static string GetSessionDetailsForApp(string sessions, uint appid, string language) + { + string url = $"{Url}GetSessionDetailsForApp/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&sessions={sessions}&appid={appid}&language={language}"; + return Utility.WebGet( url ); + } + + /// The steamid to request notifications for. + /// The appid to request notifications for. + public static string RequestNotifications(ulong steamid, uint appid) + { + string url = $"{Url}/RequestNotifications/v0001/"; + return url; + } + + /// The sessionid to update. + /// The appid of the session to update. + /// (Optional) The new title of the session. If not specified, the title will not be changed. + /// (Optional) A list of users whose state will be updated to reflect the given state. If the users are not already in the session, they will be added to it. + /// (Optional) steamid to make the request on behalf of -- if specified, the user must be in the session and all users being added to the session must be friends with the user. + public static string UpdateSession(ulong sessionid, uint appid, string title, string users, ulong steamid) + { + string url = $"{Url}/UpdateSession/v0001/"; + return url; + } + + } + + /// + /// IInventoryService + /// + public partial class IInventoryService + { + private const string Url = "http://api.steampowered.com/IInventoryService/"; + + /// + /// + /// + /// + /// Should notify the user that the item was added to their Steam Inventory. + public static string AddItem(uint appid, ulong itemdefid, string itempropsjson, ulong steamid, bool notify) + { + string url = $"{Url}/AddItem/v0001/"; + return url; + } + + /// + /// + /// + /// + /// Should notify the user that the item was added to their Steam Inventory. + public static string AddPromoItem(uint appid, ulong itemdefid, string itempropsjson, ulong steamid, bool notify) + { + string url = $"{Url}/AddPromoItem/v0001/"; + return url; + } + + /// + /// + /// + /// + /// + public static string ExchangeItem(uint appid, ulong steamid, ulong materialsitemid, uint materialsquantity, ulong outputitemdefid) + { + string url = $"{Url}/ExchangeItem/v0001/"; + return url; + } + + /// + /// + public static string GetInventory(uint appid, ulong steamid) + { + string url = $"{Url}GetInventory/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// + /// + /// + /// + /// Allow stale data to be returned for the specified number of seconds. + public static string GetItemDefs(uint appid, string modifiedsince, ulong itemdefids, ulong workshopids, uint cache_max_age_seconds) + { + string url = $"{Url}GetItemDefs/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&modifiedsince={modifiedsince}&itemdefids={itemdefids}&workshopids={workshopids}&cache_max_age_seconds={cache_max_age_seconds}"; + return Utility.WebGet( url ); + } + + /// + public static string GetPriceSheet(int ecurrency) + { + string url = $"{Url}GetPriceSheet/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&ecurrency={ecurrency}"; + return Utility.WebGet( url ); + } + + } + + /// + /// IEconMarketService + /// + public partial class IEconMarketService + { + private const string Url = "http://api.steampowered.com/IEconMarketService/"; + + /// The app making the request + /// The SteamID of the user whose listings should be canceled + /// Whether or not to wait until all listings have been canceled before returning the response + public static string CancelAppListingsForUser(uint appid, ulong steamid, bool synchronous) + { + string url = $"{Url}/CancelAppListingsForUser/v0001/"; + return url; + } + + /// The app that's asking. Must match the app of the listing and must belong to the publisher group that owns the API key making the request + /// The identifier of the listing to get information for + public static string GetAssetID(uint appid, ulong listingid) + { + string url = $"{Url}GetAssetID/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&listingid={listingid}"; + return Utility.WebGet( url ); + } + + /// The SteamID of the user to check + public static string GetMarketEligibility(ulong steamid) + { + string url = $"{Url}GetMarketEligibility/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// The language to use in item descriptions + /// Number of rows per page + /// The result number to start at + /// If present, the app ID to limit results to + /// If present, prices returned will be represented in this currency + public static string GetPopular(string language, uint rows, uint start, uint filter_appid, uint ecurrency) + { + string url = $"{Url}GetPopular/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&language={language}&rows={rows}&start={start}&filter_appid={filter_appid}&ecurrency={ecurrency}"; + return Utility.WebGet( url ); + } + + } + + /// + /// ITestExternalPrivilegeService + /// + public partial class ITestExternalPrivilegeService + { + private const string Url = "http://api.steampowered.com/ITestExternalPrivilegeService/"; + + public static string CallPublisherKey() + { + string url = $"{Url}/CallPublisherKey/v0001/"; + return url; + } + + /// + public static string CallPublisherKeyOwnsApp(uint appid) + { + string url = $"{Url}/CallPublisherKeyOwnsApp/v0001/"; + return url; + } + + } + + /// + /// ICheatReportingService + /// + public partial class ICheatReportingService + { + private const string Url = "http://api.steampowered.com/ICheatReportingService/"; + + /// steamid of the user. + /// The appid the user is playing. + /// session id + public static string EndSecureMultiplayerSession(ulong steamid, uint appid, ulong session_id) + { + string url = $"{Url}/EndSecureMultiplayerSession/v0001/"; + return url; + } + + /// The appid. + /// The beginning of the time range . + /// The end of the time range. + /// Minimum reportID to include + /// (Optional) Include reports. + /// (Optional) Include ban requests. + /// (Optional) Query just for this steamid. + public static string GetCheatingReports(uint appid, uint timeend, uint timebegin, ulong reportidmin, bool includereports, bool includebans, ulong steamid) + { + string url = $"{Url}GetCheatingReports/v0001/?key={Facepunch.SteamApi.Config.Key}&format=json&appid={appid}&timeend={timeend}&timebegin={timebegin}&reportidmin={reportidmin}&includereports={includereports}&includebans={includebans}&steamid={steamid}"; + return Utility.WebGet( url ); + } + + /// steamid of the user who is reported as cheating. + /// The appid. + public static string RemovePlayerGameBan(ulong steamid, uint appid) + { + string url = $"{Url}/RemovePlayerGameBan/v0001/"; + return url; + } + + /// steamid of the user running and reporting the cheat. + /// The appid. + /// path and file name of the cheat executable. + /// web url where the cheat was found and downloaded. + /// local system time now. + /// local system time when cheat process started. ( 0 if not yet run ) + /// local system time when cheat process stopped. ( 0 if still running ) + /// descriptive name for the cheat. + /// process ID of the running game. + /// process ID of the cheat process that ran + /// cheat param 1 + /// cheat param 2 + public static string ReportCheatData(ulong steamid, uint appid, string pathandfilename, string webcheaturl, ulong time_now, ulong time_started, ulong time_stopped, string cheatname, uint game_process_id, uint cheat_process_id, ulong cheat_param_1, ulong cheat_param_2) + { + string url = $"{Url}/ReportCheatData/v0001/"; + return url; + } + + /// steamid of the user who is reported as cheating. + /// The appid. + /// (Optional) steamid of the user or game server who is reporting the cheating. + /// (Optional) App specific data about the cheating. + /// (Optional) extra information about the source of the cheating - was it a heuristic. + /// (Optional) extra information about the source of the cheating - was it a detection. + /// (Optional) extra information about the source of the cheating - was it a player report. + /// (Optional) dont return report id + /// (Optional) extra information about state of game - was it a specific type of game play (0 = generic) + /// (Optional) extra information indicating how far back the game thinks is interesting for this user + /// (Optional) level of severity of bad action being reported + public static string ReportPlayerCheating(ulong steamid, uint appid, ulong steamidreporter, ulong appdata, bool heuristic, bool detection, bool playerreport, bool noreportid, uint gamemode, uint suspicionstarttime, uint severity) + { + string url = $"{Url}/ReportPlayerCheating/v0001/"; + return url; + } + + /// steamid of the user who is reported as cheating. + /// The appid. + /// The reportid originally used to report cheating. + /// Text describing cheating infraction. + /// Ban duration requested in seconds. + /// Delay the ban according to default ban delay rules. + /// Additional information about the ban request. + public static string RequestPlayerGameBan(ulong steamid, uint appid, ulong reportid, string cheatdescription, uint duration, bool delayban, uint flags) + { + string url = $"{Url}/RequestPlayerGameBan/v0001/"; + return url; + } + + /// steamid of the user. + /// The appid the user is playing. + /// session id + public static string RequestVacStatusForUser(ulong steamid, uint appid, ulong session_id) + { + string url = $"{Url}/RequestVacStatusForUser/v0001/"; + return url; + } + + /// steamid of the user. + /// The appid the user is playing. + public static string StartSecureMultiplayerSession(ulong steamid, uint appid) + { + string url = $"{Url}/StartSecureMultiplayerSession/v0001/"; + return url; + } + + } + + /// + /// IAccountRecoveryService + /// + public partial class IAccountRecoveryService + { + private const string Url = "http://api.steampowered.com/IAccountRecoveryService/"; + + /// + /// + /// + /// + public static string ReportAccountRecoveryData(string loginuser_list, string install_config, string shasentryfile, string machineid) + { + string url = $"{Url}/ReportAccountRecoveryData/v0001/"; + return url; + } + + /// + public static string RetrieveAccountRecoveryData(string requesthandle) + { + string url = $"{Url}/RetrieveAccountRecoveryData/v0001/"; + return url; + } + + } + + /// + /// IWorkshopService + /// + public partial class IWorkshopService + { + private const string Url = "http://api.steampowered.com/IWorkshopService/"; + + /// + /// + public static string GetFinalizedContributors(uint appid, uint gameitemid) + { + string url = $"{Url}/GetFinalizedContributors/v0001/"; + return url; + } + + /// + /// + /// + /// + public static string GetItemDailyRevenue(uint appid, uint item_id, uint date_start, uint date_end) + { + string url = $"{Url}/GetItemDailyRevenue/v0001/"; + return url; + } + + /// + /// + public static string PopulateItemDescriptions(uint appid, string languages) + { + string url = $"{Url}/PopulateItemDescriptions/v0001/"; + return url; + } + + /// + /// + /// + /// + /// Only validates the rules and does not persist them. + /// + public static string SetItemPaymentRules(uint appid, uint gameitemid, string associated_workshop_files, string partner_accounts, bool validate_only, bool make_workshop_files_subscribable) + { + string url = $"{Url}/SetItemPaymentRules/v0001/"; + return url; + } + + } + +} diff --git a/Generator/CodeWriter/CodeWriter.cs b/Generator/CodeWriter/CodeWriter.cs index bafc096..a868bf4 100644 --- a/Generator/CodeWriter/CodeWriter.cs +++ b/Generator/CodeWriter/CodeWriter.cs @@ -11,10 +11,12 @@ namespace Generator public partial class CodeWriter { private SteamApiDefinition def; + private WebApiDefinition webdef; - public CodeWriter( SteamApiDefinition def ) + public CodeWriter( SteamApiDefinition def, WebApiDefinition webdef ) { this.def = def; + this.webdef = webdef; WorkoutTypes(); } @@ -101,6 +103,14 @@ public void ToFolder( string folder ) System.IO.File.WriteAllText( $"{folder}SteamNative.Platform.Mac.cs", sb.ToString() ); } + { + sb = new StringBuilder(); + Header( "Facepunch.SteamApi" ); + WebApi(); + Footer(); + System.IO.File.WriteAllText( $"{folder}SteamApi.cs", sb.ToString() ); + } + { GenerateClasses( $"{folder}SteamNative." ); } @@ -147,12 +157,12 @@ private List BuildArguments( SteamApiDefinition.MethodDef.ParamType[] return args; } - private void Header() + private void Header( string NamespaceName = "SteamNative" ) { WriteLine( "using System;" ); WriteLine( "using System.Runtime.InteropServices;" ); WriteLine(); - StartBlock( "namespace SteamNative" ); + StartBlock( "namespace " + NamespaceName ); } private void Footer() diff --git a/Generator/CodeWriter/WebApi.cs b/Generator/CodeWriter/WebApi.cs new file mode 100644 index 0000000..853aeef --- /dev/null +++ b/Generator/CodeWriter/WebApi.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Generator +{ + public partial class CodeWriter + { + public static string[] HasReturnTypes = new string[] + { + "ISteamApps.GetAppBetas", + "ISteamApps.GetAppBuilds", + }; + + private void WebApi() + { + foreach ( var o in webdef.apilist.interfaces ) + { + // + // Skip any that end in numbers + if ( char.IsNumber( o.name.Last() ) ) + continue; + + WriteLine( $"/// " ); + WriteLine( $"/// {o.name}" ); + WriteLine( $"/// " ); + StartBlock( $"public partial class {o.name}" ); + { + WriteLine( $"private const string Url = \"http://api.steampowered.com/{o.name}/\";" ); + WriteLine(); + + + foreach ( var m in o.methods.OrderBy( x => x.name ) ) + { + var LatestVersion = o.methods + .Where( x => x.name == m.name ) + .Max( x => x.version ); + + // Skip this method if it's not the latest + if ( LatestVersion != m.version ) + continue; + + WebApiMethod( o.name, m ); + } + } + EndBlock(); + WriteLine(); + + } + } + + private void WebApiMethod( string parent, WebApiDefinition.ApiList.Interface.Method m ) + { + var pars = m.parameters.Where ( x => x.name != "key" ); + + var parameters = string.Join( ", ", pars.Select( x => FormatParameter( x ) ).Where( x => x != null ) ); + + foreach ( var p in pars ) + { + WriteLine( $"/// {p.description}" ); + } + + var returnType = "string"; + + if ( HasReturnTypes.Contains( $"{parent}.{m.name}" ) ) + { + returnType = m.name + "Response"; + } + + StartBlock( $"public static {returnType} {m.name}({parameters})" ); + { + if ( m.httpmethod == "GET" ) + { + var getParameters = string.Join( "&", pars.Select( x => FormatGetParameter( x ) ).Where( x => x != null ) ); + WriteLine( $"string url = $\"{{Url}}{m.name}/v{m.version.ToString( "0000" )}/?key={{Facepunch.SteamApi.Config.Key}}&format=json&{getParameters}\";" ); + WriteLine( $"return Utility.WebGet<{returnType}>( url );" ); + } + else + { + WriteLine( $"string url = $\"{{Url}}/{m.name}/v{m.version.ToString( "0000" )}/\";" ); + WriteLine( $"return url;" ); + } + + } + EndBlock(); + WriteLine(); + } + + private object FormatGetParameter( WebApiDefinition.ApiList.Interface.Method.Parameter x ) + { + return $"{x.name}={{{x.name}}}"; + } + + private object FormatParameter( WebApiDefinition.ApiList.Interface.Method.Parameter x ) + { + var name = x.name; + + var type = ToManagedType( x.type ); + + if ( type == "{message}" ) type = "string"; + if ( type == "rawbinary" ) type = "byte[]"; + + if ( name.EndsWith( "[0]" ) ) + { + name = name.Replace( "[0]", "" ); + type += "[]"; + } + + return $"{type} {name}"; + } + + + } +} diff --git a/Generator/Generator.csproj b/Generator/Generator.csproj index 64bfb3d..662821f 100644 --- a/Generator/Generator.csproj +++ b/Generator/Generator.csproj @@ -51,6 +51,7 @@ + @@ -60,6 +61,7 @@ + diff --git a/Generator/Program.cs b/Generator/Program.cs index e402aa8..f44f4e2 100644 --- a/Generator/Program.cs +++ b/Generator/Program.cs @@ -14,13 +14,16 @@ static void Main( string[] args ) var content = System.IO.File.ReadAllText( "steam_sdk/steam_api.json" ); var def = Newtonsoft.Json.JsonConvert.DeserializeObject( content ); + var webcontent = System.IO.File.ReadAllText( "steam_sdk/web_api.json" ); + var webdef = Newtonsoft.Json.JsonConvert.DeserializeObject( webcontent ); + AddExtras( def ); var parser = new CodeParser( @"steam_sdk" ); parser.ExtendDefinition( def ); - var generator = new CodeWriter( def ); + var generator = new CodeWriter( def, webdef ); generator.ToFolder( "../Facepunch.Steamworks/SteamNative/" ); } diff --git a/Generator/WebApiDefinition.cs b/Generator/WebApiDefinition.cs new file mode 100644 index 0000000..e161ea3 --- /dev/null +++ b/Generator/WebApiDefinition.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Newtonsoft.Json; + +namespace Generator +{ + public class WebApiDefinition + { + public class ApiList + { + public Interface[] interfaces { get; set; } + + public class Interface + { + public string name { get; set; } + + public Method[] methods { get; set; } + + public class Method + { + public string name { get; set; } + public int version { get; set; } + public string httpmethod { get; set; } + + public Parameter[] parameters { get; set; } + + public class Parameter + { + public string name { get; set; } + public string type { get; set; } + public bool optional { get; set; } + public string description { get; set; } + } + } + } + } + + public ApiList apilist { get; set; } + } +} diff --git a/Generator/steam_sdk/web_api.json b/Generator/steam_sdk/web_api.json new file mode 100644 index 0000000..5c63259 --- /dev/null +++ b/Generator/steam_sdk/web_api.json @@ -0,0 +1,8091 @@ +{ + "apilist": { + "interfaces": [ + { + "name": "ICSGOPlayers_730", + "methods": [ + { + "name": "GetPlayerProfileCoin", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The steam ID" + }, + { + "name": "coin", + "type": "string", + "optional": false, + "description": "The coin" + } + ] + + } + ] + + }, + { + "name": "ICSGOServers_730", + "methods": [ + { + "name": "GetGameServersStatus", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "ICSGOTournaments_730", + "methods": [ + { + "name": "GetTournamentFantasyLineup", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user inventory" + }, + { + "name": "steamidkey", + "type": "string", + "optional": false, + "description": "Authentication obtained from the SteamID" + } + ] + + }, + { + "name": "GetTournamentItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user inventory" + }, + { + "name": "steamidkey", + "type": "string", + "optional": false, + "description": "Authentication obtained from the SteamID" + } + ] + + }, + { + "name": "GetTournamentLayout", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + } + ] + + }, + { + "name": "GetTournamentPredictions", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user inventory" + }, + { + "name": "steamidkey", + "type": "string", + "optional": false, + "description": "Authentication obtained from the SteamID" + } + ] + + }, + { + "name": "UploadTournamentFantasyLineup", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user inventory" + }, + { + "name": "steamidkey", + "type": "string", + "optional": false, + "description": "Authentication obtained from the SteamID" + }, + { + "name": "sectionid", + "type": "uint32", + "optional": false, + "description": "Event section id" + }, + { + "name": "pickid0", + "type": "uint32", + "optional": false, + "description": "PickID to select for the slot" + }, + { + "name": "itemid0", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + }, + { + "name": "pickid1", + "type": "uint32", + "optional": false, + "description": "PickID to select for the slot" + }, + { + "name": "itemid1", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + }, + { + "name": "pickid2", + "type": "uint32", + "optional": false, + "description": "PickID to select for the slot" + }, + { + "name": "itemid2", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + }, + { + "name": "pickid3", + "type": "uint32", + "optional": false, + "description": "PickID to select for the slot" + }, + { + "name": "itemid3", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + }, + { + "name": "pickid4", + "type": "uint32", + "optional": false, + "description": "PickID to select for the slot" + }, + { + "name": "itemid4", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + } + ] + + }, + { + "name": "UploadTournamentPredictions", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "event", + "type": "uint32", + "optional": false, + "description": "The event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user inventory" + }, + { + "name": "steamidkey", + "type": "string", + "optional": false, + "description": "Authentication obtained from the SteamID" + }, + { + "name": "sectionid", + "type": "uint32", + "optional": false, + "description": "Event section id" + }, + { + "name": "groupid", + "type": "uint32", + "optional": false, + "description": "Event group id" + }, + { + "name": "index", + "type": "uint32", + "optional": false, + "description": "Index in group" + }, + { + "name": "pickid", + "type": "uint32", + "optional": false, + "description": "Pick ID to select" + }, + { + "name": "itemid", + "type": "uint64", + "optional": false, + "description": "ItemID to lock in for the pick" + } + ] + + } + ] + + }, + { + "name": "IDOTA2Fantasy_570", + "methods": [ + { + "name": "GetFantasyPlayerStats", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "FantasyLeagueID", + "type": "uint32", + "optional": false, + "description": "The fantasy league ID" + }, + { + "name": "StartTime", + "type": "uint32", + "optional": true, + "description": "An optional filter for minimum timestamp" + }, + { + "name": "EndTime", + "type": "uint32", + "optional": true, + "description": "An optional filter for maximum timestamp" + }, + { + "name": "matchid", + "type": "uint64", + "optional": true, + "description": "An optional filter for a specific match" + }, + { + "name": "SeriesID", + "type": "uint32", + "optional": true, + "description": "An optional filter for a specific series" + }, + { + "name": "PlayerAccountID", + "type": "uint32", + "optional": true, + "description": "An optional filter for a specific player" + } + ] + + }, + { + "name": "GetPlayerOfficialInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "accountid", + "type": "uint32", + "optional": false, + "description": "The account ID to look up" + } + ] + + }, + { + "name": "GetProPlayerList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IDOTA2MatchStats_570", + "methods": [ + { + "name": "GetRealtimeStats", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "server_steam_id", + "type": "uint64", + "optional": false, + "description": "" + } + ] + + } + ] + + }, + { + "name": "IDOTA2Match_570", + "methods": [ + { + "name": "GetLeagueListing", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetLiveLeagueGames", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "league_id", + "type": "uint32", + "optional": true, + "description": "Only show matches of the specified league id" + }, + { + "name": "match_id", + "type": "uint64", + "optional": true, + "description": "Only show matches of the specified match id" + } + ] + + }, + { + "name": "GetMatchDetails", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "match_id", + "type": "uint64", + "optional": false, + "description": "Match id" + } + ] + + }, + { + "name": "GetMatchHistory", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "hero_id", + "type": "uint32", + "optional": true, + "description": "The ID of the hero that must be in the matches being queried" + }, + { + "name": "game_mode", + "type": "uint32", + "optional": true, + "description": "Which game mode to return matches for" + }, + { + "name": "skill", + "type": "uint32", + "optional": true, + "description": "The average skill range of the match, these can be [1-3] with lower numbers being lower skill. Ignored if an account ID is specified" + }, + { + "name": "min_players", + "type": "string", + "optional": true, + "description": "Minimum number of human players that must be in a match for it to be returned" + }, + { + "name": "account_id", + "type": "string", + "optional": true, + "description": "An account ID to get matches from. This will fail if the user has their match history hidden" + }, + { + "name": "league_id", + "type": "string", + "optional": true, + "description": "The league ID to return games from" + }, + { + "name": "start_at_match_id", + "type": "uint64", + "optional": true, + "description": "The minimum match ID to start from" + }, + { + "name": "matches_requested", + "type": "string", + "optional": true, + "description": "The number of requested matches to return" + }, + { + "name": "tournament_games_only", + "type": "string", + "optional": true, + "description": "Whether or not tournament games should only be returned" + } + ] + + }, + { + "name": "GetMatchHistoryBySequenceNum", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "start_at_match_seq_num", + "type": "uint64", + "optional": true, + "description": "" + }, + { + "name": "matches_requested", + "type": "uint32", + "optional": true, + "description": "" + } + ] + + }, + { + "name": "GetScheduledLeagueGames", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "date_min", + "type": "uint32", + "optional": true, + "description": "The starting time stamp to collect scheduled games from. If ignored, it will use the current time" + }, + { + "name": "date_max", + "type": "uint32", + "optional": true, + "description": "The ending time stamp. If this is more than 7 days past the starting time stamp, it will be clamped to 7 days." + } + ] + + }, + { + "name": "GetTeamInfoByTeamID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "start_at_team_id", + "type": "uint64", + "optional": true, + "description": "" + }, + { + "name": "teams_requested", + "type": "uint32", + "optional": true, + "description": "" + } + ] + + }, + { + "name": "GetTopLiveGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "partner", + "type": "int32", + "optional": false, + "description": "Which partner's games to use." + } + ] + + }, + { + "name": "GetTopWeekendTourneyGames", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "partner", + "type": "int32", + "optional": false, + "description": "Which partner's games to use." + }, + { + "name": "home_division", + "type": "int32", + "optional": true, + "description": "Prefer matches from this division." + } + ] + + }, + { + "name": "GetTournamentPlayerStats", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "account_id", + "type": "string", + "optional": false, + "description": "" + }, + { + "name": "league_id", + "type": "string", + "optional": true, + "description": "" + }, + { + "name": "hero_id", + "type": "string", + "optional": true, + "description": "" + }, + { + "name": "time_frame", + "type": "string", + "optional": true, + "description": "" + }, + { + "name": "match_id", + "type": "uint64", + "optional": true, + "description": "" + }, + { + "name": "phase_id", + "type": "uint32", + "optional": true, + "description": "" + } + ] + + } + ] + + }, + { + "name": "IDOTA2StreamSystem_570", + "methods": [ + { + "name": "GetBroadcasterInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "broadcaster_steam_id", + "type": "uint64", + "optional": false, + "description": "64-bit Steam ID of the broadcaster" + }, + { + "name": "league_id", + "type": "uint32", + "optional": true, + "description": "LeagueID to use if we aren't in a lobby" + } + ] + + } + ] + + }, + { + "name": "IDOTA2Teams_570", + "methods": [ + { + "name": "GetTeamInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "team_id", + "type": "uint32", + "optional": true, + "description": "Team ID that you're requesting info about" + }, + { + "name": "league_id", + "type": "uint32", + "optional": true, + "description": "League ID for which you're requesting all regisered teams info" + } + ] + + } + ] + + }, + { + "name": "IDOTA2Ticket_570", + "methods": [ + { + "name": "ClaimBadgeReward", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "eventid", + "type": "uint32", + "optional": false, + "description": "Event ID" + }, + { + "name": "BadgeID", + "type": "string", + "optional": false, + "description": "The badge ID" + } + ] + + }, + { + "name": "GetSteamIDForBadgeID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "BadgeID", + "type": "string", + "optional": false, + "description": "The badge ID" + } + ] + + }, + { + "name": "SetSteamAccountPurchased", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "eventid", + "type": "uint32", + "optional": false, + "description": "Event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The 64-bit Steam ID" + } + ] + + }, + { + "name": "SteamAccountValidForEvent", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "eventid", + "type": "uint32", + "optional": false, + "description": "Event ID" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The 64-bit Steam ID" + } + ] + + } + ] + + }, + { + "name": "IEconDOTA2_570", + "methods": [ + { + "name": "GetEventStatsForAccount", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "eventid", + "type": "uint32", + "optional": false, + "description": "The League ID of the compendium you're looking for." + }, + { + "name": "accountid", + "type": "uint32", + "optional": false, + "description": "The account ID to look up." + }, + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to provide hero names in." + } + ] + + }, + { + "name": "GetGameItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to provide item names in." + } + ] + + }, + { + "name": "GetHeroes", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to provide hero names in." + }, + { + "name": "itemizedonly", + "type": "bool", + "optional": true, + "description": "Return a list of itemized heroes only." + } + ] + + }, + { + "name": "GetItemIconPath", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "iconname", + "type": "string", + "optional": false, + "description": "The item icon name to get the CDN path of" + }, + { + "name": "icontype", + "type": "uint32", + "optional": true, + "description": "The type of image you want. 0 = normal, 1 = large, 2 = ingame" + } + ] + + }, + { + "name": "GetRarities", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to provide rarity names in." + } + ] + + }, + { + "name": "GetTournamentPrizePool", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "leagueid", + "type": "uint32", + "optional": true, + "description": "The ID of the league to get the prize pool of" + } + ] + + } + ] + + }, + { + "name": "IEconItems_218620", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + } + ] + + }, + { + "name": "IEconItems_221540", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + } + ] + + }, + { + "name": "IEconItems_238460", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + } + ] + + }, + { + "name": "IEconItems_440", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + }, + { + "name": "GetSchema", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to return the names in. Defaults to returning string keys." + } + ] + + }, + { + "name": "GetSchemaURL", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetStoreMetaData", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to results in." + } + ] + + }, + { + "name": "GetStoreStatus", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IEconItems_570", + "methods": [ + { + "name": "GetEquippedPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "class_id", + "type": "uint32", + "optional": false, + "description": "Return items equipped for this class id" + } + ] + + }, + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + }, + { + "name": "GetSchema", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to return the names in. Defaults to returning string keys." + } + ] + + }, + { + "name": "GetSchemaURL", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetStoreMetaData", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to results in." + } + ] + + } + ] + + }, + { + "name": "IEconItems_620", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + }, + { + "name": "GetSchema", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to return the names in. Defaults to returning string keys." + } + ] + + } + ] + + }, + { + "name": "IEconItems_730", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + }, + { + "name": "GetSchema", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to return the names in. Defaults to returning string keys." + } + ] + + }, + { + "name": "GetSchemaURL", + "version": 2, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetStoreMetaData", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to results in." + } + ] + + } + ] + + }, + { + "name": "IEconItems_841", + "methods": [ + { + "name": "GetPlayerItems", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + } + ] + + }, + { + "name": "GetSchema", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "language", + "type": "string", + "optional": true, + "description": "The language to return the names in. Defaults to returning string keys." + } + ] + + } + ] + + }, + { + "name": "IGameInventory", + "methods": [ + { + "name": "GetHistoryCommandDetails", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The steam ID of the account to operate on" + }, + { + "name": "command", + "type": "string", + "optional": false, + "description": "The command to run on that asset" + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "The context to fetch history for" + }, + { + "name": "arguments", + "type": "string", + "optional": false, + "description": "The arguments that were provided with the command in the first place" + } + ] + + }, + { + "name": "GetUserHistory", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch history for" + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "The context to fetch history for" + }, + { + "name": "starttime", + "type": "uint32", + "optional": false, + "description": "Start time of the history range to collect" + }, + { + "name": "endtime", + "type": "uint32", + "optional": false, + "description": "End time of the history range to collect" + } + ] + + }, + { + "name": "HistoryExecuteCommands", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The asset ID to operate on" + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "The context to fetch history for" + }, + { + "name": "actorid", + "type": "uint32", + "optional": false, + "description": "A unique 32 bit ID for the support person executing the command" + } + ] + + }, + { + "name": "SupportGetAssetHistory", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "assetid", + "type": "uint64", + "optional": false, + "description": "The asset ID to operate on" + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "The context to fetch history for" + } + ] + + } + ] + + }, + { + "name": "IGCVersion_440", + "methods": [ + { + "name": "GetClientVersion", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetServerVersion", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IGCVersion_570", + "methods": [ + { + "name": "GetClientVersion", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetServerVersion", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IGCVersion_730", + "methods": [ + { + "name": "GetServerVersion", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IPortal2Leaderboards_620", + "methods": [ + { + "name": "GetBucketizedData", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "leaderboardName", + "type": "string", + "optional": false, + "description": "The leaderboard name to fetch data for." + } + ] + + } + ] + + }, + { + "name": "IPortal2Leaderboards_841", + "methods": [ + { + "name": "GetBucketizedData", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "leaderboardName", + "type": "string", + "optional": false, + "description": "The leaderboard name to fetch data for." + } + ] + + } + ] + + }, + { + "name": "ISteamApps", + "methods": [ + { + "name": "GetAppBetas", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "GetAppBuilds", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "count", + "type": "uint32", + "optional": true, + "description": "# of builds to retrieve (default 10)" + } + ] + + }, + { + "name": "GetAppDepotVersions", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of depot" + } + ] + + }, + { + "name": "GetAppList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetAppList", + "version": 2, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetCheatingReports", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "timebegin", + "type": "uint32", + "optional": false, + "description": "Time range begin" + }, + { + "name": "timeend", + "type": "uint32", + "optional": false, + "description": "Time range end" + }, + { + "name": "includereports", + "type": "bool", + "optional": false, + "description": "include reports that were not bans" + }, + { + "name": "includebans", + "type": "bool", + "optional": false, + "description": "include reports that were bans" + }, + { + "name": "reportidmin", + "type": "uint64", + "optional": true, + "description": "minimum report id" + } + ] + + }, + { + "name": "GetPlayersBanned", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "GetServerList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "filter", + "type": "string", + "optional": true, + "description": "Query filter string" + }, + { + "name": "limit", + "type": "uint32", + "optional": true, + "description": "Limit number of servers in the response" + } + ] + + }, + { + "name": "GetServersAtAddress", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "addr", + "type": "string", + "optional": false, + "description": "IP or IP:queryport to list" + } + ] + + }, + { + "name": "SetAppBuildLive", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "buildid", + "type": "uint32", + "optional": false, + "description": "BuildID" + }, + { + "name": "betakey", + "type": "string", + "optional": false, + "description": "beta key, required. Use public for default branch" + }, + { + "name": "description", + "type": "string", + "optional": true, + "description": "optional description for this build" + } + ] + + }, + { + "name": "UpToDateCheck", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "version", + "type": "uint32", + "optional": false, + "description": "The installed version of the game" + } + ] + + } + ] + + }, + { + "name": "ISteamBitPay", + "methods": [ + { + "name": "BitPayPaymentNotification", + "version": 1, + "httpmethod": "POST", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "ISteamCDN", + "methods": [ + { + "name": "SetClientFilters", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "cdnname", + "type": "string", + "optional": false, + "description": "Steam name of CDN property" + }, + { + "name": "allowedipblocks", + "type": "string", + "optional": true, + "description": "comma-separated list of allowed IP address blocks in CIDR format - blank for not used" + }, + { + "name": "allowedasns", + "type": "string", + "optional": true, + "description": "comma-separated list of allowed client network AS numbers - blank for not used" + }, + { + "name": "allowedipcountries", + "type": "string", + "optional": true, + "description": "comma-separated list of allowed client IP country codes in ISO 3166-1 format - blank for not used" + } + ] + + }, + { + "name": "SetPerformanceStats", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "cdnname", + "type": "string", + "optional": false, + "description": "Steam name of CDN property" + }, + { + "name": "mbps_sent", + "type": "uint32", + "optional": true, + "description": "Outgoing network traffic in Mbps" + }, + { + "name": "mbps_recv", + "type": "uint32", + "optional": true, + "description": "Incoming network traffic in Mbps" + }, + { + "name": "cpu_percent", + "type": "uint32", + "optional": true, + "description": "Percent CPU load" + }, + { + "name": "cache_hit_percent", + "type": "uint32", + "optional": true, + "description": "Percent cache hits" + } + ] + + } + ] + + }, + { + "name": "ISteamCommunity", + "methods": [ + { + "name": "ReportAbuse", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamidActor", + "type": "uint64", + "optional": false, + "description": "SteamID of user doing the reporting" + }, + { + "name": "steamidTarget", + "type": "uint64", + "optional": false, + "description": "SteamID of the entity being accused of abuse" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to check for ownership" + }, + { + "name": "abuseType", + "type": "uint32", + "optional": false, + "description": "Abuse type code (see EAbuseReportType enum)" + }, + { + "name": "contentType", + "type": "uint32", + "optional": false, + "description": "Content type code (see ECommunityContentType enum)" + }, + { + "name": "description", + "type": "string", + "optional": false, + "description": "Narrative from user" + }, + { + "name": "gid", + "type": "uint64", + "optional": true, + "description": "GID of related record (depends on content type)" + } + ] + + } + ] + + }, + { + "name": "ISteamDirectory", + "methods": [ + { + "name": "GetCMList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "cellid", + "type": "uint32", + "optional": false, + "description": "Client's Steam cell ID" + }, + { + "name": "maxcount", + "type": "uint32", + "optional": true, + "description": "Max number of servers to return" + } + ] + + } + ] + + }, + { + "name": "ISteamEconomy", + "methods": [ + { + "name": "CanTrade", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "That the key is associated with. Must be a steam economy app." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user attempting to initiate a trade" + }, + { + "name": "targetid", + "type": "uint64", + "optional": false, + "description": "SteamID of user that is the target of the trade invitation" + } + ] + + }, + { + "name": "FinalizeAssetTransaction", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app ID the user is buying assets for" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of the user making a purchase" + }, + { + "name": "txnid", + "type": "string", + "optional": false, + "description": "The transaction ID" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "The local language for the user" + } + ] + + }, + { + "name": "GetAssetClassInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "Must be a steam economy app." + }, + { + "name": "language", + "type": "string", + "optional": true, + "description": "The user's local language" + }, + { + "name": "class_count", + "type": "uint32", + "optional": false, + "description": "Number of classes requested. Must be at least one." + }, + { + "name": "classid0", + "type": "uint64", + "optional": false, + "description": "Class ID of the nth class." + }, + { + "name": "instanceid0", + "type": "uint64", + "optional": true, + "description": "Instance ID of the nth class." + } + ] + + }, + { + "name": "GetAssetPrices", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "Must be a steam economy app." + }, + { + "name": "currency", + "type": "string", + "optional": true, + "description": "The currency to filter for" + }, + { + "name": "language", + "type": "string", + "optional": true, + "description": "The user's local language" + } + ] + + }, + { + "name": "GetExportedAssetsForUser", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app to get exported items from." + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "The context in the app to get exported items from." + } + ] + + }, + { + "name": "GetMarketPrices", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "Must be a steam economy app." + } + ] + + }, + { + "name": "StartAssetTransaction", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app ID the user is buying assets for" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making a purchase" + }, + { + "name": "assetid0", + "type": "string", + "optional": false, + "description": "The ID of the first asset the user is buying - there must be at least one" + }, + { + "name": "assetquantity0", + "type": "uint32", + "optional": false, + "description": "The quantity of assetid0's the the user is buying" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "The local currency for the user" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "The local language for the user" + }, + { + "name": "ipaddress", + "type": "string", + "optional": false, + "description": "The user's IP address" + }, + { + "name": "referrer", + "type": "string", + "optional": true, + "description": "The referring URL" + }, + { + "name": "clientauth", + "type": "bool", + "optional": true, + "description": "If true (default is false), the authorization will appear in the user's steam client overlay, rather than as a web page - useful for stores that are embedded in products." + } + ] + + }, + { + "name": "StartTrade", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "That the key is associated with. Must be a steam economy app." + }, + { + "name": "partya", + "type": "uint64", + "optional": false, + "description": "SteamID of first user in the trade" + }, + { + "name": "partyb", + "type": "uint64", + "optional": false, + "description": "SteamID of second user in the trade" + } + ] + + } + ] + + }, + { + "name": "ISteamEnvoy", + "methods": [ + { + "name": "PaymentOutNotification", + "version": 1, + "httpmethod": "POST", + "parameters": [ + + ] + + }, + { + "name": "PaymentOutReversalNotification", + "version": 1, + "httpmethod": "POST", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "ISteamGameServerStats", + "methods": [ + { + "name": "GetGameServerPlayerStatsForGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "gameid", + "type": "uint64", + "optional": false, + "description": "game id to get stats for, if not a mod, it's safe to use appid here" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of the game" + }, + { + "name": "rangestart", + "type": "string", + "optional": false, + "description": "range start date/time (Format: YYYY-MM-DD HH:MM:SS, seattle local time" + }, + { + "name": "rangeend", + "type": "string", + "optional": false, + "description": "range end date/time (Format: YYYY-MM-DD HH:MM:SS, seattle local time" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + } + ] + + }, + { + "name": "ISteamLeaderboards", + "methods": [ + { + "name": "DeleteLeaderboard", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "name", + "type": "string", + "optional": false, + "description": "name of the leaderboard to delete" + } + ] + + }, + { + "name": "FindOrCreateLeaderboard", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "name", + "type": "string", + "optional": false, + "description": "name of the leaderboard to create" + }, + { + "name": "sortmethod", + "type": "string", + "optional": true, + "description": "sort method to use for this leaderboard (defaults to Ascending)" + }, + { + "name": "displaytype", + "type": "string", + "optional": true, + "description": "display type for this leaderboard (defaults to Numeric)" + }, + { + "name": "createifnotfound", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard will be created if it doesn't exist. Defaults to true." + }, + { + "name": "onlytrustedwrites", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard scores cannot be set by clients, and can only be set by publisher via SetLeaderboardScore WebAPI. Defaults to false." + }, + { + "name": "onlyfriendsreads", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard scores can only be read for friends by clients, scores can always be read by publisher. Defaults to false." + } + ] + + }, + { + "name": "FindOrCreateLeaderboard", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "name", + "type": "string", + "optional": false, + "description": "name of the leaderboard to create" + }, + { + "name": "sortmethod", + "type": "string", + "optional": true, + "description": "sort method to use for this leaderboard (defaults to Ascending)" + }, + { + "name": "displaytype", + "type": "string", + "optional": true, + "description": "display type for this leaderboard (defaults to Numeric)" + }, + { + "name": "createifnotfound", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard will be created if it doesn't exist. Defaults to true." + }, + { + "name": "onlytrustedwrites", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard scores cannot be set by clients, and can only be set by publisher via SetLeaderboardScore WebAPI. Defaults to false." + }, + { + "name": "onlyfriendsreads", + "type": "bool", + "optional": true, + "description": "if this is true the leaderboard scores can only be read for friends by clients, scores can always be read by publisher. Defaults to false." + } + ] + + }, + { + "name": "GetLeaderboardEntries", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "rangestart", + "type": "int32", + "optional": false, + "description": "range start or 0" + }, + { + "name": "rangeend", + "type": "int32", + "optional": false, + "description": "range end or max LB entries" + }, + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "SteamID used for friend & around user requests" + }, + { + "name": "leaderboardid", + "type": "int32", + "optional": false, + "description": "ID of the leaderboard to view" + }, + { + "name": "datarequest", + "type": "uint32", + "optional": false, + "description": "type of request: RequestGlobal, RequestAroundUser, RequestFriends" + } + ] + + }, + { + "name": "GetLeaderboardsForGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + } + ] + + }, + { + "name": "GetLeaderboardsForGame", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + } + ] + + }, + { + "name": "ResetLeaderboard", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "leaderboardid", + "type": "uint32", + "optional": false, + "description": "numeric ID of the target leaderboard. Can be retrieved from GetLeaderboardsForGame" + } + ] + + }, + { + "name": "SetLeaderboardScore", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "leaderboardid", + "type": "uint32", + "optional": false, + "description": "numeric ID of the target leaderboard. Can be retrieved from GetLeaderboardsForGame" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamID to set the score for" + }, + { + "name": "score", + "type": "int32", + "optional": false, + "description": "the score to set for this user" + }, + { + "name": "scoremethod", + "type": "string", + "optional": false, + "description": "update method to use. Can be \"KeepBest\" or \"ForceUpdate\"" + }, + { + "name": "details", + "type": "rawbinary", + "optional": true, + "description": "game-specific details for how the score was earned. Up to 256 bytes." + } + ] + + } + ] + + }, + { + "name": "ISteamMicroTxn", + "methods": [ + { + "name": "AdjustAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "nextprocessdate", + "type": "string", + "optional": false, + "description": "Date for next process" + } + ] + + }, + { + "name": "CancelAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "FinalizeTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "FinalizeTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "GetReport", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetReport", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetReport", + "version": 3, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetUserAgreementInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "GetUserInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "SteamID of user making purchase" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + } + ] + + }, + { + "name": "GetUserInfo", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "SteamID of user making purchase" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + } + ] + + }, + { + "name": "InitTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "usersession", + "type": "string", + "optional": true, + "description": "session where user will authorize the transaction. client or web (defaults to client)" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "associated_bundle[0]", + "type": "uint32", + "optional": true, + "description": "Optional bundleid of associated bundle" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional end date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + }, + { + "name": "bundlecount", + "type": "uint32", + "optional": true, + "description": "Number of bundles in cart" + }, + { + "name": "bundleid[0]", + "type": "uint32", + "optional": true, + "description": "3rd party ID of the bundle. This shares the same ID space as 3rd party items." + }, + { + "name": "bundle_qty[0]", + "type": "uint32", + "optional": true, + "description": "Quantity of this bundle" + }, + { + "name": "bundle_desc[0]", + "type": "string", + "optional": true, + "description": "Description of bundle" + }, + { + "name": "bundle_category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for bundle" + } + ] + + }, + { + "name": "InitTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "usersession", + "type": "string", + "optional": true, + "description": "session where user will authorize the transaction. client or web (defaults to client)" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "associated_bundle[0]", + "type": "uint32", + "optional": true, + "description": "Optional bundleid of associated bundle" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional end date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + }, + { + "name": "bundlecount", + "type": "uint32", + "optional": true, + "description": "Number of bundles in cart" + }, + { + "name": "bundleid[0]", + "type": "uint32", + "optional": true, + "description": "3rd party ID of the bundle. This shares the same ID space as 3rd party items." + }, + { + "name": "bundle_qty[0]", + "type": "uint32", + "optional": true, + "description": "Quantity of this bundle" + }, + { + "name": "bundle_desc[0]", + "type": "string", + "optional": true, + "description": "Description of bundle" + }, + { + "name": "bundle_category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for bundle" + } + ] + + }, + { + "name": "InitTxn", + "version": 3, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "usersession", + "type": "string", + "optional": true, + "description": "session where user will authorize the transaction. client or web (defaults to client)" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "associated_bundle[0]", + "type": "uint32", + "optional": true, + "description": "Optional bundleid of associated bundle" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional end date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + }, + { + "name": "bundlecount", + "type": "uint32", + "optional": true, + "description": "Number of bundles in cart" + }, + { + "name": "bundleid[0]", + "type": "uint32", + "optional": true, + "description": "3rd party ID of the bundle. This shares the same ID space as 3rd party items." + }, + { + "name": "bundle_qty[0]", + "type": "uint32", + "optional": true, + "description": "Quantity of this bundle" + }, + { + "name": "bundle_desc[0]", + "type": "string", + "optional": true, + "description": "Description of bundle" + }, + { + "name": "bundle_category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for bundle" + } + ] + + }, + { + "name": "ProcessAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "amount", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) to charge" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + } + ] + + }, + { + "name": "QueryTxn", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "orderid", + "type": "uint64", + "optional": true, + "description": "3rd party ID for transaction" + }, + { + "name": "transid", + "type": "uint64", + "optional": true, + "description": "Steam transaction ID" + } + ] + + }, + { + "name": "QueryTxn", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "orderid", + "type": "uint64", + "optional": true, + "description": "3rd party ID for transaction" + }, + { + "name": "transid", + "type": "uint64", + "optional": true, + "description": "Steam transaction ID" + } + ] + + }, + { + "name": "RefundTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "RefundTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + } + ] + + }, + { + "name": "ISteamMicroTxnSandbox", + "methods": [ + { + "name": "AdjustAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "nextprocessdate", + "type": "string", + "optional": false, + "description": "Date for next process" + } + ] + + }, + { + "name": "CancelAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "FinalizeTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "FinalizeTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "GetReport", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetReport", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetReport", + "version": 3, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "type", + "type": "string", + "optional": true, + "description": "Report type (GAMESALES, STEAMSTORE, SETTLEMENT)" + }, + { + "name": "time", + "type": "string", + "optional": false, + "description": "Beginning time to start report from (RFC 3339 UTC format)" + }, + { + "name": "maxresults", + "type": "uint32", + "optional": true, + "description": "Max number of results to return (up to 1000)" + } + ] + + }, + { + "name": "GetUserAgreementInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + } + ] + + }, + { + "name": "GetUserInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "SteamID of user making purchase" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + } + ] + + }, + { + "name": "GetUserInfo", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "SteamID of user making purchase" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx). Only required if usersession=web" + } + ] + + }, + { + "name": "InitTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + } + ] + + }, + { + "name": "InitTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional end date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + } + ] + + }, + { + "name": "InitTxn", + "version": 3, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user making purchase" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items in cart" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "ISO 639-1 language code of description" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + }, + { + "name": "itemid[0]", + "type": "uint32", + "optional": false, + "description": "3rd party ID for item" + }, + { + "name": "qty[0]", + "type": "uint32", + "optional": false, + "description": "Quantity of this item" + }, + { + "name": "amount[0]", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) of item(s)" + }, + { + "name": "description[0]", + "type": "string", + "optional": false, + "description": "Description of item" + }, + { + "name": "category[0]", + "type": "string", + "optional": true, + "description": "Optional category grouping for item" + }, + { + "name": "billingtype[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing type" + }, + { + "name": "startdate[0]", + "type": "string", + "optional": true, + "description": "Optional start date for recurring billing" + }, + { + "name": "enddate[0]", + "type": "string", + "optional": true, + "description": "Optional end date for recurring billing" + }, + { + "name": "period[0]", + "type": "string", + "optional": true, + "description": "Optional period for recurring billing" + }, + { + "name": "frequency[0]", + "type": "uint32", + "optional": true, + "description": "Optional frequency for recurring billing" + }, + { + "name": "recurringamt[0]", + "type": "string", + "optional": true, + "description": "Optional recurring billing amount" + } + ] + + }, + { + "name": "ProcessAgreement", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user with the agreement" + }, + { + "name": "agreementid", + "type": "uint64", + "optional": false, + "description": "ID of agreement" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game" + }, + { + "name": "amount", + "type": "int32", + "optional": false, + "description": "Total cost (in cents) to charge" + }, + { + "name": "currency", + "type": "string", + "optional": false, + "description": "ISO 4217 currency code" + } + ] + + }, + { + "name": "QueryTxn", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "orderid", + "type": "uint64", + "optional": true, + "description": "3rd party ID for transaction" + }, + { + "name": "transid", + "type": "uint64", + "optional": true, + "description": "Steam transaction ID" + } + ] + + }, + { + "name": "QueryTxn", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "orderid", + "type": "uint64", + "optional": true, + "description": "3rd party ID for transaction" + }, + { + "name": "transid", + "type": "uint64", + "optional": true, + "description": "Steam transaction ID" + } + ] + + }, + { + "name": "RefundTxn", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + }, + { + "name": "RefundTxn", + "version": 2, + "httpmethod": "POST", + "parameters": [ + { + "name": "orderid", + "type": "uint64", + "optional": false, + "description": "3rd party ID for transaction" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + } + ] + + }, + { + "name": "ISteamNews", + "methods": [ + { + "name": "GetNewsForApp", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to retrieve news for" + }, + { + "name": "maxlength", + "type": "uint32", + "optional": true, + "description": "Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit." + }, + { + "name": "enddate", + "type": "uint32", + "optional": true, + "description": "Retrieve posts earlier than this date (unix epoch timestamp)" + }, + { + "name": "count", + "type": "uint32", + "optional": true, + "description": "# of posts to retrieve (default 20)" + } + ] + + }, + { + "name": "GetNewsForApp", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to retrieve news for" + }, + { + "name": "maxlength", + "type": "uint32", + "optional": true, + "description": "Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit." + }, + { + "name": "enddate", + "type": "uint32", + "optional": true, + "description": "Retrieve posts earlier than this date (unix epoch timestamp)" + }, + { + "name": "count", + "type": "uint32", + "optional": true, + "description": "# of posts to retrieve (default 20)" + }, + { + "name": "feeds", + "type": "string", + "optional": true, + "description": "Comma-seperated list of feed names to return news for" + } + ] + + }, + { + "name": "GetNewsForAppAuthed", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to retrieve news for" + }, + { + "name": "maxlength", + "type": "uint32", + "optional": true, + "description": "Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit." + }, + { + "name": "enddate", + "type": "uint32", + "optional": true, + "description": "Retrieve posts earlier than this date (unix epoch timestamp)" + }, + { + "name": "count", + "type": "uint32", + "optional": true, + "description": "# of posts to retrieve (default 20)" + } + ] + + }, + { + "name": "GetNewsForAppAuthed", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to retrieve news for" + }, + { + "name": "maxlength", + "type": "uint32", + "optional": true, + "description": "Maximum length for the content to return, if this is 0 the full content is returned, if it's less then a blurb is generated to fit." + }, + { + "name": "enddate", + "type": "uint32", + "optional": true, + "description": "Retrieve posts earlier than this date (unix epoch timestamp)" + }, + { + "name": "count", + "type": "uint32", + "optional": true, + "description": "# of posts to retrieve (default 20)" + }, + { + "name": "feeds", + "type": "string", + "optional": true, + "description": "Comma-seperated list of feed names to return news for" + } + ] + + } + ] + + }, + { + "name": "ISteamPayPalPaymentsHub", + "methods": [ + { + "name": "PayPalPaymentsHubPaymentNotification", + "version": 1, + "httpmethod": "POST", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "ISteamPublishedItemSearch", + "methods": [ + { + "name": "RankedByPublicationOrder", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "startidx", + "type": "uint32", + "optional": false, + "description": "Starting index in the result set (0 based)" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Number Requested" + }, + { + "name": "tagcount", + "type": "uint32", + "optional": false, + "description": "Number of Tags Specified" + }, + { + "name": "usertagcount", + "type": "uint32", + "optional": false, + "description": "Number of User specific tags requested" + }, + { + "name": "hasappadminaccess", + "type": "bool", + "optional": true, + "description": "Whether the user making the request is an admin for the app and can see private files" + }, + { + "name": "fileType", + "type": "uint32", + "optional": true, + "description": "EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items" + }, + { + "name": "tag[0]", + "type": "string", + "optional": true, + "description": "Tag to filter result set" + }, + { + "name": "usertag[0]", + "type": "string", + "optional": true, + "description": "A user specific tag" + } + ] + + }, + { + "name": "RankedByTrend", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "startidx", + "type": "uint32", + "optional": false, + "description": "Starting index in the result set (0 based)" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Number Requested" + }, + { + "name": "tagcount", + "type": "uint32", + "optional": false, + "description": "Number of Tags Specified" + }, + { + "name": "usertagcount", + "type": "uint32", + "optional": false, + "description": "Number of User specific tags requested" + }, + { + "name": "hasappadminaccess", + "type": "bool", + "optional": true, + "description": "Whether the user making the request is an admin for the app and can see private files" + }, + { + "name": "fileType", + "type": "uint32", + "optional": true, + "description": "EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items" + }, + { + "name": "days", + "type": "uint32", + "optional": true, + "description": "[1,7] number of days for the trend period, including today" + }, + { + "name": "tag[0]", + "type": "string", + "optional": true, + "description": "Tag to filter result set" + }, + { + "name": "usertag[0]", + "type": "string", + "optional": true, + "description": "A user specific tag" + } + ] + + }, + { + "name": "RankedByVote", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "startidx", + "type": "uint32", + "optional": false, + "description": "Starting index in the result set (0 based)" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Number Requested" + }, + { + "name": "tagcount", + "type": "uint32", + "optional": false, + "description": "Number of Tags Specified" + }, + { + "name": "usertagcount", + "type": "uint32", + "optional": false, + "description": "Number of User specific tags requested" + }, + { + "name": "hasappadminaccess", + "type": "bool", + "optional": true, + "description": "Whether the user making the request is an admin for the app and can see private files" + }, + { + "name": "fileType", + "type": "uint32", + "optional": true, + "description": "EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items" + }, + { + "name": "tag[0]", + "type": "string", + "optional": true, + "description": "Tag to filter result set" + }, + { + "name": "usertag[0]", + "type": "string", + "optional": true, + "description": "A user specific tag" + } + ] + + }, + { + "name": "ResultSetSummary", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint64", + "optional": false, + "description": "appID relevant to all subsequent tags" + }, + { + "name": "tagcount", + "type": "uint32", + "optional": false, + "description": "Number of Tags Specified" + }, + { + "name": "usertagcount", + "type": "uint32", + "optional": false, + "description": "Number of User specific tags requested" + }, + { + "name": "hasappadminaccess", + "type": "bool", + "optional": true, + "description": "Whether the user making the request is an admin for the app and can see private files" + }, + { + "name": "fileType", + "type": "uint32", + "optional": true, + "description": "EPublishedFileInfoMatchingFileType, defaults to k_PFI_MatchingFileType_Items" + }, + { + "name": "tag[0]", + "type": "string", + "optional": true, + "description": "Tag to filter result set" + }, + { + "name": "usertag[0]", + "type": "string", + "optional": true, + "description": "A user specific tag" + } + ] + + } + ] + + }, + { + "name": "ISteamPublishedItemVoting", + "methods": [ + { + "name": "ItemVoteSummary", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "Steam ID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Count of how many items we are querying" + }, + { + "name": "publishedfileid[0]", + "type": "uint64", + "optional": true, + "description": "The Published File ID who's vote details are required" + } + ] + + }, + { + "name": "UserVoteSummary", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "Steam ID of user" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Count of how many items we are querying" + }, + { + "name": "publishedfileid[0]", + "type": "uint64", + "optional": true, + "description": "A Specific Published Item" + } + ] + + } + ] + + }, + { + "name": "ISteamRemoteStorage", + "methods": [ + { + "name": "EnumerateUserPublishedFiles", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + } + ] + + }, + { + "name": "EnumerateUserSubscribedFiles", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "listtype", + "type": "uint32", + "optional": true, + "description": "EUCMListType" + } + ] + + }, + { + "name": "GetCollectionDetails", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "collectioncount", + "type": "uint32", + "optional": false, + "description": "Number of collections being requested" + }, + { + "name": "publishedfileids[0]", + "type": "uint64", + "optional": false, + "description": "collection ids to get the details for" + } + ] + + }, + { + "name": "GetPublishedFileDetails", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items being requested" + }, + { + "name": "publishedfileids[0]", + "type": "uint64", + "optional": false, + "description": "published file id to look up" + } + ] + + }, + { + "name": "GetUGCFileDetails", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": true, + "description": "If specified, only returns details if the file is owned by the SteamID specified" + }, + { + "name": "ugcid", + "type": "uint64", + "optional": false, + "description": "ID of UGC file to get info for" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + } + ] + + }, + { + "name": "SetUGCUsedByGC", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "ugcid", + "type": "uint64", + "optional": false, + "description": "ID of UGC file whose bits are being fiddled with" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product to change updating state for" + }, + { + "name": "used", + "type": "bool", + "optional": false, + "description": "New state of flag" + } + ] + + }, + { + "name": "SubscribePublishedFile", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "publishedfileid", + "type": "uint64", + "optional": false, + "description": "published file id to subscribe to" + } + ] + + }, + { + "name": "UnsubscribePublishedFile", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of product" + }, + { + "name": "publishedfileid", + "type": "uint64", + "optional": false, + "description": "published file id to unsubscribe from" + } + ] + + } + ] + + }, + { + "name": "ISteamSpecialSurvey", + "methods": [ + { + "name": "CheckUserStatus", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "surveyid", + "type": "uint32", + "optional": false, + "description": "ID of the survey being taken" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of the user taking the survey" + }, + { + "name": "token", + "type": "string", + "optional": false, + "description": "Survey identity verification token for the user" + } + ] + + }, + { + "name": "SetUserFinished", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "surveyid", + "type": "uint32", + "optional": false, + "description": "ID of the survey being taken" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of the user taking the survey" + }, + { + "name": "token", + "type": "string", + "optional": false, + "description": "Survey identity verification token for the user" + } + ] + + } + ] + + }, + { + "name": "ISteamUser", + "methods": [ + { + "name": "CheckAppOwnership", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to check for ownership" + } + ] + + }, + { + "name": "GetAppPriceInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appids", + "type": "string", + "optional": false, + "description": "Comma-delimited list of appids (max: 100)" + } + ] + + }, + { + "name": "GetFriendList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "relationship", + "type": "string", + "optional": true, + "description": "relationship type (ex: friend)" + } + ] + + }, + { + "name": "GetPlayerBans", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamids", + "type": "string", + "optional": false, + "description": "Comma-delimited list of SteamIDs" + } + ] + + }, + { + "name": "GetPlayerSummaries", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamids", + "type": "string", + "optional": false, + "description": "Comma-delimited list of SteamIDs" + } + ] + + }, + { + "name": "GetPlayerSummaries", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamids", + "type": "string", + "optional": false, + "description": "Comma-delimited list of SteamIDs (max: 100)" + } + ] + + }, + { + "name": "GetPublisherAppOwnership", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + } + ] + + }, + { + "name": "GetPublisherAppOwnership", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + } + ] + + }, + { + "name": "GetUserGroupList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + } + ] + + }, + { + "name": "GrantPackage", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "packageid", + "type": "uint32", + "optional": false, + "description": "PackageID to grant" + }, + { + "name": "ipaddress", + "type": "string", + "optional": true, + "description": "ip address of user in string format (xxx.xxx.xxx.xxx)." + }, + { + "name": "thirdpartykey", + "type": "string", + "optional": true, + "description": "Optionally associate third party key during grant. 'thirdpartyappid' will have to be set." + }, + { + "name": "thirdpartyappid", + "type": "uint32", + "optional": true, + "description": "Has to be set if 'thirdpartykey' is set. The appid associated with the 'thirdpartykey'." + } + ] + + }, + { + "name": "ResolveVanityURL", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "vanityurl", + "type": "string", + "optional": false, + "description": "The vanity URL to get a SteamID for" + }, + { + "name": "url_type", + "type": "int32", + "optional": true, + "description": "The type of vanity URL. 1 (default): Individual profile, 2: Group, 3: Official game group" + } + ] + + } + ] + + }, + { + "name": "ISteamUserAuth", + "methods": [ + { + "name": "AuthenticateUser", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "Should be the users steamid, unencrypted." + }, + { + "name": "sessionkey", + "type": "rawbinary", + "optional": false, + "description": "Should be a 32 byte random blob of data, which is then encrypted with RSA using the Steam system's public key. Randomness is important here for security." + }, + { + "name": "encrypted_loginkey", + "type": "rawbinary", + "optional": false, + "description": "Should be the users hashed loginkey, AES encrypted with the sessionkey." + } + ] + + }, + { + "name": "AuthenticateUserTicket", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "ticket", + "type": "string", + "optional": false, + "description": "Ticket from GetAuthSessionTicket." + } + ] + + } + ] + + }, + { + "name": "ISteamUserOAuth", + "methods": [ + { + "name": "GetTokenDetails", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "access_token", + "type": "string", + "optional": false, + "description": "OAuth2 token for which to return details" + } + ] + + } + ] + + }, + { + "name": "ISteamUserStats", + "methods": [ + { + "name": "GetGlobalAchievementPercentagesForApp", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "gameid", + "type": "uint64", + "optional": false, + "description": "GameID to retrieve the achievement percentages for" + } + ] + + }, + { + "name": "GetGlobalAchievementPercentagesForApp", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "gameid", + "type": "uint64", + "optional": false, + "description": "GameID to retrieve the achievement percentages for" + } + ] + + }, + { + "name": "GetGlobalStatsForGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID that we're getting global stats for" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Number of stats get data for" + }, + { + "name": "name[0]", + "type": "string", + "optional": false, + "description": "Names of stat to get data for" + }, + { + "name": "startdate", + "type": "uint32", + "optional": true, + "description": "Start date for daily totals (unix epoch timestamp)" + }, + { + "name": "enddate", + "type": "uint32", + "optional": true, + "description": "End date for daily totals (unix epoch timestamp)" + } + ] + + }, + { + "name": "GetNumberOfCurrentPlayers", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID that we're getting user count for" + } + ] + + }, + { + "name": "GetPlayerAchievements", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID to get achievements for" + }, + { + "name": "l", + "type": "string", + "optional": true, + "description": "Language to return strings for" + } + ] + + }, + { + "name": "GetSchemaForGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "l", + "type": "string", + "optional": true, + "description": "localized langauge to return (english, french, etc.)" + } + ] + + }, + { + "name": "GetSchemaForGame", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "l", + "type": "string", + "optional": true, + "description": "localized language to return (english, french, etc.)" + } + ] + + }, + { + "name": "GetUserStatsForGame", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + } + ] + + }, + { + "name": "GetUserStatsForGame", + "version": 2, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + } + ] + + }, + { + "name": "SetUserStatsForGame", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appid of game" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "Number of stats and achievements to set a value for (name/value param pairs)" + }, + { + "name": "name[0]", + "type": "string", + "optional": false, + "description": "Name of stat or achievement to set" + }, + { + "name": "value[0]", + "type": "uint32", + "optional": false, + "description": "Value to set" + } + ] + + } + ] + + }, + { + "name": "ISteamVideo", + "methods": [ + { + "name": "AddVideo", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "SteamID of user" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "appID of the video" + }, + { + "name": "videoid", + "type": "string", + "optional": false, + "description": "ID of the video on the provider's site" + }, + { + "name": "accountname", + "type": "string", + "optional": false, + "description": "Account name of the video's owner on the provider's site" + } + ] + + } + ] + + }, + { + "name": "ISteamWebAPIUtil", + "methods": [ + { + "name": "GetServerInfo", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + }, + { + "name": "GetSupportedAPIList", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": true, + "description": "access key" + } + ] + + } + ] + + }, + { + "name": "ISteamWebUserPresenceOAuth", + "methods": [ + { + "name": "PollStatus", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "string", + "optional": false, + "description": "Steam ID of the user" + }, + { + "name": "umqid", + "type": "uint64", + "optional": false, + "description": "UMQ Session ID" + }, + { + "name": "message", + "type": "uint32", + "optional": false, + "description": "Message that was last known to the user" + }, + { + "name": "pollid", + "type": "uint32", + "optional": true, + "description": "Caller-specific poll id" + }, + { + "name": "sectimeout", + "type": "uint32", + "optional": true, + "description": "Long-poll timeout in seconds" + }, + { + "name": "secidletime", + "type": "uint32", + "optional": true, + "description": "How many seconds is client considering itself idle, e.g. screen is off" + }, + { + "name": "use_accountids", + "type": "uint32", + "optional": true, + "description": "Boolean, 0 (default): return steamid_from in output, 1: return accountid_from" + } + ] + + } + ] + + }, + { + "name": "ISteamWorkshop", + "methods": [ + { + "name": "AssociateWorkshopItems", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + }, + { + "name": "itemcount", + "type": "uint32", + "optional": false, + "description": "Number of items to associate" + }, + { + "name": "publishedfileid[0]", + "type": "uint64", + "optional": true, + "description": "the workshop published file id" + }, + { + "name": "gameitemid[0]", + "type": "uint32", + "optional": true, + "description": "3rd party ID for item" + }, + { + "name": "revenuepercentage[0]", + "type": "float", + "optional": true, + "description": "Percentage of revenue the owners of the workshop item will get from the sale of the item [0.0, 100.0]. For bundle-like items, send over an entry for each item in the bundle (gameitemid = bundle id) with different publishedfileids and with the revenue percentage pre-split amongst the items in the bundle (i.e. 30% / 10 items in the bundle)" + }, + { + "name": "gameitemdescription[0]", + "type": "string", + "optional": true, + "description": "Game's description of the game item" + } + ] + + }, + { + "name": "GetContributors", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "AppID of game this transaction is for" + } + ] + + } + ] + + }, + { + "name": "ITFItems_440", + "methods": [ + { + "name": "GetGoldenWrenches", + "version": 2, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "ITFPromos_440", + "methods": [ + { + "name": "GetItemID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "promoid", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + }, + { + "name": "GrantItem", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "promoid", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + } + ] + + }, + { + "name": "ITFPromos_570", + "methods": [ + { + "name": "GetItemID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "promoid", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + }, + { + "name": "GrantItem", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "promoid", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + } + ] + + }, + { + "name": "ITFPromos_620", + "methods": [ + { + "name": "GetItemID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "PromoID", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + }, + { + "name": "GrantItem", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "PromoID", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + } + ] + + }, + { + "name": "ITFPromos_841", + "methods": [ + { + "name": "GetItemID", + "version": 1, + "httpmethod": "GET", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "PromoID", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + }, + { + "name": "GrantItem", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The Steam ID to fetch items for" + }, + { + "name": "PromoID", + "type": "uint32", + "optional": false, + "description": "The promo ID to grant an item for" + } + ] + + } + ] + + }, + { + "name": "ITFSystem_440", + "methods": [ + { + "name": "GetWorldStatus", + "version": 1, + "httpmethod": "GET", + "parameters": [ + + ] + + } + ] + + }, + { + "name": "IGameServersService", + "methods": [ + { + "name": "GetAccountList", + "version": 1, + "httpmethod": "GET", + "description": "Gets a list of game server accounts with their logon tokens", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + } + ] + + }, + { + "name": "CreateAccount", + "version": 1, + "httpmethod": "POST", + "description": "Creates a persistent game server account", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app to use the account for" + }, + { + "name": "memo", + "type": "string", + "optional": false, + "description": "The memo to set on the new account" + } + ] + + }, + { + "name": "SetMemo", + "version": 1, + "httpmethod": "POST", + "description": "This method changes the memo associated with the game server account. Memos do not affect the account in any way. The memo shows up in the GetAccountList response and serves only as a reminder of what the account is used for.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the game server to set the memo on" + }, + { + "name": "memo", + "type": "string", + "optional": false, + "description": "The memo to set on the new account" + } + ] + + }, + { + "name": "ResetLoginToken", + "version": 1, + "httpmethod": "POST", + "description": "Generates a new login token for the specified game server", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the game server to reset the login token of" + } + ] + + }, + { + "name": "DeleteAccount", + "version": 1, + "httpmethod": "POST", + "description": "Deletes a persistent game server account", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the game server account to delete" + } + ] + + }, + { + "name": "GetAccountPublicInfo", + "version": 1, + "httpmethod": "GET", + "description": "Gets public information about a given game server account", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the game server to get info on" + } + ] + + }, + { + "name": "QueryLoginToken", + "version": 1, + "httpmethod": "GET", + "description": "Queries the status of the specified token, which must be owned by you", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "login_token", + "type": "string", + "optional": false, + "description": "Login token to query" + } + ] + + }, + { + "name": "SetBanStatus", + "version": 1, + "httpmethod": "POST", + "description": "performs a GSLT ban/unban of GSLT associated with a GS. If banning, also bans associated users' GSLTs.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "banned", + "type": "bool", + "optional": false + }, + { + "name": "ban_seconds", + "type": "uint32", + "optional": false + } + ] + + }, + { + "name": "GetServerSteamIDsByIP", + "version": 1, + "httpmethod": "GET", + "description": "Gets a list of server SteamIDs given a list of IPs", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "server_ips", + "type": "string", + "optional": false + } + ] + + }, + { + "name": "GetServerIPsBySteamID", + "version": 1, + "httpmethod": "GET", + "description": "Gets a list of server IP addresses given a list of SteamIDs", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "server_steamids", + "type": "uint64", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IBroadcastService", + "methods": [ + { + "name": "PostGameDataFrame", + "version": 1, + "httpmethod": "POST", + "description": "Add a game meta data frame to broadcast", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "broadcast_id", + "type": "uint64", + "optional": false + }, + { + "name": "frame_data", + "type": "string", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IPublishedFileService", + "methods": [ + { + "name": "QueryFiles", + "version": 1, + "httpmethod": "GET", + "description": "Performs a search query for published files", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "query_type", + "type": "uint32", + "optional": false, + "description": "enumeration EPublishedFileQueryType in clientenums.h" + }, + { + "name": "page", + "type": "uint32", + "optional": false, + "description": "Current page" + }, + { + "name": "numperpage", + "type": "uint32", + "optional": true, + "description": "(Optional) The number of results, per page to return." + }, + { + "name": "creator_appid", + "type": "uint32", + "optional": false, + "description": "App that created the files" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "App that consumes the files" + }, + { + "name": "requiredtags", + "type": "string", + "optional": false, + "description": "Tags to match on. See match_all_tags parameter below" + }, + { + "name": "excludedtags", + "type": "string", + "optional": false, + "description": "(Optional) Tags that must NOT be present on a published file to satisfy the query." + }, + { + "name": "match_all_tags", + "type": "bool", + "optional": true, + "description": "If true, then items must have all the tags specified, otherwise they must have at least one of the tags." + }, + { + "name": "required_flags", + "type": "string", + "optional": false, + "description": "Required flags that must be set on any returned items" + }, + { + "name": "omitted_flags", + "type": "string", + "optional": false, + "description": "Flags that must not be set on any returned items" + }, + { + "name": "search_text", + "type": "string", + "optional": false, + "description": "Text to match in the item's title or description" + }, + { + "name": "filetype", + "type": "uint32", + "optional": false, + "description": "EPublishedFileInfoMatchingFileType" + }, + { + "name": "child_publishedfileid", + "type": "uint64", + "optional": false, + "description": "Find all items that reference the given item." + }, + { + "name": "days", + "type": "uint32", + "optional": false, + "description": "If query_type is k_PublishedFileQueryType_RankedByTrend, then this is the number of days to get votes for [1,7]." + }, + { + "name": "include_recent_votes_only", + "type": "bool", + "optional": false, + "description": "If query_type is k_PublishedFileQueryType_RankedByTrend, then limit result set just to items that have votes within the day range given" + }, + { + "name": "cache_max_age_seconds", + "type": "uint32", + "optional": true, + "description": "Allow stale data to be returned for the specified number of seconds." + }, + { + "name": "language", + "type": "int32", + "optional": true, + "description": "Language to search in and also what gets returned. Defaults to English." + }, + { + "name": "required_kv_tags", + "type": "{message}", + "optional": false, + "description": "Required key-value tags to match on." + }, + { + "name": "totalonly", + "type": "bool", + "optional": false, + "description": "(Optional) If true, only return the total number of files that satisfy this query." + }, + { + "name": "ids_only", + "type": "bool", + "optional": false, + "description": "(Optional) If true, only return the published file ids of files that satisfy this query." + }, + { + "name": "return_vote_data", + "type": "bool", + "optional": false, + "description": "Return vote data" + }, + { + "name": "return_tags", + "type": "bool", + "optional": false, + "description": "Return tags in the file details" + }, + { + "name": "return_kv_tags", + "type": "bool", + "optional": false, + "description": "Return key-value tags in the file details" + }, + { + "name": "return_previews", + "type": "bool", + "optional": false, + "description": "Return preview image and video details in the file details" + }, + { + "name": "return_children", + "type": "bool", + "optional": false, + "description": "Return child item ids in the file details" + }, + { + "name": "return_short_description", + "type": "bool", + "optional": false, + "description": "Populate the short_description field instead of file_description" + }, + { + "name": "return_for_sale_data", + "type": "bool", + "optional": false, + "description": "Return pricing information, if applicable" + }, + { + "name": "return_metadata", + "type": "bool", + "optional": true, + "description": "Populate the metadata" + } + ] + + }, + { + "name": "SetDeveloperMetadata", + "version": 1, + "httpmethod": "POST", + "description": "Sets the metadata for a developer on the published file", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "publishedfileid", + "type": "uint64", + "optional": false + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "metadata", + "type": "string", + "optional": false + } + ] + + }, + { + "name": "UpdateTags", + "version": 1, + "httpmethod": "POST", + "description": "Updates tags on the published file", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "publishedfileid", + "type": "uint64", + "optional": false + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "add_tags", + "type": "string", + "optional": false + }, + { + "name": "remove_tags", + "type": "string", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IEconService", + "methods": [ + { + "name": "FlushInventoryCache", + "version": 1, + "httpmethod": "POST", + "description": "Flushes the cache for a user's inventory in a specific app context", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "User to clear cache for." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "App to clear cache for." + }, + { + "name": "contextid", + "type": "uint64", + "optional": false, + "description": "Context to clear cache for." + } + ] + + }, + { + "name": "FlushAssetAppearanceCache", + "version": 1, + "httpmethod": "POST", + "description": "Flushes the display cache for assets. This will result in calls to GetAssetClassInfo for each asset class the next time it is displayed.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + } + ] + + }, + { + "name": "GetTradeHistory", + "version": 1, + "httpmethod": "GET", + "description": "Gets a history of trades", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "max_trades", + "type": "uint32", + "optional": false, + "description": "The number of trades to return information for" + }, + { + "name": "start_after_time", + "type": "uint32", + "optional": false, + "description": "The time of the last trade shown on the previous page of results, or the time of the first trade if navigating back" + }, + { + "name": "start_after_tradeid", + "type": "uint64", + "optional": false, + "description": "The tradeid shown on the previous page of results, or the ID of the first trade if navigating back" + }, + { + "name": "navigating_back", + "type": "bool", + "optional": false, + "description": "The user wants the previous page of results, so return the previous max_trades trades before the start time and ID" + }, + { + "name": "get_descriptions", + "type": "bool", + "optional": false, + "description": "If set, the item display data for the items included in the returned trades will also be returned" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "The language to use when loading item display data" + }, + { + "name": "include_failed", + "type": "bool", + "optional": false + }, + { + "name": "include_total", + "type": "bool", + "optional": false, + "description": "If set, the total number of trades the account has participated in will be included in the response" + } + ] + + }, + { + "name": "GetTradeOffers", + "version": 1, + "httpmethod": "GET", + "description": "Get a list of sent or received trade offers", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "get_sent_offers", + "type": "bool", + "optional": false, + "description": "Request the list of sent offers." + }, + { + "name": "get_received_offers", + "type": "bool", + "optional": false, + "description": "Request the list of received offers." + }, + { + "name": "get_descriptions", + "type": "bool", + "optional": false, + "description": "If set, the item display data for the items included in the returned trade offers will also be returned." + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "The language to use when loading item display data." + }, + { + "name": "active_only", + "type": "bool", + "optional": false, + "description": "Indicates we should only return offers which are still active, or offers that have changed in state since the time_historical_cutoff" + }, + { + "name": "historical_only", + "type": "bool", + "optional": false, + "description": "Indicates we should only return offers which are not active." + }, + { + "name": "time_historical_cutoff", + "type": "uint32", + "optional": false, + "description": "When active_only is set, offers updated since this time will also be returned" + } + ] + + }, + { + "name": "GetTradeOffer", + "version": 1, + "httpmethod": "GET", + "description": "Gets a specific trade offer", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "tradeofferid", + "type": "uint64", + "optional": false + }, + { + "name": "language", + "type": "string", + "optional": false + } + ] + + }, + { + "name": "GetTradeOffersSummary", + "version": 1, + "httpmethod": "GET", + "description": "Get counts of pending and new trade offers", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "time_last_visit", + "type": "uint32", + "optional": false, + "description": "The time the user last visited. If not passed, will use the time the user last visited the trade offer page." + } + ] + + }, + { + "name": "DeclineTradeOffer", + "version": 1, + "httpmethod": "POST", + "description": "Decline a trade offer someone sent to us", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "tradeofferid", + "type": "uint64", + "optional": false + } + ] + + }, + { + "name": "CancelTradeOffer", + "version": 1, + "httpmethod": "POST", + "description": "Cancel a trade offer we sent", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "tradeofferid", + "type": "uint64", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IPlayerService", + "methods": [ + { + "name": "RecordOfflinePlaytime", + "version": 1, + "httpmethod": "POST", + "description": "Tracks playtime for a user when they are offline", + "parameters": [ + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "ticket", + "type": "string", + "optional": false + }, + { + "name": "play_sessions", + "type": "{message}", + "optional": false + } + ] + + }, + { + "name": "GetRecentlyPlayedGames", + "version": 1, + "httpmethod": "GET", + "description": "Gets information about a player's recently played games", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + }, + { + "name": "count", + "type": "uint32", + "optional": false, + "description": "The number of games to return (0/unset: all)" + } + ] + + }, + { + "name": "GetOwnedGames", + "version": 1, + "httpmethod": "GET", + "description": "Return a list of games owned by the player", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + }, + { + "name": "include_appinfo", + "type": "bool", + "optional": false, + "description": "true if we want additional details (name, icon) about each game" + }, + { + "name": "include_played_free_games", + "type": "bool", + "optional": false, + "description": "Free games are excluded by default. If this is set, free games the user has played will be returned." + }, + { + "name": "appids_filter", + "type": "uint32", + "optional": false, + "description": "if set, restricts result set to the passed in apps" + } + ] + + }, + { + "name": "GetSteamLevel", + "version": 1, + "httpmethod": "GET", + "description": "Returns the Steam Level of a user", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + } + ] + + }, + { + "name": "GetBadges", + "version": 1, + "httpmethod": "GET", + "description": "Gets badges that are owned by a specific user", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + } + ] + + }, + { + "name": "GetCommunityBadgeProgress", + "version": 1, + "httpmethod": "GET", + "description": "Gets all the quests needed to get the specified badge, and which are completed", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + }, + { + "name": "badgeid", + "type": "int32", + "optional": false, + "description": "The badge we're asking about" + } + ] + + }, + { + "name": "IsPlayingSharedGame", + "version": 1, + "httpmethod": "GET", + "description": "Returns valid lender SteamID if game currently played is borrowed", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The player we're asking about" + }, + { + "name": "appid_playing", + "type": "uint32", + "optional": false, + "description": "The game player is currently playing" + } + ] + + } + ] + + }, + { + "name": "IGameNotificationsService", + "methods": [ + { + "name": "CreateSession", + "version": 1, + "httpmethod": "POST", + "description": "Creates an async game session", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid to create the session for." + }, + { + "name": "context", + "type": "uint64", + "optional": false, + "description": "Game-specified context value the game can used to associate the session with some object on their backend." + }, + { + "name": "title", + "type": "{message}", + "optional": false, + "description": "The title of the session to be displayed within each user's list of sessions." + }, + { + "name": "users", + "type": "{message}", + "optional": false, + "description": "The initial state of all users in the session." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "(Optional) steamid to make the request on behalf of -- if specified, the user must be in the session and all users being added to the session must be friends with the user." + } + ] + + }, + { + "name": "UpdateSession", + "version": 1, + "httpmethod": "POST", + "description": "Updates a game session", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "sessionid", + "type": "uint64", + "optional": false, + "description": "The sessionid to update." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid of the session to update." + }, + { + "name": "title", + "type": "{message}", + "optional": false, + "description": "(Optional) The new title of the session. If not specified, the title will not be changed." + }, + { + "name": "users", + "type": "{message}", + "optional": false, + "description": "(Optional) A list of users whose state will be updated to reflect the given state. If the users are not already in the session, they will be added to it." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "(Optional) steamid to make the request on behalf of -- if specified, the user must be in the session and all users being added to the session must be friends with the user." + } + ] + + }, + { + "name": "EnumerateSessionsForApp", + "version": 1, + "httpmethod": "GET", + "description": "Enumerates a user's sessions", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The sessionid to request details for. Optional. If not specified, all the user's sessions will be returned." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The user whose sessions are to be enumerated." + }, + { + "name": "include_all_user_messages", + "type": "bool", + "optional": false, + "description": "(Optional) Boolean determining whether the message for all users should be included. Defaults to false." + }, + { + "name": "include_auth_user_message", + "type": "bool", + "optional": false, + "description": "(Optional) Boolean determining whether the message for the authenticated user should be included. Defaults to false." + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "(Optional) Language to localize the text in." + } + ] + + }, + { + "name": "GetSessionDetailsForApp", + "version": 1, + "httpmethod": "GET", + "description": "Get the details for a specific session", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "sessions", + "type": "{message}", + "optional": false + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid for the sessions." + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "Language to localize the text in." + } + ] + + }, + { + "name": "RequestNotifications", + "version": 1, + "httpmethod": "POST", + "description": "Requests that a user receive game notifications for an app", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The steamid to request notifications for." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid to request notifications for." + } + ] + + }, + { + "name": "DeleteSession", + "version": 1, + "httpmethod": "POST", + "description": "Deletes an async game session", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "sessionid", + "type": "uint64", + "optional": false, + "description": "The sessionid to delete." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid of the session to delete." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "(Optional) steamid to make the request on behalf of -- if specified, the user must be in the session." + } + ] + + }, + { + "name": "DeleteSessionBatch", + "version": 1, + "httpmethod": "POST", + "description": "Deletes a batch of async game sessions", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "sessionid", + "type": "uint64", + "optional": false, + "description": "The sessionid to delete." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid of the session to delete." + } + ] + + } + ] + + }, + { + "name": "IInventoryService", + "methods": [ + { + "name": "AddItem", + "version": 1, + "httpmethod": "POST", + "description": "Adds an item to a user's inventory", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "itemdefid", + "type": "uint64", + "optional": false + }, + { + "name": "itempropsjson", + "type": "string", + "optional": false + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "notify", + "type": "bool", + "optional": false, + "description": "Should notify the user that the item was added to their Steam Inventory." + } + ] + + }, + { + "name": "AddPromoItem", + "version": 1, + "httpmethod": "POST", + "description": "Adds a promo item to a user's inventory", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "itemdefid", + "type": "uint64", + "optional": false + }, + { + "name": "itempropsjson", + "type": "string", + "optional": false + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "notify", + "type": "bool", + "optional": false, + "description": "Should notify the user that the item was added to their Steam Inventory." + } + ] + + }, + { + "name": "ExchangeItem", + "version": 1, + "httpmethod": "POST", + "description": "Craft an item in a user's inventory", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + }, + { + "name": "materialsitemid", + "type": "uint64", + "optional": false + }, + { + "name": "materialsquantity", + "type": "uint32", + "optional": false + }, + { + "name": "outputitemdefid", + "type": "uint64", + "optional": false + } + ] + + }, + { + "name": "GetInventory", + "version": 1, + "httpmethod": "GET", + "description": "Retrieves a users inventory as a big JSON blob", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "steamid", + "type": "uint64", + "optional": false + } + ] + + }, + { + "name": "GetItemDefs", + "version": 1, + "httpmethod": "GET", + "description": "Get item definitions", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "modifiedsince", + "type": "string", + "optional": false + }, + { + "name": "itemdefids", + "type": "uint64", + "optional": false + }, + { + "name": "workshopids", + "type": "uint64", + "optional": false + }, + { + "name": "cache_max_age_seconds", + "type": "uint32", + "optional": true, + "description": "Allow stale data to be returned for the specified number of seconds." + } + ] + + }, + { + "name": "GetPriceSheet", + "version": 1, + "httpmethod": "GET", + "description": "Get the Inventory Service price sheet", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "ecurrency", + "type": "int32", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IEconMarketService", + "methods": [ + { + "name": "GetMarketEligibility", + "version": 1, + "httpmethod": "GET", + "description": "Checks whether or not an account is allowed to use the market", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user to check" + } + ] + + }, + { + "name": "CancelAppListingsForUser", + "version": 1, + "httpmethod": "POST", + "description": "Cancels all of a user's listings for a specific app ID.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app making the request" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "The SteamID of the user whose listings should be canceled" + }, + { + "name": "synchronous", + "type": "bool", + "optional": false, + "description": "Whether or not to wait until all listings have been canceled before returning the response" + } + ] + + }, + { + "name": "GetAssetID", + "version": 1, + "httpmethod": "GET", + "description": "Returns the asset ID of the item sold in a listing", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The app that's asking. Must match the app of the listing and must belong to the publisher group that owns the API key making the request" + }, + { + "name": "listingid", + "type": "uint64", + "optional": false, + "description": "The identifier of the listing to get information for" + } + ] + + }, + { + "name": "GetPopular", + "version": 1, + "httpmethod": "GET", + "description": "Gets the most popular items", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "language", + "type": "string", + "optional": false, + "description": "The language to use in item descriptions" + }, + { + "name": "rows", + "type": "uint32", + "optional": true, + "description": "Number of rows per page" + }, + { + "name": "start", + "type": "uint32", + "optional": false, + "description": "The result number to start at" + }, + { + "name": "filter_appid", + "type": "uint32", + "optional": false, + "description": "If present, the app ID to limit results to" + }, + { + "name": "ecurrency", + "type": "uint32", + "optional": false, + "description": "If present, prices returned will be represented in this currency" + } + ] + + } + ] + + }, + { + "name": "ITestExternalPrivilegeService", + "methods": [ + { + "name": "CallPublisherKey", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + } + ] + + }, + { + "name": "CallPublisherKeyOwnsApp", + "version": 1, + "httpmethod": "POST", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + } + ] + + } + ] + + }, + { + "name": "ICheatReportingService", + "methods": [ + { + "name": "ReportPlayerCheating", + "version": 1, + "httpmethod": "POST", + "description": "Reports a player cheating", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user who is reported as cheating." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid." + }, + { + "name": "steamidreporter", + "type": "uint64", + "optional": false, + "description": "(Optional) steamid of the user or game server who is reporting the cheating." + }, + { + "name": "appdata", + "type": "uint64", + "optional": false, + "description": "(Optional) App specific data about the cheating." + }, + { + "name": "heuristic", + "type": "bool", + "optional": false, + "description": "(Optional) extra information about the source of the cheating - was it a heuristic." + }, + { + "name": "detection", + "type": "bool", + "optional": false, + "description": "(Optional) extra information about the source of the cheating - was it a detection." + }, + { + "name": "playerreport", + "type": "bool", + "optional": false, + "description": "(Optional) extra information about the source of the cheating - was it a player report." + }, + { + "name": "noreportid", + "type": "bool", + "optional": false, + "description": "(Optional) dont return report id" + }, + { + "name": "gamemode", + "type": "uint32", + "optional": false, + "description": "(Optional) extra information about state of game - was it a specific type of game play (0 = generic)" + }, + { + "name": "suspicionstarttime", + "type": "uint32", + "optional": false, + "description": "(Optional) extra information indicating how far back the game thinks is interesting for this user" + }, + { + "name": "severity", + "type": "uint32", + "optional": false, + "description": "(Optional) level of severity of bad action being reported" + } + ] + + }, + { + "name": "RequestPlayerGameBan", + "version": 1, + "httpmethod": "POST", + "description": "Requests a ban on a player", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user who is reported as cheating." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid." + }, + { + "name": "reportid", + "type": "uint64", + "optional": false, + "description": "The reportid originally used to report cheating." + }, + { + "name": "cheatdescription", + "type": "string", + "optional": false, + "description": "Text describing cheating infraction." + }, + { + "name": "duration", + "type": "uint32", + "optional": false, + "description": "Ban duration requested in seconds." + }, + { + "name": "delayban", + "type": "bool", + "optional": false, + "description": "Delay the ban according to default ban delay rules." + }, + { + "name": "flags", + "type": "uint32", + "optional": false, + "description": "Additional information about the ban request." + } + ] + + }, + { + "name": "RemovePlayerGameBan", + "version": 1, + "httpmethod": "POST", + "description": "Remove a ban on a player", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user who is reported as cheating." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid." + } + ] + + }, + { + "name": "GetCheatingReports", + "version": 1, + "httpmethod": "GET", + "description": "Get a list of cheating reports submitted for this app", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid." + }, + { + "name": "timeend", + "type": "uint32", + "optional": false, + "description": "The beginning of the time range ." + }, + { + "name": "timebegin", + "type": "uint32", + "optional": false, + "description": "The end of the time range." + }, + { + "name": "reportidmin", + "type": "uint64", + "optional": false, + "description": "Minimum reportID to include" + }, + { + "name": "includereports", + "type": "bool", + "optional": false, + "description": "(Optional) Include reports." + }, + { + "name": "includebans", + "type": "bool", + "optional": false, + "description": "(Optional) Include ban requests." + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "(Optional) Query just for this steamid." + } + ] + + }, + { + "name": "RequestVacStatusForUser", + "version": 1, + "httpmethod": "POST", + "description": "Checks a user's VAC session status. If verification fails, then do not let the user matchmake into a secure game.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid the user is playing." + }, + { + "name": "session_id", + "type": "uint64", + "optional": false, + "description": "session id" + } + ] + + }, + { + "name": "StartSecureMultiplayerSession", + "version": 1, + "httpmethod": "POST", + "description": "Tell the VAC servers that a secure multiplayer session has started", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid the user is playing." + } + ] + + }, + { + "name": "EndSecureMultiplayerSession", + "version": 1, + "httpmethod": "POST", + "description": "Tell the VAC servers that a secure multiplayer session has ended.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid the user is playing." + }, + { + "name": "session_id", + "type": "uint64", + "optional": false, + "description": "session id" + } + ] + + }, + { + "name": "ReportCheatData", + "version": 1, + "httpmethod": "POST", + "description": "Reports cheat data. Only use on test account that is running the game but not in a multiplayer session.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "steamid", + "type": "uint64", + "optional": false, + "description": "steamid of the user running and reporting the cheat." + }, + { + "name": "appid", + "type": "uint32", + "optional": false, + "description": "The appid." + }, + { + "name": "pathandfilename", + "type": "string", + "optional": false, + "description": "path and file name of the cheat executable." + }, + { + "name": "webcheaturl", + "type": "string", + "optional": false, + "description": "web url where the cheat was found and downloaded." + }, + { + "name": "time_now", + "type": "uint64", + "optional": false, + "description": "local system time now." + }, + { + "name": "time_started", + "type": "uint64", + "optional": false, + "description": "local system time when cheat process started. ( 0 if not yet run )" + }, + { + "name": "time_stopped", + "type": "uint64", + "optional": false, + "description": "local system time when cheat process stopped. ( 0 if still running )" + }, + { + "name": "cheatname", + "type": "string", + "optional": false, + "description": "descriptive name for the cheat." + }, + { + "name": "game_process_id", + "type": "uint32", + "optional": false, + "description": "process ID of the running game." + }, + { + "name": "cheat_process_id", + "type": "uint32", + "optional": false, + "description": "process ID of the cheat process that ran" + }, + { + "name": "cheat_param_1", + "type": "uint64", + "optional": false, + "description": "cheat param 1" + }, + { + "name": "cheat_param_2", + "type": "uint64", + "optional": false, + "description": "cheat param 2" + } + ] + + } + ] + + }, + { + "name": "IAccountRecoveryService", + "methods": [ + { + "name": "ReportAccountRecoveryData", + "version": 1, + "httpmethod": "POST", + "description": "Send account recovery data", + "parameters": [ + { + "name": "loginuser_list", + "type": "string", + "optional": false + }, + { + "name": "install_config", + "type": "string", + "optional": false + }, + { + "name": "shasentryfile", + "type": "string", + "optional": false + }, + { + "name": "machineid", + "type": "string", + "optional": false + } + ] + + }, + { + "name": "RetrieveAccountRecoveryData", + "version": 1, + "httpmethod": "POST", + "description": "Send account recovery data", + "parameters": [ + { + "name": "requesthandle", + "type": "string", + "optional": false + } + ] + + } + ] + + }, + { + "name": "IWorkshopService", + "methods": [ + { + "name": "SetItemPaymentRules", + "version": 1, + "httpmethod": "POST", + "description": "Set item payment rules.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "gameitemid", + "type": "uint32", + "optional": false + }, + { + "name": "associated_workshop_files", + "type": "{message}", + "optional": false + }, + { + "name": "partner_accounts", + "type": "{message}", + "optional": false + }, + { + "name": "validate_only", + "type": "bool", + "optional": true, + "description": "Only validates the rules and does not persist them." + }, + { + "name": "make_workshop_files_subscribable", + "type": "bool", + "optional": false + } + ] + + }, + { + "name": "GetFinalizedContributors", + "version": 1, + "httpmethod": "POST", + "description": "Get a list of contributors for a specific gameitemid/app combination.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "gameitemid", + "type": "uint32", + "optional": false + } + ] + + }, + { + "name": "GetItemDailyRevenue", + "version": 1, + "httpmethod": "POST", + "description": "Get item revenue for a specific app/item definition for a date range.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "item_id", + "type": "uint32", + "optional": false + }, + { + "name": "date_start", + "type": "uint32", + "optional": false + }, + { + "name": "date_end", + "type": "uint32", + "optional": false + } + ] + + }, + { + "name": "PopulateItemDescriptions", + "version": 1, + "httpmethod": "POST", + "description": "Populate block of item descriptions.", + "parameters": [ + { + "name": "key", + "type": "string", + "optional": false, + "description": "Access key" + }, + { + "name": "appid", + "type": "uint32", + "optional": false + }, + { + "name": "languages", + "type": "{message}", + "optional": false + } + ] + + } + ] + + } + ] + + } +} \ No newline at end of file