steamutils 1.3.20 → 1.3.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (217) hide show
  1. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  2. package/.idea/steamutils.iml +1 -1
  3. package/.idea/vcs.xml +1 -1
  4. package/free_packages.json +10048 -10048
  5. package/index.js +14 -3
  6. package/package.json +1 -1
  7. package/protos/csgo/base_gcmessages_csgo.proto +547 -547
  8. package/protos/csgo/c_peer2peer_netmessages.proto +55 -55
  9. package/protos/csgo/clientmessages.proto +48 -48
  10. package/protos/csgo/connectionless_netmessages.proto +19 -19
  11. package/protos/csgo/cs_gameevents.proto +34 -34
  12. package/protos/csgo/cs_usercmd.proto +34 -34
  13. package/protos/csgo/cstrike15_gcmessages.proto +1402 -1402
  14. package/protos/csgo/cstrike15_usermessages.proto +596 -596
  15. package/protos/csgo/demo.proto +160 -160
  16. package/protos/csgo/econ_gcmessages.proto +228 -228
  17. package/protos/csgo/engine_gcmessages.proto +14 -14
  18. package/protos/csgo/enums_clientserver.proto +1529 -1529
  19. package/protos/csgo/fatdemo.proto +125 -125
  20. package/protos/csgo/gameevents.proto +120 -120
  21. package/protos/csgo/gcsdk_gcmessages.proto +323 -323
  22. package/protos/csgo/gcsystemmsgs.proto +242 -242
  23. package/protos/csgo/netmessages.proto +604 -604
  24. package/protos/csgo/network_connection.proto +126 -126
  25. package/protos/csgo/networkbasetypes.proto +244 -244
  26. package/protos/csgo/networksystem_protomessages.proto +17 -17
  27. package/protos/csgo/steamdatagram_messages_auth.proto +65 -65
  28. package/protos/csgo/steamdatagram_messages_sdr.proto +534 -534
  29. package/protos/csgo/steammessages.proto +597 -597
  30. package/protos/csgo/steammessages_base.proto +301 -301
  31. package/protos/csgo/steammessages_cloud.steamworkssdk.proto +68 -68
  32. package/protos/csgo/steammessages_gamenetworkingui.proto +61 -61
  33. package/protos/csgo/steammessages_helprequest.steamworkssdk.proto +22 -22
  34. package/protos/csgo/steammessages_oauth.steamworkssdk.proto +18 -18
  35. package/protos/csgo/steammessages_player.steamworkssdk.proto +254 -254
  36. package/protos/csgo/steammessages_publishedfile.steamworkssdk.proto +233 -233
  37. package/protos/csgo/steammessages_steamlearn.steamworkssdk.proto +357 -357
  38. package/protos/csgo/steammessages_unified_base.steamworkssdk.proto +30 -30
  39. package/protos/csgo/steamnetworkingsockets_messages.proto +205 -205
  40. package/protos/csgo/steamnetworkingsockets_messages_certs.proto +39 -39
  41. package/protos/csgo/steamnetworkingsockets_messages_udp.proto +75 -75
  42. package/protos/csgo/te.proto +259 -259
  43. package/protos/csgo/uifontfile_format.proto +13 -13
  44. package/protos/csgo/usercmd.proto +38 -38
  45. package/protos/csgo/usermessages.proto +721 -721
  46. package/protos/csgo/valveextensions.proto +17 -17
  47. package/protos/google/protobuf/descriptor.proto +281 -281
  48. package/protos/steam/clientmetrics.proto +45 -45
  49. package/protos/steam/content_manifest.proto +62 -62
  50. package/protos/steam/contenthubs.proto +41 -41
  51. package/protos/steam/encrypted_app_ticket.proto +10 -10
  52. package/protos/steam/enums.proto +444 -444
  53. package/protos/steam/enums_clientserver.proto +1539 -1539
  54. package/protos/steam/enums_productinfo.proto +13 -13
  55. package/protos/steam/htmlmessages.proto +1027 -1027
  56. package/protos/steam/offline_ticket.proto +8 -8
  57. package/protos/steam/renderer/rendermessages.proto +893 -893
  58. package/protos/steam/steamdatagram_messages_auth.proto +65 -65
  59. package/protos/steam/steamdatagram_messages_sdr.proto +533 -533
  60. package/protos/steam/steammessages_accounthardware.steamclient.proto +201 -201
  61. package/protos/steam/steammessages_appoverview.proto +187 -187
  62. package/protos/steam/steammessages_auth.steamclient.proto +435 -435
  63. package/protos/steam/steammessages_base.proto +332 -332
  64. package/protos/steam/steammessages_broadcast.steamclient.proto +759 -759
  65. package/protos/steam/steammessages_chat.steamclient.proto +1281 -1281
  66. package/protos/steam/steammessages_client_objects.proto +645 -645
  67. package/protos/steam/steammessages_clientlanp2p.proto +42 -42
  68. package/protos/steam/steammessages_clientmetrics.steamclient.proto +194 -194
  69. package/protos/steam/steammessages_clientnotificationtypes.proto +231 -231
  70. package/protos/steam/steammessages_clientserver.proto +392 -392
  71. package/protos/steam/steammessages_clientserver_2.proto +760 -760
  72. package/protos/steam/steammessages_clientserver_appinfo.proto +131 -131
  73. package/protos/steam/steammessages_clientserver_friends.proto +260 -260
  74. package/protos/steam/steammessages_clientserver_gameservers.proto +159 -159
  75. package/protos/steam/steammessages_clientserver_lbs.proto +70 -70
  76. package/protos/steam/steammessages_clientserver_login.proto +167 -167
  77. package/protos/steam/steammessages_clientserver_ucm.proto +205 -205
  78. package/protos/steam/steammessages_clientserver_uds.proto +124 -124
  79. package/protos/steam/steammessages_clientserver_ufs.proto +172 -172
  80. package/protos/steam/steammessages_clientserver_userstats.proto +80 -80
  81. package/protos/steam/steammessages_clientsettings.proto +168 -168
  82. package/protos/steam/steammessages_cloud.steamclient.proto +513 -513
  83. package/protos/steam/steammessages_contentsystem.steamclient.proto +115 -115
  84. package/protos/steam/steammessages_credentials.steamclient.proto +115 -115
  85. package/protos/steam/steammessages_datapublisher.steamclient.proto +116 -116
  86. package/protos/steam/steammessages_depotbuilder.steamclient.proto +118 -118
  87. package/protos/steam/steammessages_deviceauth.steamclient.proto +203 -203
  88. package/protos/steam/steammessages_econ.steamclient.proto +150 -150
  89. package/protos/steam/steammessages_friendmessages.steamclient.proto +168 -168
  90. package/protos/steam/steammessages_gamenetworking.steamclient.proto +32 -32
  91. package/protos/steam/steammessages_gamenetworkingui.proto +61 -61
  92. package/protos/steam/steammessages_gamenotifications.steamclient.proto +156 -156
  93. package/protos/steam/steammessages_gameservers.steamclient.proto +152 -152
  94. package/protos/steam/steammessages_hiddevices.proto +157 -157
  95. package/protos/steam/steammessages_inventory.steamclient.proto +224 -224
  96. package/protos/steam/steammessages_linkfilter.steamclient.proto +49 -49
  97. package/protos/steam/steammessages_lobbymatchmaking.steamclient.proto +33 -33
  98. package/protos/steam/steammessages_market.steamclient.proto +26 -26
  99. package/protos/steam/steammessages_marketingmessages.steamclient.proto +274 -274
  100. package/protos/steam/steammessages_offline.steamclient.proto +40 -40
  101. package/protos/steam/steammessages_parental.steamclient.proto +228 -228
  102. package/protos/steam/steammessages_parties.steamclient.proto +94 -94
  103. package/protos/steam/steammessages_partnerapps.steamclient.proto +138 -138
  104. package/protos/steam/steammessages_player.steamclient.proto +1060 -1060
  105. package/protos/steam/steammessages_publishedfile.steamclient.proto +813 -813
  106. package/protos/steam/steammessages_qms.steamclient.proto +125 -125
  107. package/protos/steam/steammessages_remoteclient.proto +99 -99
  108. package/protos/steam/steammessages_remoteclient_discovery.proto +235 -235
  109. package/protos/steam/steammessages_remoteclient_service.steamclient.proto +86 -86
  110. package/protos/steam/steammessages_remoteclient_service_messages.proto +217 -217
  111. package/protos/steam/steammessages_remoteplay.proto +976 -976
  112. package/protos/steam/steammessages_secrets.steamclient.proto +39 -39
  113. package/protos/steam/steammessages_shader.steamclient.proto +108 -108
  114. package/protos/steam/steammessages_site_license.steamclient.proto +128 -128
  115. package/protos/steam/steammessages_sitelicenseclient.proto +38 -38
  116. package/protos/steam/steammessages_siteserverui.proto +130 -130
  117. package/protos/steam/steammessages_star.steamclient.proto +64 -64
  118. package/protos/steam/steammessages_steamtv.steamclient.proto +630 -630
  119. package/protos/steam/steammessages_store.steamclient.proto +371 -371
  120. package/protos/steam/steammessages_storebrowse.steamclient.proto +402 -402
  121. package/protos/steam/steammessages_timedtrial.steamclient.proto +50 -50
  122. package/protos/steam/steammessages_twofactor.steamclient.proto +186 -186
  123. package/protos/steam/steammessages_unified_base.steamclient.proto +33 -33
  124. package/protos/steam/steammessages_unified_test.steamclient.proto +61 -61
  125. package/protos/steam/steammessages_useraccount.steamclient.proto +249 -249
  126. package/protos/steam/steammessages_vac.steamclient.proto +44 -44
  127. package/protos/steam/steammessages_video.steamclient.proto +171 -171
  128. package/protos/steam/steammessages_virtualcontroller.proto +138 -138
  129. package/protos/steam/steammessages_workshop.steamclient.proto +23 -23
  130. package/protos/steam/steamnetworkingsockets_messages.proto +205 -205
  131. package/protos/steam/steamnetworkingsockets_messages_certs.proto +39 -39
  132. package/protos/steam/steamnetworkingsockets_messages_udp.proto +75 -75
  133. package/protos/steam/webuimessages_base.proto +24 -24
  134. package/protos/steam/webuimessages_gamenotes.proto +21 -21
  135. package/protos/steam/webuimessages_steamengine.proto +32 -32
  136. package/protos/steam/webuimessages_storagedevicemanager.proto +110 -110
  137. package/protos/steam/webuimessages_systemmanager.proto +17 -17
  138. package/protos/steam/webuimessages_transport.proto +18 -18
  139. package/protos/steam/webuimessages_transportvalidation.proto +97 -97
  140. package/protos/webui/common.proto +5508 -5508
  141. package/protos/webui/common_base.proto +27 -27
  142. package/protos/webui/service_accountlinking.proto +27 -27
  143. package/protos/webui/service_accountprivacy.proto +42 -42
  144. package/protos/webui/service_auction.proto +97 -97
  145. package/protos/webui/service_authentication.proto +222 -222
  146. package/protos/webui/service_authenticationsupport.proto +74 -74
  147. package/protos/webui/service_broadcast.proto +562 -562
  148. package/protos/webui/service_chat.proto +11 -11
  149. package/protos/webui/service_chatroom.proto +810 -810
  150. package/protos/webui/service_chatusability.proto +107 -107
  151. package/protos/webui/service_clan.proto +41 -41
  152. package/protos/webui/service_clanchatrooms.proto +25 -25
  153. package/protos/webui/service_clanfaqs.proto +202 -202
  154. package/protos/webui/service_clientcomm.proto +150 -150
  155. package/protos/webui/service_clientmetrics.proto +63 -63
  156. package/protos/webui/service_cloud.proto +222 -222
  157. package/protos/webui/service_cloudconfigstore.proto +51 -51
  158. package/protos/webui/service_cloudgaming.proto +30 -30
  159. package/protos/webui/service_community.proto +365 -365
  160. package/protos/webui/service_econ.proto +134 -134
  161. package/protos/webui/service_embedded.proto +24 -24
  162. package/protos/webui/service_experimentservice.proto +6 -6
  163. package/protos/webui/service_fovasvideo.proto +15 -15
  164. package/protos/webui/service_friendmessages.proto +133 -133
  165. package/protos/webui/service_friendslist.proto +70 -70
  166. package/protos/webui/service_gamenotes.proto +15 -15
  167. package/protos/webui/service_helprequestlogs.proto +26 -26
  168. package/protos/webui/service_loyaltyrewards.proto +252 -252
  169. package/protos/webui/service_marketingmessages.proto +184 -184
  170. package/protos/webui/service_mobileapp.proto +18 -18
  171. package/protos/webui/service_mobileauth.proto +24 -24
  172. package/protos/webui/service_mobiledevice.proto +26 -26
  173. package/protos/webui/service_mobileperaccount.proto +31 -31
  174. package/protos/webui/service_news.proto +101 -101
  175. package/protos/webui/service_parental.proto +178 -178
  176. package/protos/webui/service_partnermembershipinvite.proto +29 -29
  177. package/protos/webui/service_partnerstorebrowse.proto +6 -6
  178. package/protos/webui/service_phone.proto +51 -51
  179. package/protos/webui/service_physicalgoods.proto +15 -15
  180. package/protos/webui/service_player.proto +885 -885
  181. package/protos/webui/service_promotioneventinvites.proto +50 -50
  182. package/protos/webui/service_promotionplanning.proto +72 -72
  183. package/protos/webui/service_publishedfile.proto +687 -687
  184. package/protos/webui/service_publishing.proto +119 -119
  185. package/protos/webui/service_quest.proto +127 -127
  186. package/protos/webui/service_salefeature.proto +315 -315
  187. package/protos/webui/service_saleitemrewards.proto +54 -54
  188. package/protos/webui/service_shoppingcart.proto +108 -108
  189. package/protos/webui/service_steamawards.proto +19 -19
  190. package/protos/webui/service_steamcharts.proto +75 -75
  191. package/protos/webui/service_steamengine.proto +36 -36
  192. package/protos/webui/service_steamlearn.proto +727 -727
  193. package/protos/webui/service_steamnotification.proto +84 -84
  194. package/protos/webui/service_steamtv.proto +495 -495
  195. package/protos/webui/service_steamvrvoicechat.proto +67 -67
  196. package/protos/webui/service_steamvrwebrtc.proto +48 -48
  197. package/protos/webui/service_storagedevicemanager.proto +104 -104
  198. package/protos/webui/service_store.proto +289 -289
  199. package/protos/webui/service_storeappsimilarity.proto +76 -76
  200. package/protos/webui/service_storebrowse.proto +73 -73
  201. package/protos/webui/service_storequery.proto +97 -97
  202. package/protos/webui/service_storesales.proto +15 -15
  203. package/protos/webui/service_storetopsellers.proto +44 -44
  204. package/protos/webui/service_systemmanager.proto +11 -11
  205. package/protos/webui/service_test_transporterror.proto +6 -6
  206. package/protos/webui/service_transportauth.proto +12 -12
  207. package/protos/webui/service_transportvalidation.proto +69 -69
  208. package/protos/webui/service_twofactor.proto +181 -181
  209. package/protos/webui/service_useraccount.proto +138 -138
  210. package/protos/webui/service_usergameactivity.proto +34 -34
  211. package/protos/webui/service_usergamenotes.proto +53 -53
  212. package/protos/webui/service_usernews.proto +68 -68
  213. package/protos/webui/service_userreviews.proto +96 -96
  214. package/protos/webui/service_video.proto +128 -128
  215. package/protos/webui/service_voicechat.proto +139 -139
  216. package/protos/webui/service_webrtc.proto +52 -52
  217. package/.idea/deployment.xml +0 -21
