1 import "google/protobuf/descriptor.proto";
3 option optimize_for = SPEED;
4 option cc_generic_services = false;
6 extend .google.protobuf.FieldOptions {
7 optional bool key_field = 60000 [default = false];
10 extend .google.protobuf.MessageOptions {
11 optional int32 msgpool_soft_limit = 60000 [default = 32];
12 optional int32 msgpool_hard_limit = 60001 [default = 384];
15 enum GCProtoBufMsgSrc {
16 GCProtoBufMsgSrc_Unspecified = 0;
17 GCProtoBufMsgSrc_FromSystem = 1;
18 GCProtoBufMsgSrc_FromSteamID = 2;
19 GCProtoBufMsgSrc_FromGC = 3;
20 GCProtoBufMsgSrc_ReplySystem = 4;
23 message CMsgProtoBufHeader {
24 option (msgpool_soft_limit) = 256;
25 option (msgpool_hard_limit) = 1024;
26 optional fixed64 client_steam_id = 1;
27 optional int32 client_session_id = 2;
28 optional uint32 source_app_id = 3;
29 optional fixed64 job_id_source = 10 [default = 18446744073709551615];
30 optional fixed64 job_id_target = 11 [default = 18446744073709551615];
31 optional string target_job_name = 12;
32 optional int32 eresult = 13 [default = 2];
33 optional string error_message = 14;
34 optional .GCProtoBufMsgSrc gc_msg_src = 200 [default = GCProtoBufMsgSrc_Unspecified];
35 optional uint32 gc_dir_index_source = 201;
38 message CMsgWebAPIKey {
39 optional uint32 status = 1 [default = 255];
40 optional uint32 account_id = 2 [default = 0];
41 optional uint32 publisher_group_id = 3 [default = 0];
42 optional uint32 key_id = 4;
43 optional string domain = 5;
46 message CMsgHttpRequest {
47 message RequestHeader {
48 optional string name = 1;
49 optional string value = 2;
53 optional string name = 1;
54 optional bytes value = 2;
57 optional uint32 request_method = 1;
58 optional string hostname = 2;
59 optional string url = 3;
60 repeated .CMsgHttpRequest.RequestHeader headers = 4;
61 repeated .CMsgHttpRequest.QueryParam get_params = 5;
62 repeated .CMsgHttpRequest.QueryParam post_params = 6;
63 optional bytes body = 7;
64 optional uint32 absolute_timeout = 8;
67 message CMsgWebAPIRequest {
68 optional string UNUSED_job_name = 1;
69 optional string interface_name = 2;
70 optional string method_name = 3;
71 optional uint32 version = 4;
72 optional .CMsgWebAPIKey api_key = 5;
73 optional .CMsgHttpRequest request = 6;
74 optional uint32 routing_app_id = 7;
77 message CMsgHttpResponse {
78 message ResponseHeader {
79 optional string name = 1;
80 optional string value = 2;
83 optional uint32 status_code = 1;
84 repeated .CMsgHttpResponse.ResponseHeader headers = 2;
85 optional bytes body = 3;
88 message CMsgAMFindAccounts {
89 optional uint32 search_type = 1;
90 optional string search_string = 2;
93 message CMsgAMFindAccountsResponse {
94 repeated fixed64 steam_id = 1;
97 message CMsgNotifyWatchdog {
98 optional uint32 source = 1;
99 optional uint32 alert_type = 2;
100 optional uint32 alert_destination = 3;
101 optional bool critical = 4;
102 optional uint32 time = 5;
103 optional uint32 appid = 6;
104 optional string text = 7;
107 message CMsgAMGetLicenses {
108 optional fixed64 steamid = 1;
111 message CMsgPackageLicense {
112 optional uint32 package_id = 1;
113 optional uint32 time_created = 2;
114 optional uint32 owner_id = 3;
117 message CMsgAMGetLicensesResponse {
118 repeated .CMsgPackageLicense license = 1;
119 optional uint32 result = 2;
122 message CMsgAMGetUserGameStats {
123 optional fixed64 steam_id = 1;
124 optional fixed64 game_id = 2;
125 repeated uint32 stats = 3;
128 message CMsgAMGetUserGameStatsResponse {
130 optional uint32 stat_id = 1;
131 optional uint32 stat_value = 2;
134 message Achievement_Blocks {
135 optional uint32 achievement_id = 1;
136 optional uint32 achievement_bit_id = 2;
137 optional fixed32 unlock_time = 3;
140 optional fixed64 steam_id = 1;
141 optional fixed64 game_id = 2;
142 optional int32 eresult = 3 [default = 2];
143 repeated .CMsgAMGetUserGameStatsResponse.Stats stats = 4;
144 repeated .CMsgAMGetUserGameStatsResponse.Achievement_Blocks achievement_blocks = 5;
147 message CMsgGCGetCommandList {
148 optional uint32 app_id = 1;
149 optional string command_prefix = 2;
152 message CMsgGCGetCommandListResponse {
153 repeated string command_name = 1;
156 message CGCMsgMemCachedGet {
157 repeated string keys = 1;
160 message CGCMsgMemCachedGetResponse {
162 optional bool found = 1;
163 optional bytes value = 2;
166 repeated .CGCMsgMemCachedGetResponse.ValueTag values = 1;
169 message CGCMsgMemCachedSet {
171 optional string name = 1;
172 optional bytes value = 2;
175 repeated .CGCMsgMemCachedSet.KeyPair keys = 1;
178 message CGCMsgMemCachedDelete {
179 repeated string keys = 1;
182 message CGCMsgMemCachedStats {
185 message CGCMsgMemCachedStatsResponse {
186 optional uint64 curr_connections = 1;
187 optional uint64 cmd_get = 2;
188 optional uint64 cmd_set = 3;
189 optional uint64 cmd_flush = 4;
190 optional uint64 get_hits = 5;
191 optional uint64 get_misses = 6;
192 optional uint64 delete_hits = 7;
193 optional uint64 delete_misses = 8;
194 optional uint64 bytes_read = 9;
195 optional uint64 bytes_written = 10;
196 optional uint64 limit_maxbytes = 11;
197 optional uint64 curr_items = 12;
198 optional uint64 evictions = 13;
199 optional uint64 bytes = 14;
202 message CGCMsgSQLStats {
203 optional uint32 schema_catalog = 1;
206 message CGCMsgSQLStatsResponse {
207 optional uint32 threads = 1;
208 optional uint32 threads_connected = 2;
209 optional uint32 threads_active = 3;
210 optional uint32 operations_submitted = 4;
211 optional uint32 prepared_statements_executed = 5;
212 optional uint32 non_prepared_statements_executed = 6;
213 optional uint32 deadlock_retries = 7;
214 optional uint32 operations_timed_out_in_queue = 8;
215 optional uint32 errors = 9;
218 message CMsgAMAddFreeLicense {
219 optional fixed64 steamid = 1;
220 optional uint32 ip_public = 2;
221 optional uint32 packageid = 3;
222 optional string store_country_code = 4;
225 message CMsgAMAddFreeLicenseResponse {
226 optional int32 eresult = 1 [default = 2];
227 optional int32 purchase_result_detail = 2;
228 optional fixed64 transid = 3;
231 message CGCMsgGetIPLocation {
232 repeated fixed32 ips = 1;
235 message CIPLocationInfo {
236 optional uint32 ip = 1;
237 optional float latitude = 2;
238 optional float longitude = 3;
239 optional string country = 4;
240 optional string state = 5;
241 optional string city = 6;
244 message CGCMsgGetIPLocationResponse {
245 repeated .CIPLocationInfo infos = 1;
248 message CGCMsgSystemStatsSchema {
249 optional uint32 gc_app_id = 1;
250 optional bytes schema_kv = 2;
253 message CGCMsgGetSystemStats {
256 message CGCMsgGetSystemStatsResponse {
257 optional uint32 gc_app_id = 1;
258 optional bytes stats_kv = 2;
259 optional uint32 active_jobs = 3;
260 optional uint32 yielding_jobs = 4;
261 optional uint32 user_sessions = 5;
262 optional uint32 game_server_sessions = 6;
263 optional uint32 socaches = 7;
264 optional uint32 socaches_to_unload = 8;
265 optional uint32 socaches_loading = 9;
266 optional uint32 writeback_queue = 10;
267 optional uint32 steamid_locks = 11;
268 optional uint32 logon_queue = 12;
269 optional uint32 logon_jobs = 13;
272 message CMsgAMSendEmail {
273 message ReplacementToken {
274 optional string token_name = 1;
275 optional string token_value = 2;
278 message PersonaNameReplacementToken {
279 optional fixed64 steamid = 1;
280 optional string token_name = 2;
283 optional fixed64 steamid = 1;
284 optional uint32 email_msg_type = 2;
285 optional uint32 email_format = 3;
286 repeated .CMsgAMSendEmail.PersonaNameReplacementToken persona_name_tokens = 5;
287 optional uint32 source_gc = 6;
288 repeated .CMsgAMSendEmail.ReplacementToken tokens = 7;
291 message CMsgAMSendEmailResponse {
292 optional uint32 eresult = 1 [default = 2];
295 message CMsgGCGetEmailTemplate {
296 optional uint32 app_id = 1;
297 optional uint32 email_msg_type = 2;
298 optional int32 email_lang = 3;
299 optional int32 email_format = 4;
302 message CMsgGCGetEmailTemplateResponse {
303 optional uint32 eresult = 1 [default = 2];
304 optional bool template_exists = 2;
305 optional string template = 3;
308 message CMsgAMGrantGuestPasses2 {
309 optional fixed64 steam_id = 1;
310 optional uint32 package_id = 2;
311 optional int32 passes_to_grant = 3;
312 optional int32 days_to_expiration = 4;
313 optional int32 action = 5;
316 message CMsgAMGrantGuestPasses2Response {
317 optional int32 eresult = 1 [default = 2];
318 optional int32 passes_granted = 2 [default = 0];
321 message CGCSystemMsg_GetAccountDetails {
322 option (msgpool_soft_limit) = 128;
323 option (msgpool_hard_limit) = 512;
324 optional fixed64 steamid = 1;
325 optional uint32 appid = 2;
328 message CGCSystemMsg_GetAccountDetails_Response {
329 option (msgpool_soft_limit) = 128;
330 option (msgpool_hard_limit) = 512;
331 optional uint32 eresult_deprecated = 1 [default = 2];
332 optional string account_name = 2;
333 optional string persona_name = 3;
334 optional bool is_profile_public = 4;
335 optional bool is_inventory_public = 5;
336 optional bool is_vac_banned = 7;
337 optional bool is_cyber_cafe = 8;
338 optional bool is_school_account = 9;
339 optional bool is_limited = 10;
340 optional bool is_subscribed = 11;
341 optional uint32 package = 12;
342 optional bool is_free_trial_account = 13;
343 optional uint32 free_trial_expiration = 14;
344 optional bool is_low_violence = 15;
345 optional bool is_account_locked_down = 16;
346 optional bool is_community_banned = 17;
347 optional bool is_trade_banned = 18;
348 optional uint32 trade_ban_expiration = 19;
349 optional uint32 accountid = 20;
350 optional uint32 suspension_end_time = 21;
351 optional string currency = 22;
352 optional uint32 steam_level = 23;
353 optional uint32 friend_count = 24;
354 optional uint32 account_creation_time = 25;
355 optional bool is_steamguard_enabled = 27;
356 optional bool is_phone_verified = 28;
357 optional bool is_two_factor_auth_enabled = 29;
358 optional uint32 two_factor_enabled_time = 30;
359 optional uint32 phone_verification_time = 31;
360 optional uint64 phone_id = 33;
361 optional bool is_phone_identifying = 34;
364 message CMsgGCGetPersonaNames {
365 repeated fixed64 steamids = 1;
368 message CMsgGCGetPersonaNames_Response {
369 message PersonaName {
370 optional fixed64 steamid = 1;
371 optional string persona_name = 2;
374 repeated .CMsgGCGetPersonaNames_Response.PersonaName succeeded_lookups = 1;
375 repeated fixed64 failed_lookup_steamids = 2;
378 message CMsgGCCheckFriendship {
379 optional fixed64 steamid_left = 1;
380 optional fixed64 steamid_right = 2;
383 message CMsgGCCheckFriendship_Response {
384 optional bool success = 1;
385 optional bool found_friendship = 2;
388 message CMsgGCMsgMasterSetDirectory {
390 optional uint32 dir_index = 1;
391 optional string name = 2;
392 optional string box = 3;
393 optional string command_line = 4;
394 optional string gc_binary = 5;
397 optional uint32 master_dir_index = 1;
398 repeated .CMsgGCMsgMasterSetDirectory.SubGC dir = 2;
401 message CMsgGCMsgMasterSetDirectory_Response {
402 optional int32 eresult = 1 [default = 2];
405 message CMsgGCMsgWebAPIJobRequestForwardResponse {
406 optional uint32 dir_index = 1;
409 message CGCSystemMsg_GetPurchaseTrust_Request {
410 optional fixed64 steamid = 1;
413 message CGCSystemMsg_GetPurchaseTrust_Response {
414 optional bool has_prior_purchase_history = 1;
415 optional bool has_no_recent_password_resets = 2;
416 optional bool is_wallet_cash_trusted = 3;
417 optional uint32 time_all_trusted = 4;
420 message CMsgGCHAccountVacStatusChange {
421 optional fixed64 steam_id = 1;
422 optional uint32 app_id = 2;
423 optional uint32 rtime_vacban_starts = 3;
424 optional bool is_banned_now = 4;
425 optional bool is_banned_future = 5;
428 message CMsgGCGetPartnerAccountLink {
429 optional fixed64 steamid = 1;
432 message CMsgGCGetPartnerAccountLink_Response {
433 optional uint32 pwid = 1;
434 optional uint32 nexonid = 2;
437 message CMsgGCRoutingInfo {
442 PROTOBUF_FIELD_UINT64 = 3;
443 WEBAPI_PARAM_UINT64 = 4;
446 repeated uint32 dir_index = 1;
447 optional .CMsgGCRoutingInfo.RoutingMethod method = 2 [default = RANDOM];
448 optional .CMsgGCRoutingInfo.RoutingMethod fallback = 3 [default = DISCARD];
449 optional uint32 protobuf_field = 4;
450 optional string webapi_param = 5;
453 message CMsgGCMsgMasterSetWebAPIRouting {
455 optional string interface_name = 1;
456 optional string method_name = 2;
457 optional .CMsgGCRoutingInfo routing = 3;
460 repeated .CMsgGCMsgMasterSetWebAPIRouting.Entry entries = 1;
463 message CMsgGCMsgMasterSetClientMsgRouting {
465 optional uint32 msg_type = 1;
466 optional .CMsgGCRoutingInfo routing = 2;
469 repeated .CMsgGCMsgMasterSetClientMsgRouting.Entry entries = 1;
472 message CMsgGCMsgMasterSetWebAPIRouting_Response {
473 optional int32 eresult = 1 [default = 2];
476 message CMsgGCMsgMasterSetClientMsgRouting_Response {
477 optional int32 eresult = 1 [default = 2];
480 message CMsgGCMsgSetOptions {
481 message MessageRange {
482 required uint32 low = 1;
483 required uint32 high = 2;
487 NOTIFY_USER_SESSIONS = 0;
488 NOTIFY_SERVER_SESSIONS = 1;
489 NOTIFY_ACHIEVEMENTS = 2;
490 NOTIFY_VAC_ACTION = 3;
493 repeated .CMsgGCMsgSetOptions.Option options = 1;
494 repeated .CMsgGCMsgSetOptions.MessageRange client_msg_ranges = 2;
497 message CMsgGCHUpdateSession {
499 optional string name = 1;
500 optional string value = 2;
503 optional fixed64 steam_id = 1;
504 optional uint32 app_id = 2;
505 optional bool online = 3;
506 optional fixed64 server_steam_id = 4;
507 optional uint32 server_addr = 5;
508 optional uint32 server_port = 6;
509 optional uint32 os_type = 7;
510 optional uint32 client_addr = 8;
511 repeated .CMsgGCHUpdateSession.ExtraField extra_fields = 9;
514 message CMsgNotificationOfSuspiciousActivity {
515 message MultipleGameInstances {
516 optional uint32 app_instance_count = 1;
517 repeated fixed64 other_steamids = 2;
520 optional fixed64 steamid = 1;
521 optional uint32 appid = 2;
522 optional .CMsgNotificationOfSuspiciousActivity.MultipleGameInstances multiple_instances = 3;