@@ -1,402 +1,402 @@
1
- import "steammessages_base.proto";
2
- import "steammessages_unified_base.steamclient.proto";
3
- import "enums_productinfo.proto";
4
- import "enums.proto";
5
- import "contenthubs.proto";
6
-
7
- option cc_generic_services = true;
8
-
9
- enum EStoreItemType {
10
- k_EStoreItemType_Invalid = -1;
11
- k_EStoreItemType_App = 0;
12
- k_EStoreItemType_Package = 1;
13
- k_EStoreItemType_Bundle = 2;
14
- k_EStoreItemType_Mtx = 3;
15
- k_EStoreItemType_Tag = 4;
16
- k_EStoreItemType_Creator = 5;
17
- k_EStoreItemType_HubCategory = 6;
18
- }
19
-
20
- enum EStoreAppType {
21
- k_EStoreAppType_Game = 0;
22
- k_EStoreAppType_Demo = 1;
23
- k_EStoreAppType_Mod = 2;
24
- k_EStoreAppType_Movie = 3;
25
- k_EStoreAppType_DLC = 4;
26
- k_EStoreAppType_Guide = 5;
27
- k_EStoreAppType_Software = 6;
28
- k_EStoreAppType_Video = 7;
29
- k_EStoreAppType_Series = 8;
30
- k_EStoreAppType_Episode = 9;
31
- k_EStoreAppType_Hardware = 10;
32
- k_EStoreAppType_Music = 11;
33
- k_EStoreAppType_Beta = 12;
34
- k_EStoreAppType_Tool = 13;
35
- k_EStoreAppType_Advertising = 14;
36
- }
37
-
38
- enum EUserReviewScore {
39
- k_EUserReviewScore_None = 0;
40
- k_EUserReviewScore_OverwhelminglyNegative = 1;
41
- k_EUserReviewScore_VeryNegative = 2;
42
- k_EUserReviewScore_Negative = 3;
43
- k_EUserReviewScore_MostlyNegative = 4;
44
- k_EUserReviewScore_Mixed = 5;
45
- k_EUserReviewScore_MostlyPositive = 6;
46
- k_EUserReviewScore_Positive = 7;
47
- k_EUserReviewScore_VeryPositive = 8;
48
- k_EUserReviewScore_OverwhelminglyPositive = 9;
49
- }
50
-
51
- enum EStoreCategoryType {
52
- k_EStoreCategoryType_Category = 0;
53
- k_EStoreCategoryType_SupportedPlayers = 1;
54
- k_EStoreCategoryType_Feature = 2;
55
- k_EStoreCategoryType_ControllerSupport = 3;
56
- k_EStoreCategoryType_CloudGaming = 4;
57
- k_EStoreCategoryType_MAX = 5;
58
- }
59
-
60
- message StoreItemID {
61
- optional uint32 appid = 1;
62
- optional uint32 packageid = 2;
63
- optional uint32 bundleid = 3;
64
- optional uint32 tagid = 4;
65
- optional uint32 creatorid = 5;
66
- optional uint32 hubcategoryid = 6;
67
- }
68
-
69
- message StoreBrowseContext {
70
- optional string language = 1;
71
- optional int32 elanguage = 2 [(description) = "ELanguage"];
72
- optional string country_code = 3 [(description) = "2-character country code; required"];
73
- optional int32 steam_realm = 4 [(description) = "ESteamRealm"];
74
- }
75
-
76
- message StoreBrowseItemDataRequest {
77
- optional bool include_assets = 1;
78
- optional bool include_release = 2;
79
- optional bool include_platforms = 3;
80
- optional bool include_all_purchase_options = 4;
81
- optional bool include_screenshots = 5;
82
- optional bool include_trailers = 6;
83
- optional bool include_ratings = 7;
84
- optional int32 include_tag_count = 8 [(description) = "Count of tags to return, as tagids. Maximum 20."];
85
- optional bool include_reviews = 9;
86
- optional bool include_basic_info = 10 [(description) = "Include short description, publisher, developers"];
87
- optional bool include_supported_languages = 11 [(description) = "includes the games support for languages: supported, full_audio, subtitles"];
88
- optional bool include_full_description = 12;
89
- optional bool include_included_items = 13 [(description) = "For packages and bundles, return the apps and packages included as well. Pass included_item_data_request for more details on the included items."];
90
- optional .StoreBrowseItemDataRequest included_item_data_request = 14 [(description) = "The data to return for included items."];
91
- }
92
-
93
- message CStoreBrowse_GetItems_Request {
94
- repeated .StoreItemID ids = 1;
95
- optional .StoreBrowseContext context = 2;
96
- optional .StoreBrowseItemDataRequest data_request = 3;
97
- }
98
-
99
- message StoreItem {
100
- message RelatedItems {
101
- optional uint32 parent_appid = 1 [(description) = "For DLC, Demos, etc, this is the main app."];
102
- }
103
-
104
- message IncludedItems {
105
- repeated .StoreItem included_apps = 1 [(description) = "All apps included, if this is a package or bundle"];
106
- repeated .StoreItem included_packages = 2 [(description) = "All packages included, if this is a bundle"];
107
- }
108
-
109
- message Categories {
110
- repeated uint32 supported_player_categoryids = 2 [(description) = "Categories like Single Player, Multiplayer, MMO"];
111
- repeated uint32 feature_categoryids = 3 [(description) = "Categories indicating supported features like Steam Cloud, VAC, Achievements, etc"];
112
- repeated uint32 controller_categoryids = 4 [(description) = "Categories indicating controller support and full controller support."];
113
- }
114
-
115
- message Reviews {
116
- message StoreReviewSummary {
117
- optional uint32 review_count = 1;
118
- optional int32 percent_positive = 2 [(description) = "0-100"];
119
- optional .EUserReviewScore review_score = 3 [default = k_EUserReviewScore_None];
120
- optional string review_score_label = 4 [(description) = "A string like 'Mixed', 'Negative', 'Overwhelmingly Positive'"];
121
- }
122
-
123
- optional .StoreItem.Reviews.StoreReviewSummary summary_filtered = 1 [(description) = "Review summary with review bombs removed (if any). Always present (if include_reviews set in request)"];
124
- optional .StoreItem.Reviews.StoreReviewSummary summary_unfiltered = 2 [(description) = "Review summary with review bombs included. Only present if there are review bombs."];
125
- }
126
-
127
- message BasicInfo {
128
- message CreatorHomeLink {
129
- optional string name = 1;
130
- optional uint32 creator_clan_account_id = 2 [(description) = "Optioanl field indicating this name is associated this the creator home via the clan account id"];
131
- }
132
-
133
- optional string short_description = 1;
134
- repeated .StoreItem.BasicInfo.CreatorHomeLink publishers = 2;
135
- repeated .StoreItem.BasicInfo.CreatorHomeLink developers = 3;
136
- repeated .StoreItem.BasicInfo.CreatorHomeLink franchises = 4;
137
- optional string capsule_headline = 5 [(description) = "A custom string specified by the partner for display on or around a capsule on the store, e.g. 'Just Updated!'"];
138
- }
139
-
140
- message Tag {
141
- optional uint32 tagid = 1;
142
- optional uint32 weight = 2;
143
- }
144
-
145
- message Assets {
146
- optional string asset_url_format = 1 [(description) = "Format for URLs, should substitute the capsule name for ${FILENAME} in the URL."];
147
- optional string main_capsule = 2;
148
- optional string small_capsule = 3;
149
- optional string header = 4 [(description) = "Equivalent to GetConstantRatioHeaderImage in PHP; apps will always have this, packages and bundles may not."];
150
- optional string package_header = 5 [(description) = "A wider header used on package/bundle pages. Not set for apps."];
151
- optional string page_background = 6;
152
- optional string hero_capsule = 7 [(description) = "374x448"];
153
- optional string hero_capsule_2x = 8 [(description) = "748x896 version of hero capsule."];
154
- optional string library_capsule = 9 [(description) = "300x450 - tall library asset"];
155
- optional string library_capsule_2x = 10 [(description) = "600x900 - tall library asset"];
156
- optional string library_hero = 11 [(description) = "960x310 or 1920x620 - library detail background asset"];
157
- optional string library_hero_2x = 12 [(description) = "1920x620 or 3840x1240 - library detail background asset"];
158
- optional string community_icon = 13 [(description) = "32x32 jpg uploading via steamworks under community assets"];
159
- optional string clan_avatar = 14;
160
- }
161
-
162
- message ReleaseInfo {
163
- optional uint32 steam_release_date = 1 [(description) = "The date this item first released on the Steam store. For Early Access graduates, this is their graduation day."];
164
- optional uint32 original_release_date = 2 [(description) = "Optional; the date this item first released elsewhere, typically back catalog items."];
165
- optional uint32 original_steam_release_date = 3 [(description) = "For Early Access graduates, the date the game first appeared on Steam."];
166
- optional bool is_coming_soon = 4 [(description) = "Is the app coming soon? This flag should be preferred to doing time comparisons against steam_release_date."];
167
- optional bool is_preload = 5 [(description) = "Can the app be preloaded? Only applies to Coming Soon titles."];
168
- optional string custom_release_date_message = 6 [(description) = "Custom release date string. steam_release_date will be unset if this is set."];
169
- optional bool is_abridged_release_date = 7 [(description) = "Release date should be displayed as month-year only. steam_release_date is the last day of the month."];
170
- optional string coming_soon_display = 8 [(description) = "One of 'date_full', 'date_month', 'date_quarter', 'date_year', 'text_comingsoon', 'text_tba'"];
171
- optional bool is_early_access = 10;
172
- optional uint32 mac_release_date = 20;
173
- optional uint32 linux_release_date = 21;
174
- }
175
-
176
- message Platforms {
177
- message VRSupport {
178
- optional bool vrhmd = 1;
179
- optional bool vrhmd_only = 2;
180
- optional bool htc_vive = 40;
181
- optional bool oculus_rift = 41;
182
- optional bool windows_mr = 42;
183
- optional bool valve_index = 43;
184
- }
185
-
186
- optional bool windows = 1;
187
- optional bool mac = 2;
188
- optional bool steamos_linux = 3;
189
- optional .StoreItem.Platforms.VRSupport vr_support = 10;
190
- optional .ESteamDeckCompatibilityCategory steam_deck_compat_category = 11 [default = k_ESteamDeckCompatibilityCategory_Unknown];
191
- }
192
-
193
- message PurchaseOption {
194
- message Discount {
195
- optional int64 discount_amount = 1;
196
- optional string discount_description = 2;
197
- optional uint32 discount_end_date = 3;
198
- }
199
-
200
- optional int32 packageid = 1;
201
- optional int32 bundleid = 2;
202
- optional string purchase_option_name = 3 [(description) = "The name of the package or bundle"];
203
- optional int64 final_price_in_cents = 5 [(description) = "Always set. Includes any applicable non user-specific discounts."];
204
- optional int64 original_price_in_cents = 6 [(description) = "If discounted, this is the price the item would normally cost."];
205
- optional int64 user_final_price_in_cents = 7;
206
- optional string formatted_final_price = 8 [(description) = "Always set. Formatted with currency symbol and decimal, like '$10.00'."];
207
- optional string formatted_original_price = 9;
208
- optional int32 discount_pct = 10 [(description) = "If discounted, calculated from final price and original price."];
209
- optional int32 user_discount_pct = 11;
210
- optional int32 bundle_discount_pct = 12 [(description) = "If this is a bundle, the savings from buying the bundle. If no bundle items are on active discount, this will be the same as discount_pct."];
211
- repeated .StoreItem.PurchaseOption.Discount active_discounts = 20 [(description) = "Discounts included in discounted_price_in_cents."];
212
- repeated .StoreItem.PurchaseOption.Discount user_active_discounts = 21 [(description) = "Additional discounts included in user_discounted_price_in_cents."];
213
- repeated .StoreItem.PurchaseOption.Discount inactive_discounts = 22 [(description) = "Additional user-specific discounts that do not apply to the current user."];
214
- optional bool user_can_purchase = 30;
215
- optional bool user_can_purchase_as_gift = 31;
216
- optional bool is_commercial_license = 40 [(description) = "This is a commercial license"];
217
- optional bool should_suppress_discount_pct = 41 [(description) = "Don't show the discount percentage on a store capsule for this item."];
218
- optional bool hide_discount_pct_for_compliance = 42 [default = false, (description) = "Don't show the discount percent because there was a discount in the last 30 days."];
219
- optional int32 included_game_count = 43 [(description) = "How many games are included in this purchase option."];
220
- optional int64 lowest_recent_price_in_cents = 44 [(description) = "Lowest recent price in cents. If not set, then there is no data so we ignore."];
221
- }
222
-
223
- message Screenshots {
224
- message Screenshot {
225
- optional string filename = 1 [(description) = "Path to file on media CDN. Can access sized version by appending to SHA: '.1920x1080', '.600x338', '.116x65'"];
226
- optional int32 ordinal = 2 [(description) = "Screenshots should be displayed in order of ascending ordinal; they are returned in-order but client may need to merge all_ages and mature_content_screenshots."];
227
- }
228
-
229
- repeated .StoreItem.Screenshots.Screenshot all_ages_screenshots = 2 [(description) = "Screenshots suitable for all ages."];
230
- repeated .StoreItem.Screenshots.Screenshot mature_content_screenshots = 3 [(description) = "Screenshots that may contain mature content; these should only be shown after verifying age (age gate)."];
231
- }
232
-
233
- message Trailers {
234
- message VideoSource {
235
- optional string filename = 1 [(description) = "Substitute into trailer_url_format"];
236
- optional string type = 2 [(description) = "'video/webm' or 'video/mp4'; can just put this directly in to a <source> tag."];
237
- }
238
-
239
- message Trailer {
240
- optional string trailer_name = 1;
241
- optional string trailer_url_format = 2 [(description) = "Format for URLs, should substitute filename for ${FILENAME} in the URL."];
242
- repeated .StoreItem.Trailers.VideoSource trailer_480p = 3;
243
- repeated .StoreItem.Trailers.VideoSource trailer_max = 4;
244
- repeated .StoreItem.Trailers.VideoSource microtrailer = 5;
245
- optional string screenshot_medium = 10 [(description) = "293x165px. Use trailer_url_format."];
246
- optional string screenshot_full = 11 [(description) = "Same size as trailer_max. Use trailer_url_format."];
247
- optional int32 trailer_base_id = 12 [(description) = "Trailer ID. For localized trailers, this will be the original trailer's ID"];
248
- }
249
-
250
- repeated .StoreItem.Trailers.Trailer highlights = 1 [(description) = "Primary trailers for this app"];
251
- repeated .StoreItem.Trailers.Trailer other_trailers = 2 [(description) = "Additional trailers; on the app page, these are shown after screenshots (highlights shown before)"];
252
- }
253
-
254
- message SupportedLanguage {
255
- optional int32 elanguage = 1 [(description) = "ELanguage"];
256
- optional bool supported = 2;
257
- optional bool full_audio = 3;
258
- optional bool subtitles = 4;
259
- }
260
-
261
- message FreeWeekend {
262
- optional uint32 start_time = 1 [(description) = "When the free weekend starts."];
263
- optional uint32 end_time = 2 [(description) = "When the free weekend ends."];
264
- optional string text = 3 [(description) = "Text to show as a description of the free weekend."];
265
- }
266
-
267
- optional .EStoreItemType item_type = 1 [default = k_EStoreItemType_Invalid];
268
- optional uint32 id = 2;
269
- optional uint32 success = 3 [(description) = "EResult of this lookup action"];
270
- optional bool visible = 4;
271
- optional bool unvailable_for_country_restriction = 5 [(description) = "Indicates this app is visible in other regions, but not the requested reagion"];
272
- optional string name = 6;
273
- optional string store_url_path = 7 [(description) = "The URL of this item's store page, to be appended to STORE_BASE_URL."];
274
- optional uint32 appid = 9 [(description) = "If this is an app, or a single-app package, the steamworks appid."];
275
- optional .EStoreAppType type = 10 [default = k_EStoreAppType_Game, (description) = "Type of app (Game, Software, Music). For packages/bundles, this will be the most interesting type (eg Game + Soundtrack bundle will have type Game)"];
276
- repeated .EStoreAppType included_types = 11 [(description) = "For packages/bundles, all types of included items"];
277
- repeated uint32 included_appids = 12 [(description) = "For packages/bundles, all included appids"];
278
- optional bool is_free = 13;
279
- optional bool is_early_access = 14;
280
- optional .StoreItem.RelatedItems related_items = 15;
281
- optional .StoreItem.IncludedItems included_items = 16 [(description) = "Items included in this package/bundle, if included_items datarequest was passed."];
282
- repeated .EContentDescriptorID content_descriptorids = 20;
283
- repeated uint32 tagids = 21;
284
- optional .StoreItem.Categories categories = 22;
285
- optional .StoreItem.Reviews reviews = 23;
286
- optional .StoreItem.BasicInfo basic_info = 24;
287
- repeated .StoreItem.Tag tags = 25;
288
- optional .StoreItem.Assets assets = 30;
289
- optional .StoreItem.ReleaseInfo release = 31;
290
- optional .StoreItem.Platforms platforms = 32;
291
- optional .StoreGameRating game_rating = 33 [(description) = "Local ratings agency information, like ESRB or PEGI"];
292
- optional .StoreItem.PurchaseOption best_purchase_option = 40 [(description) = "The cheapest way for the user to acquire this app or package (may be a bundle)."];
293
- repeated .StoreItem.PurchaseOption purchase_options = 41 [(description) = "Different ways to buy this app or packages (packages can be purchased directly, but may also be included in bundles)."];
294
- repeated .StoreItem.PurchaseOption accessories = 42 [(description) = "Additional packages or bundles associated with an app, but that do not contain the app."];
295
- optional .StoreItem.Screenshots screenshots = 50;
296
- optional .StoreItem.Trailers trailers = 51;
297
- repeated .StoreItem.SupportedLanguage supported_languages = 52;
298
- optional string store_url_path_override = 53 [(description) = "Navigate to this URL (relative to store home) when the store capsule for this item is clicked, instead of the default /app/... URL. Used by advertising apps that point to a sale page."];
299
- optional .StoreItem.FreeWeekend free_weekend = 54 [(description) = "Information about a free weekend offer."];
300
- optional bool unlisted = 55 [(description) = "If true, item is only accessible on store via a direct link"];
301
- optional uint32 game_count = 56 [(description) = "For creators and tags, how many games belong to them"];
302
- optional string internal_name = 57 [(description) = "For hub categories, the internal name (handle) of the category"];
303
- optional string full_description = 58 [(description) = "About this game section on the store page"];
304
- }
305
-
306
- message StoreGameRating {
307
- optional string type = 1 [(description) = "'esrb', 'pegi', ..."];
308
- optional string rating = 2 [(description) = "'t' for teen, 'm' for mature, ..."];
309
- repeated string descriptors = 3 [(description) = "Additional descriptors like 'Intense Violence', 'Strong Language',..."];
310
- optional string interactive_elements = 4 [(description) = "ESRB-specific"];
311
- optional int32 required_age = 10 [(description) = "Age in years. Store pages will prompt with an age gate"];
312
- optional bool use_age_gate = 11;
313
- optional string image_url = 20 [(description) = "An image corresponding to the rating."];
314
- optional string image_target = 21 [(description) = "URL where the image should link for more information."];
315
- }
316
-
317
- message CStoreBrowse_GetItems_Response {
318
- repeated .StoreItem store_items = 1;
319
- }
320
-
321
- message CStoreBrowse_GetStoreCategories_Request {
322
- optional string language = 1;
323
- optional int32 elanguage = 2 [default = -1, (description) = "ELanguage"];
324
- }
325
-
326
- message CStoreBrowse_GetStoreCategories_Response {
327
- message Category {
328
- optional uint32 categoryid = 1;
329
- optional .EStoreCategoryType type = 2 [default = k_EStoreCategoryType_Category];
330
- optional string internal_name = 3;
331
- optional string display_name = 4;
332
- optional string image_url = 5 [(description) = "Append to STORE_CDN_URL"];
333
- optional bool show_in_search = 6 [(description) = "Indicates this category can link to search results showing all items in category."];
334
- }
335
-
336
- repeated .CStoreBrowse_GetStoreCategories_Response.Category categories = 1;
337
- }
338
-
339
- message CStoreBrowse_GetDLCForApps_Request {
340
- optional .StoreBrowseContext context = 1;
341
- optional .CStorePageFilter store_page_filter = 2;
342
- repeated .StoreItemID appids = 3 [(description) = "Apps for which we want DLC information."];
343
- optional uint64 steamid = 4 [(description) = "If specified, we want DLC information for all apps owned by this user."];
344
- }
345
-
346
- message CStoreBrowse_GetDLCForApps_Response {
347
- message DLCData {
348
- optional uint32 appid = 1;
349
- optional uint32 parentappid = 2;
350
- optional uint32 release_date = 3;
351
- optional bool coming_soon = 4;
352
- optional int64 price = 5;
353
- optional uint32 discount = 6;
354
- optional bool free = 7;
355
- }
356
-
357
- message PlaytimeForApp {
358
- optional uint32 appid = 1;
359
- optional uint32 playtime = 2 [(description) = "Total time played over all time."];
360
- optional uint32 last_played = 3 [(description) = "Time last played on any platform."];
361
- }
362
-
363
- repeated .CStoreBrowse_GetDLCForApps_Response.DLCData dlc_data = 1;
364
- repeated .CStoreBrowse_GetDLCForApps_Response.PlaytimeForApp playtime = 2;
365
- }
366
-
367
- message CStoreBrowse_GetDLCForAppsSolr_Request {
368
- optional .StoreBrowseContext context = 1;
369
- repeated uint32 appids = 2;
370
- optional string flavor = 3;
371
- optional uint32 count = 4;
372
- optional .CStorePageFilter store_page_filter = 5;
373
- }
374
-
375
- message CStoreBrowse_GetDLCForAppsSolr_Response {
376
- message DLCList {
377
- optional uint32 parent_appid = 1;
378
- repeated uint32 dlc_appids = 2;
379
- }
380
-
381
- repeated .CStoreBrowse_GetDLCForAppsSolr_Response.DLCList dlc_lists = 1;
382
- }
383
-
384
- service StoreBrowse {
385
- option (service_description) = "APIs for accessing store item data";
386
-
387
- rpc GetItems (.CStoreBrowse_GetItems_Request) returns (.CStoreBrowse_GetItems_Response) {
388
- option (method_description) = "Get information about items on the store";
389
- }
390
-
391
- rpc GetStoreCategories (.CStoreBrowse_GetStoreCategories_Request) returns (.CStoreBrowse_GetStoreCategories_Response) {
392
- option (method_description) = "Get category definitions for store. This is a public-facing API (as compared to StoreCatalog.GetCategories, which is intended for PHP)";
393
- }
394
-
395
- rpc GetDLCForApps (.CStoreBrowse_GetDLCForApps_Request) returns (.CStoreBrowse_GetDLCForApps_Response) {
396
- option (method_description) = "Returns all DLC appids for games owned by the user.";
397
- }
398
-
399
- rpc GetDLCForAppsSolr (.CStoreBrowse_GetDLCForAppsSolr_Request) returns (.CStoreBrowse_GetDLCForAppsSolr_Response) {
400
- option (method_description) = "Returns all DLC appids for the specified games.";
401
- }
402
- }
1
+ import "steammessages_base.proto";
2
+ import "steammessages_unified_base.steamclient.proto";
3
+ import "enums_productinfo.proto";
4
+ import "enums.proto";
5
+ import "contenthubs.proto";
6
+
7
+ option cc_generic_services = true;
8
+
9
+ enum EStoreItemType {
10
+ k_EStoreItemType_Invalid = -1;
11
+ k_EStoreItemType_App = 0;
12
+ k_EStoreItemType_Package = 1;
13
+ k_EStoreItemType_Bundle = 2;
14
+ k_EStoreItemType_Mtx = 3;
15
+ k_EStoreItemType_Tag = 4;
16
+ k_EStoreItemType_Creator = 5;
17
+ k_EStoreItemType_HubCategory = 6;
18
+ }
19
+
20
+ enum EStoreAppType {
21
+ k_EStoreAppType_Game = 0;
22
+ k_EStoreAppType_Demo = 1;
23
+ k_EStoreAppType_Mod = 2;
24
+ k_EStoreAppType_Movie = 3;
25
+ k_EStoreAppType_DLC = 4;
26
+ k_EStoreAppType_Guide = 5;
27
+ k_EStoreAppType_Software = 6;
28
+ k_EStoreAppType_Video = 7;
29
+ k_EStoreAppType_Series = 8;
30
+ k_EStoreAppType_Episode = 9;
31
+ k_EStoreAppType_Hardware = 10;
32
+ k_EStoreAppType_Music = 11;
33
+ k_EStoreAppType_Beta = 12;
34
+ k_EStoreAppType_Tool = 13;
35
+ k_EStoreAppType_Advertising = 14;
36
+ }
37
+
38
+ enum EUserReviewScore {
39
+ k_EUserReviewScore_None = 0;
40
+ k_EUserReviewScore_OverwhelminglyNegative = 1;
41
+ k_EUserReviewScore_VeryNegative = 2;
42
+ k_EUserReviewScore_Negative = 3;
43
+ k_EUserReviewScore_MostlyNegative = 4;
44
+ k_EUserReviewScore_Mixed = 5;
45
+ k_EUserReviewScore_MostlyPositive = 6;
46
+ k_EUserReviewScore_Positive = 7;
47
+ k_EUserReviewScore_VeryPositive = 8;
48
+ k_EUserReviewScore_OverwhelminglyPositive = 9;
49
+ }
50
+
51
+ enum EStoreCategoryType {
52
+ k_EStoreCategoryType_Category = 0;
53
+ k_EStoreCategoryType_SupportedPlayers = 1;
54
+ k_EStoreCategoryType_Feature = 2;
55
+ k_EStoreCategoryType_ControllerSupport = 3;
56
+ k_EStoreCategoryType_CloudGaming = 4;
57
+ k_EStoreCategoryType_MAX = 5;
58
+ }
59
+
60
+ message StoreItemID {
61
+ optional uint32 appid = 1;
62
+ optional uint32 packageid = 2;
63
+ optional uint32 bundleid = 3;
64
+ optional uint32 tagid = 4;
65
+ optional uint32 creatorid = 5;
66
+ optional uint32 hubcategoryid = 6;
67
+ }
68
+
69
+ message StoreBrowseContext {
70
+ optional string language = 1;
71
+ optional int32 elanguage = 2 [(description) = "ELanguage"];
72
+ optional string country_code = 3 [(description) = "2-character country code; required"];
73
+ optional int32 steam_realm = 4 [(description) = "ESteamRealm"];
74
+ }
75
+
76
+ message StoreBrowseItemDataRequest {
77
+ optional bool include_assets = 1;
78
+ optional bool include_release = 2;
79
+ optional bool include_platforms = 3;
80
+ optional bool include_all_purchase_options = 4;
81
+ optional bool include_screenshots = 5;
82
+ optional bool include_trailers = 6;
83
+ optional bool include_ratings = 7;
84
+ optional int32 include_tag_count = 8 [(description) = "Count of tags to return, as tagids. Maximum 20."];
85
+ optional bool include_reviews = 9;
86
+ optional bool include_basic_info = 10 [(description) = "Include short description, publisher, developers"];
87
+ optional bool include_supported_languages = 11 [(description) = "includes the games support for languages: supported, full_audio, subtitles"];
88
+ optional bool include_full_description = 12;
89
+ optional bool include_included_items = 13 [(description) = "For packages and bundles, return the apps and packages included as well. Pass included_item_data_request for more details on the included items."];
90
+ optional .StoreBrowseItemDataRequest included_item_data_request = 14 [(description) = "The data to return for included items."];
91
+ }
92
+
93
+ message CStoreBrowse_GetItems_Request {
94
+ repeated .StoreItemID ids = 1;
95
+ optional .StoreBrowseContext context = 2;
96
+ optional .StoreBrowseItemDataRequest data_request = 3;
97
+ }
98
+
99
+ message StoreItem {
100
+ message RelatedItems {
101
+ optional uint32 parent_appid = 1 [(description) = "For DLC, Demos, etc, this is the main app."];
102
+ }
103
+
104
+ message IncludedItems {
105
+ repeated .StoreItem included_apps = 1 [(description) = "All apps included, if this is a package or bundle"];
106
+ repeated .StoreItem included_packages = 2 [(description) = "All packages included, if this is a bundle"];
107
+ }
108
+
109
+ message Categories {
110
+ repeated uint32 supported_player_categoryids = 2 [(description) = "Categories like Single Player, Multiplayer, MMO"];
111
+ repeated uint32 feature_categoryids = 3 [(description) = "Categories indicating supported features like Steam Cloud, VAC, Achievements, etc"];
112
+ repeated uint32 controller_categoryids = 4 [(description) = "Categories indicating controller support and full controller support."];
113
+ }
114
+
115
+ message Reviews {
116
+ message StoreReviewSummary {
117
+ optional uint32 review_count = 1;
118
+ optional int32 percent_positive = 2 [(description) = "0-100"];
119
+ optional .EUserReviewScore review_score = 3 [default = k_EUserReviewScore_None];
120
+ optional string review_score_label = 4 [(description) = "A string like 'Mixed', 'Negative', 'Overwhelmingly Positive'"];
121
+ }
122
+
123
+ optional .StoreItem.Reviews.StoreReviewSummary summary_filtered = 1 [(description) = "Review summary with review bombs removed (if any). Always present (if include_reviews set in request)"];
124
+ optional .StoreItem.Reviews.StoreReviewSummary summary_unfiltered = 2 [(description) = "Review summary with review bombs included. Only present if there are review bombs."];
125
+ }
126
+
127
+ message BasicInfo {
128
+ message CreatorHomeLink {
129
+ optional string name = 1;
130
+ optional uint32 creator_clan_account_id = 2 [(description) = "Optioanl field indicating this name is associated this the creator home via the clan account id"];
131
+ }
132
+
133
+ optional string short_description = 1;
134
+ repeated .StoreItem.BasicInfo.CreatorHomeLink publishers = 2;
135
+ repeated .StoreItem.BasicInfo.CreatorHomeLink developers = 3;
136
+ repeated .StoreItem.BasicInfo.CreatorHomeLink franchises = 4;
137
+ optional string capsule_headline = 5 [(description) = "A custom string specified by the partner for display on or around a capsule on the store, e.g. 'Just Updated!'"];
138
+ }
139
+
140
+ message Tag {
141
+ optional uint32 tagid = 1;
142
+ optional uint32 weight = 2;
143
+ }
144
+
145
+ message Assets {
146
+ optional string asset_url_format = 1 [(description) = "Format for URLs, should substitute the capsule name for ${FILENAME} in the URL."];
147
+ optional string main_capsule = 2;
148
+ optional string small_capsule = 3;
149
+ optional string header = 4 [(description) = "Equivalent to GetConstantRatioHeaderImage in PHP; apps will always have this, packages and bundles may not."];
150
+ optional string package_header = 5 [(description) = "A wider header used on package/bundle pages. Not set for apps."];
151
+ optional string page_background = 6;
152
+ optional string hero_capsule = 7 [(description) = "374x448"];
153
+ optional string hero_capsule_2x = 8 [(description) = "748x896 version of hero capsule."];
154
+ optional string library_capsule = 9 [(description) = "300x450 - tall library asset"];
155
+ optional string library_capsule_2x = 10 [(description) = "600x900 - tall library asset"];
156
+ optional string library_hero = 11 [(description) = "960x310 or 1920x620 - library detail background asset"];
157
+ optional string library_hero_2x = 12 [(description) = "1920x620 or 3840x1240 - library detail background asset"];
158
+ optional string community_icon = 13 [(description) = "32x32 jpg uploading via steamworks under community assets"];
159
+ optional string clan_avatar = 14;
160
+ }
161
+
162
+ message ReleaseInfo {
163
+ optional uint32 steam_release_date = 1 [(description) = "The date this item first released on the Steam store. For Early Access graduates, this is their graduation day."];
164
+ optional uint32 original_release_date = 2 [(description) = "Optional; the date this item first released elsewhere, typically back catalog items."];
165
+ optional uint32 original_steam_release_date = 3 [(description) = "For Early Access graduates, the date the game first appeared on Steam."];
166
+ optional bool is_coming_soon = 4 [(description) = "Is the app coming soon? This flag should be preferred to doing time comparisons against steam_release_date."];
167
+ optional bool is_preload = 5 [(description) = "Can the app be preloaded? Only applies to Coming Soon titles."];
168
+ optional string custom_release_date_message = 6 [(description) = "Custom release date string. steam_release_date will be unset if this is set."];
169
+ optional bool is_abridged_release_date = 7 [(description) = "Release date should be displayed as month-year only. steam_release_date is the last day of the month."];
170
+ optional string coming_soon_display = 8 [(description) = "One of 'date_full', 'date_month', 'date_quarter', 'date_year', 'text_comingsoon', 'text_tba'"];
171
+ optional bool is_early_access = 10;
172
+ optional uint32 mac_release_date = 20;
173
+ optional uint32 linux_release_date = 21;
174
+ }
175
+
176
+ message Platforms {
177
+ message VRSupport {
178
+ optional bool vrhmd = 1;
179
+ optional bool vrhmd_only = 2;
180
+ optional bool htc_vive = 40;
181
+ optional bool oculus_rift = 41;
182
+ optional bool windows_mr = 42;
183
+ optional bool valve_index = 43;
184
+ }
185
+
186
+ optional bool windows = 1;
187
+ optional bool mac = 2;
188
+ optional bool steamos_linux = 3;
189
+ optional .StoreItem.Platforms.VRSupport vr_support = 10;
190
+ optional .ESteamDeckCompatibilityCategory steam_deck_compat_category = 11 [default = k_ESteamDeckCompatibilityCategory_Unknown];
191
+ }
192
+
193
+ message PurchaseOption {
194
+ message Discount {
195
+ optional int64 discount_amount = 1;
196
+ optional string discount_description = 2;
197
+ optional uint32 discount_end_date = 3;
198
+ }
199
+
200
+ optional int32 packageid = 1;
201
+ optional int32 bundleid = 2;
202
+ optional string purchase_option_name = 3 [(description) = "The name of the package or bundle"];
203
+ optional int64 final_price_in_cents = 5 [(description) = "Always set. Includes any applicable non user-specific discounts."];
204
+ optional int64 original_price_in_cents = 6 [(description) = "If discounted, this is the price the item would normally cost."];
205
+ optional int64 user_final_price_in_cents = 7;
206
+ optional string formatted_final_price = 8 [(description) = "Always set. Formatted with currency symbol and decimal, like '$10.00'."];
207
+ optional string formatted_original_price = 9;
208
+ optional int32 discount_pct = 10 [(description) = "If discounted, calculated from final price and original price."];
209
+ optional int32 user_discount_pct = 11;
210
+ optional int32 bundle_discount_pct = 12 [(description) = "If this is a bundle, the savings from buying the bundle. If no bundle items are on active discount, this will be the same as discount_pct."];
211
+ repeated .StoreItem.PurchaseOption.Discount active_discounts = 20 [(description) = "Discounts included in discounted_price_in_cents."];
212
+ repeated .StoreItem.PurchaseOption.Discount user_active_discounts = 21 [(description) = "Additional discounts included in user_discounted_price_in_cents."];
213
+ repeated .StoreItem.PurchaseOption.Discount inactive_discounts = 22 [(description) = "Additional user-specific discounts that do not apply to the current user."];
214
+ optional bool user_can_purchase = 30;
215
+ optional bool user_can_purchase_as_gift = 31;
216
+ optional bool is_commercial_license = 40 [(description) = "This is a commercial license"];
217
+ optional bool should_suppress_discount_pct = 41 [(description) = "Don't show the discount percentage on a store capsule for this item."];
218
+ optional bool hide_discount_pct_for_compliance = 42 [default = false, (description) = "Don't show the discount percent because there was a discount in the last 30 days."];
219
+ optional int32 included_game_count = 43 [(description) = "How many games are included in this purchase option."];
220
+ optional int64 lowest_recent_price_in_cents = 44 [(description) = "Lowest recent price in cents. If not set, then there is no data so we ignore."];
221
+ }
222
+
223
+ message Screenshots {
224
+ message Screenshot {
225
+ optional string filename = 1 [(description) = "Path to file on media CDN. Can access sized version by appending to SHA: '.1920x1080', '.600x338', '.116x65'"];
226
+ optional int32 ordinal = 2 [(description) = "Screenshots should be displayed in order of ascending ordinal; they are returned in-order but client may need to merge all_ages and mature_content_screenshots."];
227
+ }
228
+
229
+ repeated .StoreItem.Screenshots.Screenshot all_ages_screenshots = 2 [(description) = "Screenshots suitable for all ages."];
230
+ repeated .StoreItem.Screenshots.Screenshot mature_content_screenshots = 3 [(description) = "Screenshots that may contain mature content; these should only be shown after verifying age (age gate)."];
231
+ }
232
+
233
+ message Trailers {
234
+ message VideoSource {
235
+ optional string filename = 1 [(description) = "Substitute into trailer_url_format"];
236
+ optional string type = 2 [(description) = "'video/webm' or 'video/mp4'; can just put this directly in to a <source> tag."];
237
+ }
238
+
239
+ message Trailer {
240
+ optional string trailer_name = 1;
241
+ optional string trailer_url_format = 2 [(description) = "Format for URLs, should substitute filename for ${FILENAME} in the URL."];
242
+ repeated .StoreItem.Trailers.VideoSource trailer_480p = 3;
243
+ repeated .StoreItem.Trailers.VideoSource trailer_max = 4;
244
+ repeated .StoreItem.Trailers.VideoSource microtrailer = 5;
245
+ optional string screenshot_medium = 10 [(description) = "293x165px. Use trailer_url_format."];
246
+ optional string screenshot_full = 11 [(description) = "Same size as trailer_max. Use trailer_url_format."];
247
+ optional int32 trailer_base_id = 12 [(description) = "Trailer ID. For localized trailers, this will be the original trailer's ID"];
248
+ }
249
+
250
+ repeated .StoreItem.Trailers.Trailer highlights = 1 [(description) = "Primary trailers for this app"];
251
+ repeated .StoreItem.Trailers.Trailer other_trailers = 2 [(description) = "Additional trailers; on the app page, these are shown after screenshots (highlights shown before)"];
252
+ }
253
+
254
+ message SupportedLanguage {
255
+ optional int32 elanguage = 1 [(description) = "ELanguage"];
256
+ optional bool supported = 2;
257
+ optional bool full_audio = 3;
258
+ optional bool subtitles = 4;
259
+ }
260
+
261
+ message FreeWeekend {
262
+ optional uint32 start_time = 1 [(description) = "When the free weekend starts."];
263
+ optional uint32 end_time = 2 [(description) = "When the free weekend ends."];
264
+ optional string text = 3 [(description) = "Text to show as a description of the free weekend."];
265
+ }
266
+
267
+ optional .EStoreItemType item_type = 1 [default = k_EStoreItemType_Invalid];
268
+ optional uint32 id = 2;
269
+ optional uint32 success = 3 [(description) = "EResult of this lookup action"];
270
+ optional bool visible = 4;
271
+ optional bool unvailable_for_country_restriction = 5 [(description) = "Indicates this app is visible in other regions, but not the requested reagion"];
272
+ optional string name = 6;
273
+ optional string store_url_path = 7 [(description) = "The URL of this item's store page, to be appended to STORE_BASE_URL."];
274
+ optional uint32 appid = 9 [(description) = "If this is an app, or a single-app package, the steamworks appid."];
275
+ optional .EStoreAppType type = 10 [default = k_EStoreAppType_Game, (description) = "Type of app (Game, Software, Music). For packages/bundles, this will be the most interesting type (eg Game + Soundtrack bundle will have type Game)"];
276
+ repeated .EStoreAppType included_types = 11 [(description) = "For packages/bundles, all types of included items"];
277
+ repeated uint32 included_appids = 12 [(description) = "For packages/bundles, all included appids"];
278
+ optional bool is_free = 13;
279
+ optional bool is_early_access = 14;
280
+ optional .StoreItem.RelatedItems related_items = 15;
281
+ optional .StoreItem.IncludedItems included_items = 16 [(description) = "Items included in this package/bundle, if included_items datarequest was passed."];
282
+ repeated .EContentDescriptorID content_descriptorids = 20;
283
+ repeated uint32 tagids = 21;
284
+ optional .StoreItem.Categories categories = 22;
285
+ optional .StoreItem.Reviews reviews = 23;
286
+ optional .StoreItem.BasicInfo basic_info = 24;
287
+ repeated .StoreItem.Tag tags = 25;
288
+ optional .StoreItem.Assets assets = 30;
289
+ optional .StoreItem.ReleaseInfo release = 31;
290
+ optional .StoreItem.Platforms platforms = 32;
291
+ optional .StoreGameRating game_rating = 33 [(description) = "Local ratings agency information, like ESRB or PEGI"];
292
+ optional .StoreItem.PurchaseOption best_purchase_option = 40 [(description) = "The cheapest way for the user to acquire this app or package (may be a bundle)."];
293
+ repeated .StoreItem.PurchaseOption purchase_options = 41 [(description) = "Different ways to buy this app or packages (packages can be purchased directly, but may also be included in bundles)."];
294
+ repeated .StoreItem.PurchaseOption accessories = 42 [(description) = "Additional packages or bundles associated with an app, but that do not contain the app."];
295
+ optional .StoreItem.Screenshots screenshots = 50;
296
+ optional .StoreItem.Trailers trailers = 51;
297
+ repeated .StoreItem.SupportedLanguage supported_languages = 52;
298
+ optional string store_url_path_override = 53 [(description) = "Navigate to this URL (relative to store home) when the store capsule for this item is clicked, instead of the default /app/... URL. Used by advertising apps that point to a sale page."];
299
+ optional .StoreItem.FreeWeekend free_weekend = 54 [(description) = "Information about a free weekend offer."];
300
+ optional bool unlisted = 55 [(description) = "If true, item is only accessible on store via a direct link"];
301
+ optional uint32 game_count = 56 [(description) = "For creators and tags, how many games belong to them"];
302
+ optional string internal_name = 57 [(description) = "For hub categories, the internal name (handle) of the category"];
303
+ optional string full_description = 58 [(description) = "About this game section on the store page"];
304
+ }
305
+
306
+ message StoreGameRating {
307
+ optional string type = 1 [(description) = "'esrb', 'pegi', ..."];
308
+ optional string rating = 2 [(description) = "'t' for teen, 'm' for mature, ..."];
309
+ repeated string descriptors = 3 [(description) = "Additional descriptors like 'Intense Violence', 'Strong Language',..."];
310
+ optional string interactive_elements = 4 [(description) = "ESRB-specific"];
311
+ optional int32 required_age = 10 [(description) = "Age in years. Store pages will prompt with an age gate"];
312
+ optional bool use_age_gate = 11;
313
+ optional string image_url = 20 [(description) = "An image corresponding to the rating."];
314
+ optional string image_target = 21 [(description) = "URL where the image should link for more information."];
315
+ }
316
+
317
+ message CStoreBrowse_GetItems_Response {
318
+ repeated .StoreItem store_items = 1;
319
+ }
320
+
321
+ message CStoreBrowse_GetStoreCategories_Request {
322
+ optional string language = 1;
323
+ optional int32 elanguage = 2 [default = -1, (description) = "ELanguage"];
324
+ }
325
+
326
+ message CStoreBrowse_GetStoreCategories_Response {
327
+ message Category {
328
+ optional uint32 categoryid = 1;
329
+ optional .EStoreCategoryType type = 2 [default = k_EStoreCategoryType_Category];
330
+ optional string internal_name = 3;
331
+ optional string display_name = 4;
332
+ optional string image_url = 5 [(description) = "Append to STORE_CDN_URL"];
333
+ optional bool show_in_search = 6 [(description) = "Indicates this category can link to search results showing all items in category."];
334
+ }
335
+
336
+ repeated .CStoreBrowse_GetStoreCategories_Response.Category categories = 1;
337
+ }
338
+
339
+ message CStoreBrowse_GetDLCForApps_Request {
340
+ optional .StoreBrowseContext context = 1;
341
+ optional .CStorePageFilter store_page_filter = 2;
342
+ repeated .StoreItemID appids = 3 [(description) = "Apps for which we want DLC information."];
343
+ optional uint64 steamid = 4 [(description) = "If specified, we want DLC information for all apps owned by this user."];
344
+ }
345
+
346
+ message CStoreBrowse_GetDLCForApps_Response {
347
+ message DLCData {
348
+ optional uint32 appid = 1;
349
+ optional uint32 parentappid = 2;
350
+ optional uint32 release_date = 3;
351
+ optional bool coming_soon = 4;
352
+ optional int64 price = 5;
353
+ optional uint32 discount = 6;
354
+ optional bool free = 7;
355
+ }
356
+
357
+ message PlaytimeForApp {
358
+ optional uint32 appid = 1;
359
+ optional uint32 playtime = 2 [(description) = "Total time played over all time."];
360
+ optional uint32 last_played = 3 [(description) = "Time last played on any platform."];
361
+ }
362
+
363
+ repeated .CStoreBrowse_GetDLCForApps_Response.DLCData dlc_data = 1;
364
+ repeated .CStoreBrowse_GetDLCForApps_Response.PlaytimeForApp playtime = 2;
365
+ }
366
+
367
+ message CStoreBrowse_GetDLCForAppsSolr_Request {
368
+ optional .StoreBrowseContext context = 1;
369
+ repeated uint32 appids = 2;
370
+ optional string flavor = 3;
371
+ optional uint32 count = 4;
372
+ optional .CStorePageFilter store_page_filter = 5;
373
+ }
374
+
375
+ message CStoreBrowse_GetDLCForAppsSolr_Response {
376
+ message DLCList {
377
+ optional uint32 parent_appid = 1;
378
+ repeated uint32 dlc_appids = 2;
379
+ }
380
+
381
+ repeated .CStoreBrowse_GetDLCForAppsSolr_Response.DLCList dlc_lists = 1;
382
+ }
383
+
384
+ service StoreBrowse {
385
+ option (service_description) = "APIs for accessing store item data";
386
+
387
+ rpc GetItems (.CStoreBrowse_GetItems_Request) returns (.CStoreBrowse_GetItems_Response) {
388
+ option (method_description) = "Get information about items on the store";
389
+ }
390
+
391
+ rpc GetStoreCategories (.CStoreBrowse_GetStoreCategories_Request) returns (.CStoreBrowse_GetStoreCategories_Response) {
392
+ option (method_description) = "Get category definitions for store. This is a public-facing API (as compared to StoreCatalog.GetCategories, which is intended for PHP)";
393
+ }
394
+
395
+ rpc GetDLCForApps (.CStoreBrowse_GetDLCForApps_Request) returns (.CStoreBrowse_GetDLCForApps_Response) {
396
+ option (method_description) = "Returns all DLC appids for games owned by the user.";
397
+ }
398
+
399
+ rpc GetDLCForAppsSolr (.CStoreBrowse_GetDLCForAppsSolr_Request) returns (.CStoreBrowse_GetDLCForAppsSolr_Response) {
400
+ option (method_description) = "Returns all DLC appids for the specified games.";
401
+ }
402
+ }