Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

799 lines
23 KiB

  1. //====== Copyright 1996-2010, Valve Corporation, All rights reserved. =======
  2. //
  3. // Purpose: The file defines our Google Protocol Buffers which are used in over
  4. // the wire messages between servers as well as between clients and servers.
  5. //
  6. //=============================================================================
  7. // We care more about speed than code size
  8. option optimize_for = SPEED;
  9. // We don't use the service generation functionality
  10. option cc_generic_services = false;
  11. //
  12. // STYLE NOTES:
  13. //
  14. // Use CamelCase CMsgMyMessageName style names for messages.
  15. //
  16. // Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
  17. // but plays nice with the Google formatted code generation.
  18. //
  19. // Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed.
  20. // Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
  21. // your message and wants to remove or rename fields.
  22. //
  23. // Use fixed64 for JobId_t, GID_t, or SteamID. This is appropriate for any field that is normally
  24. // going to be larger than 2^56. Otherwise use int64 for 64 bit values that are frequently smaller
  25. // than 2^56 as it will safe space on the wire in those cases.
  26. //
  27. // Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
  28. // 2^28. It will safe space in those cases, otherwise use int32 which will safe space for smaller values.
  29. // An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual
  30. // time.
  31. //
  32. import "google/protobuf/descriptor.proto";
  33. extend google.protobuf.FieldOptions {
  34. optional bool key_field = 60000 [ default = false ];
  35. }
  36. extend google.protobuf.MessageOptions{
  37. // Allows us to customize the pooling for different messages
  38. optional int32 msgpool_soft_limit = 60000 [default=32];
  39. optional int32 msgpool_hard_limit = 60001 [default=384];
  40. }
  41. enum GCProtoBufMsgSrc
  42. {
  43. GCProtoBufMsgSrc_Unspecified = 0;
  44. GCProtoBufMsgSrc_FromSystem = 1;
  45. GCProtoBufMsgSrc_FromSteamID = 2;
  46. GCProtoBufMsgSrc_FromGC = 3;
  47. GCProtoBufMsgSrc_ReplySystem = 4;
  48. };
  49. //
  50. // Message header, every protcol buffer based message starts with this.
  51. //
  52. message CMsgProtoBufHeader
  53. {
  54. option (msgpool_soft_limit) = 256;
  55. option (msgpool_hard_limit) = 1024;
  56. // All fields here are optional.
  57. // Client message header fields
  58. optional fixed64 client_steam_id = 1; // SteamID of the client sending this, typically set in all client originated messages.
  59. optional int32 client_session_id = 2; // SessionID of the client on the CM
  60. // Source appId for inter-gc messages
  61. optional uint32 source_app_id = 3; // appId of source GC message sender
  62. // Job routing (may be set on client or inter-server messages)
  63. optional fixed64 job_id_source = 10 [ default = 0xFFFFFFFFFFFFFFFF ]; // JobID that sent this message
  64. optional fixed64 job_id_target = 11 [ default = 0xFFFFFFFFFFFFFFFF ]; // The target job which is expected to be waiting on this message
  65. optional string target_job_name = 12; // the type of job to start when this message is received
  66. optional int32 eresult = 13 [default = 2]; // For response jobs, the corresponding eresult
  67. optional string error_message = 14; // Optionally an error message in case of failure. Mostly used for debugging purpose.
  68. // Where did this message originally enter the system? From a client, from another GC, etc
  69. optional GCProtoBufMsgSrc gc_msg_src = 200;
  70. // If this came from another GC, what is the GC that it came from
  71. optional uint32 gc_dir_index_source = 201;
  72. }
  73. //
  74. // Used to serialize CWebAPIKey objects.
  75. //
  76. message CMsgWebAPIKey
  77. {
  78. optional uint32 status = 1 [ default = 0xFF ];
  79. optional uint32 account_id = 2 [ default = 0 ];
  80. optional uint32 publisher_group_id = 3 [ default = 0 ];
  81. optional uint32 key_id = 4;
  82. optional string domain = 5;
  83. }
  84. //
  85. // An HTTP request message
  86. //
  87. message CMsgHttpRequest
  88. {
  89. message RequestHeader
  90. {
  91. optional string name = 1;
  92. optional string value = 2;
  93. }
  94. message QueryParam
  95. {
  96. optional string name = 1;
  97. optional bytes value = 2;
  98. }
  99. optional uint32 request_method = 1;
  100. optional string hostname = 2;
  101. optional string url = 3;
  102. repeated RequestHeader headers = 4;
  103. repeated QueryParam get_params = 5;
  104. repeated QueryParam post_params = 6;
  105. optional bytes body = 7;
  106. optional uint32 absolute_timeout = 8;
  107. }
  108. //
  109. // A web API request
  110. //
  111. message CMsgWebAPIRequest
  112. {
  113. optional string UNUSED_job_name = 1; // no longer used
  114. optional string interface_name = 2;
  115. optional string method_name = 3;
  116. optional uint32 version = 4;
  117. optional CMsgWebAPIKey api_key = 5;
  118. optional CMsgHttpRequest request = 6;
  119. optional uint32 routing_app_id = 7;
  120. }
  121. //
  122. // An HTTP response
  123. //
  124. message CMsgHttpResponse
  125. {
  126. message ResponseHeader
  127. {
  128. optional string name = 1;
  129. optional string value = 2;
  130. }
  131. optional uint32 status_code = 1;
  132. repeated ResponseHeader headers = 2;
  133. optional bytes body = 3;
  134. }
  135. //
  136. // Message struct for k_EMsgAMFindAccounts
  137. //
  138. message CMsgAMFindAccounts
  139. {
  140. optional uint32 search_type = 1;
  141. optional string search_string = 2;
  142. }
  143. //
  144. // Message struct for k_EMsgAMFindAccountsResponse
  145. //
  146. message CMsgAMFindAccountsResponse
  147. {
  148. repeated fixed64 steam_id = 1;
  149. }
  150. //
  151. // k_EMsgNotifyWatchdog
  152. //
  153. message CMsgNotifyWatchdog
  154. {
  155. optional uint32 source = 1; // Alert source
  156. optional uint32 alert_type = 2; // type of alert
  157. optional uint32 alert_destination = 3; // destination for alert
  158. optional bool critical = 4; // Is the alert critical
  159. optional uint32 time = 5; // world time that alert occurred
  160. optional uint32 appid = 6; // app to forward the alert to for alerts with alert_type set to AppID
  161. optional string text = 7; // Alert text
  162. }
  163. //
  164. // k_EGCMsgGetLicenses
  165. //
  166. message CMsgAMGetLicenses
  167. {
  168. optional fixed64 steamid = 1; // the steam ID to fetch licenses for
  169. }
  170. //
  171. // Used by CMsgAMGetLicensesResponse
  172. //
  173. message CMsgPackageLicense
  174. {
  175. optional uint32 package_id = 1; // ID of the package this license is for
  176. optional uint32 time_created = 2; // RTime32 when the license was granted
  177. optional uint32 owner_id = 3; // the original owner if this license. if this is different from given steamid, it's a borrowed package
  178. }
  179. //
  180. // k_EMsgAMGetLicensesResponse
  181. //
  182. message CMsgAMGetLicensesResponse
  183. {
  184. repeated CMsgPackageLicense license = 1; // the list of licenses the user owns
  185. optional uint32 result = 2; // result code, k_EResultOK on success
  186. }
  187. //
  188. // k_EMsgAMGetUserGameStats
  189. //
  190. message CMsgAMGetUserGameStats
  191. {
  192. optional fixed64 steam_id = 1; // ID of user
  193. optional fixed64 game_id = 2; // Game ID of stats to get
  194. repeated uint32 stats = 3;
  195. }
  196. //
  197. // k_EMsgAMGetUserGameStatsResponse
  198. //
  199. message CMsgAMGetUserGameStatsResponse
  200. {
  201. optional fixed64 steam_id = 1; // ID of user
  202. optional fixed64 game_id = 2; // Game ID
  203. optional int32 eresult = 3 [default = 2]; // EResult with result of query. (Fields following are only valid if this is EResultOK.)
  204. message Stats
  205. {
  206. optional uint32 stat_id = 1;
  207. optional uint32 stat_value = 2; // There are 4 of these, really only 8 bits each. Yay for compression!
  208. }
  209. message Achievement_Blocks
  210. {
  211. optional uint32 achievement_id = 1;
  212. optional uint32 achievement_bit_id = 2;
  213. optional fixed32 unlock_time = 3; // There are only 32 of these, matching the achievment bitfields, we check on the receiver that
  214. }
  215. repeated Stats stats = 4;
  216. repeated Achievement_Blocks achievement_blocks = 5;
  217. }
  218. // k_EMsgAdminGCGetCommandList
  219. message CMsgGCGetCommandList
  220. {
  221. optional uint32 app_id = 1;
  222. optional string command_prefix = 2; // prefix of the command to filter by
  223. };
  224. // k_EMsgAdminGCGetCommandListResponse
  225. message CMsgGCGetCommandListResponse
  226. {
  227. repeated string command_name = 1; // a list of command names
  228. };
  229. //
  230. // k_EGCMsgMemCachedGet
  231. //
  232. message CGCMsgMemCachedGet
  233. {
  234. repeated string keys = 1;
  235. }
  236. //
  237. // k_EGCMsgMemCachedGetResponse
  238. //
  239. message CGCMsgMemCachedGetResponse
  240. {
  241. message ValueTag
  242. {
  243. optional bool found = 1;
  244. optional bytes value = 2;
  245. }
  246. repeated ValueTag values = 1;
  247. }
  248. //
  249. // k_EGCMsgMemCachedSet
  250. //
  251. message CGCMsgMemCachedSet
  252. {
  253. message KeyPair
  254. {
  255. optional string name = 1;
  256. optional bytes value = 2;
  257. }
  258. repeated KeyPair keys = 1;
  259. }
  260. //
  261. // k_EGCMsgMemCachedDelete
  262. //
  263. message CGCMsgMemCachedDelete
  264. {
  265. repeated string keys = 1;
  266. }
  267. //
  268. // k_EGCMsgMemCachedStats
  269. //
  270. message CGCMsgMemCachedStats
  271. {
  272. // Nothing, yet.
  273. }
  274. //
  275. // k_EGCMsgMemCachedStatsResponse
  276. //
  277. message CGCMsgMemCachedStatsResponse
  278. {
  279. optional uint64 curr_connections = 1;
  280. optional uint64 cmd_get = 2;
  281. optional uint64 cmd_set = 3;
  282. optional uint64 cmd_flush = 4;
  283. optional uint64 get_hits = 5;
  284. optional uint64 get_misses = 6;
  285. optional uint64 delete_hits = 7;
  286. optional uint64 delete_misses = 8;
  287. optional uint64 bytes_read = 9;
  288. optional uint64 bytes_written = 10;
  289. optional uint64 limit_maxbytes = 11;
  290. optional uint64 curr_items = 12;
  291. optional uint64 evictions = 13;
  292. optional uint64 bytes = 14;
  293. }
  294. //
  295. // k_EGCMsgSQLStats
  296. //
  297. message CGCMsgSQLStats
  298. {
  299. optional uint32 schema_catalog = 1;
  300. }
  301. //
  302. // k_EGCMsgSQLStatsResponse
  303. //
  304. message CGCMsgSQLStatsResponse
  305. {
  306. optional uint32 threads = 1;
  307. optional uint32 threads_connected = 2;
  308. optional uint32 threads_active = 3;
  309. optional uint32 operations_submitted = 4;
  310. optional uint32 prepared_statements_executed = 5;
  311. optional uint32 non_prepared_statements_executed = 6;
  312. optional uint32 deadlock_retries = 7;
  313. optional uint32 operations_timed_out_in_queue = 8;
  314. optional uint32 errors = 9;
  315. }
  316. // k_EMsgAMAddFreeLicense
  317. message CMsgAMAddFreeLicense
  318. {
  319. optional fixed64 steamid = 1; // SteamID of account
  320. optional uint32 ip_public = 2; // IP of client (zero if not a client-initiated message)
  321. optional uint32 packageid = 3; // ID for package to purchase. Should be k_uPackageIdInvalid if shopping cart gid set
  322. optional string store_country_code = 4; // country code to use for purchase
  323. };
  324. // k_EMsgAMAddFreeLicenseResponse
  325. message CMsgAMAddFreeLicenseResponse
  326. {
  327. optional int32 eresult = 1 [default = 2]; // EResult with result of Purchase.
  328. optional int32 purchase_result_detail = 2; // Detailed result information
  329. optional fixed64 transid = 3; // ID of the created transaction
  330. };
  331. //
  332. // k_EGCMsgGetIPLocation
  333. //
  334. message CGCMsgGetIPLocation
  335. {
  336. repeated fixed32 ips = 1;
  337. }
  338. //
  339. // k_EGCMsgGetIPLocationResponse
  340. //
  341. message CIPLocationInfo
  342. {
  343. optional uint32 ip = 1;
  344. optional float latitude = 2;
  345. optional float longitude = 3;
  346. optional string country = 4;
  347. optional string state = 5;
  348. optional string city = 6;
  349. }
  350. message CGCMsgGetIPLocationResponse
  351. {
  352. repeated CIPLocationInfo infos = 1;
  353. }
  354. //
  355. // k_EGCMsgSystemStatsSchema
  356. //
  357. message CGCMsgSystemStatsSchema
  358. {
  359. optional uint32 gc_app_id = 1;
  360. optional bytes schema_kv = 2;
  361. }
  362. //
  363. // k_EGCMsgGetSystemStats
  364. //
  365. message CGCMsgGetSystemStats
  366. {
  367. }
  368. //
  369. // k_EGCMsgGetSystemStatsResponse
  370. //
  371. message CGCMsgGetSystemStatsResponse
  372. {
  373. optional uint32 gc_app_id = 1;
  374. optional bytes stats_kv = 2;
  375. // statically included in GCHost's stats
  376. optional uint32 active_jobs = 3;
  377. optional uint32 yielding_jobs = 4;
  378. optional uint32 user_sessions = 5;
  379. optional uint32 game_server_sessions = 6;
  380. optional uint32 socaches = 7;
  381. optional uint32 socaches_to_unload = 8;
  382. optional uint32 socaches_loading = 9;
  383. optional uint32 writeback_queue = 10;
  384. optional uint32 steamid_locks = 11;
  385. optional uint32 logon_queue = 12;
  386. optional uint32 logon_jobs = 13;
  387. }
  388. // k_EGCMsgSendEmail
  389. message CMsgAMSendEmail
  390. {
  391. message ReplacementToken
  392. {
  393. optional string token_name = 1;
  394. optional string token_value = 2;
  395. }
  396. message PersonaNameReplacementToken
  397. {
  398. optional fixed64 steamid = 1;
  399. optional string token_name = 2;
  400. }
  401. optional fixed64 steamid = 1;
  402. optional uint32 email_msg_type = 2;
  403. optional uint32 email_format = 3;
  404. repeated PersonaNameReplacementToken persona_name_tokens = 5;
  405. optional uint32 source_gc = 6;
  406. repeated ReplacementToken tokens = 7;
  407. }
  408. // k_EGCMsgSendEmailResponse
  409. message CMsgAMSendEmailResponse
  410. {
  411. optional uint32 eresult = 1 [default = 2];
  412. }
  413. // k_EGCMsgGetEmailTemplate
  414. message CMsgGCGetEmailTemplate
  415. {
  416. optional uint32 app_id = 1;
  417. optional uint32 email_msg_type = 2;
  418. optional int32 email_lang = 3;
  419. optional int32 email_format = 4;
  420. }
  421. // k_EGCMsgGetEmailTemplateResponse
  422. message CMsgGCGetEmailTemplateResponse
  423. {
  424. optional uint32 eresult = 1 [default = 2];
  425. optional bool template_exists = 2;
  426. optional string template = 3;
  427. }
  428. // k_EMsgAMGrantGuestPasses2
  429. message CMsgAMGrantGuestPasses2
  430. {
  431. optional fixed64 steam_id = 1;
  432. optional uint32 package_id = 2;
  433. optional int32 passes_to_grant = 3;
  434. optional int32 days_to_expiration = 4;
  435. optional int32 action = 5;
  436. }
  437. // k_EMsgAMGrantGuestPasses2Response
  438. message CMsgAMGrantGuestPasses2Response
  439. {
  440. optional int32 eresult = 1 [default = 2];
  441. optional int32 passes_granted = 2 [default = 0];
  442. }
  443. // k_EGCMsgGetAccountDetails
  444. message CGCSystemMsg_GetAccountDetails
  445. {
  446. option (msgpool_soft_limit) = 128;
  447. option (msgpool_hard_limit) = 512;
  448. optional fixed64 steamid = 1; // User to get details for
  449. optional uint32 appid = 2; // appid of the source GC
  450. }
  451. message CGCSystemMsg_GetAccountDetails_Response
  452. {
  453. option (msgpool_soft_limit) = 128;
  454. option (msgpool_hard_limit) = 512;
  455. optional uint32 eresult_deprecated = 1 [ default = 2 ]; // Result of the request
  456. optional string account_name = 2; // Login name for the user
  457. optional string persona_name = 3; // Diplay name for the user
  458. optional bool is_profile_public = 4; // Is the user's profile public
  459. optional bool is_inventory_public = 5; // Is the user's inventory public
  460. //optional bool is_trusted = 6; // Is the user trusted
  461. optional bool is_vac_banned = 7; // Is the user vac banned
  462. optional bool is_cyber_cafe = 8; // Is the user a cybe cafe
  463. optional bool is_school_account = 9; // Is the user a school account
  464. optional bool is_limited = 10; // Is the user limited
  465. optional bool is_subscribed = 11; // Is the user subscribed to this app
  466. optional uint32 package = 12; // The package the user owns the app through
  467. optional bool is_free_trial_account = 13; // Is the user playing the game for free
  468. optional uint32 free_trial_expiration = 14; // If the user is playing for free, when does it expire?
  469. optional bool is_low_violence = 15; // Is the user restricted to low-violence for this app
  470. optional bool is_account_locked_down = 16; // Is the user's account locked
  471. optional bool is_community_banned = 17; // Is the user banned from performing community actions
  472. optional bool is_trade_banned = 18; // Is the user banned from trading items to other users on Steam
  473. optional uint32 trade_ban_expiration = 19; // The time at which the user is unbanned from trading
  474. optional uint32 accountid = 20; // The account ID of the user we're responding about
  475. optional uint32 suspension_end_time = 21; // If suspended (ban that ends), the date/time the suspension ends
  476. optional string currency = 22; // The currency associated with this account
  477. optional uint32 steam_level = 23; // The Steam level of the user
  478. optional uint32 friend_count = 24; // Number of friends
  479. optional uint32 account_creation_time = 25; // Time when the account was created
  480. optional bool is_steamguard_enabled = 27; // Is SteamGuard enabled
  481. optional bool is_phone_verified = 28; // Has a verified phone number
  482. optional bool is_two_factor_auth_enabled = 29; // Has SteamGuard two factor auth
  483. optional uint32 two_factor_enabled_time = 30; // Time two factor was added
  484. optional uint32 phone_verification_time = 31; // Time phone was verified
  485. optional uint64 phone_id = 33; // Phone identifier
  486. optional bool is_phone_identifying = 34; // Phone is identifying
  487. }
  488. //
  489. // k_EGCMsgGetPersonaNames
  490. //
  491. message CMsgGCGetPersonaNames
  492. {
  493. repeated fixed64 steamids = 1; // Users whose persona names we want
  494. }
  495. message CMsgGCGetPersonaNames_Response
  496. {
  497. message PersonaName
  498. {
  499. optional fixed64 steamid = 1; // User we could get a name for
  500. optional string persona_name = 2; // Display name for that user
  501. }
  502. repeated PersonaName succeeded_lookups = 1; // Users we could get names for
  503. repeated fixed64 failed_lookup_steamids = 2; // Users we failed to get a names for
  504. }
  505. //
  506. // k_EGCMsgCheckFriendship
  507. //
  508. message CMsgGCCheckFriendship
  509. {
  510. optional fixed64 steamid_left = 1; // User whose friends list we'll load
  511. optional fixed64 steamid_right = 2; // User to look for in the list we load
  512. }
  513. message CMsgGCCheckFriendship_Response
  514. {
  515. optional bool success = 1; // Whether the API calls all succeeded
  516. optional bool found_friendship = 2; // Denotes whether the users are friends (false on API failure)
  517. }
  518. //
  519. // k_EGCMsgMasterSetDirectory
  520. //
  521. message CMsgGCMsgMasterSetDirectory
  522. {
  523. message SubGC
  524. {
  525. optional uint32 dir_index = 1; // The index in the GC directory indicating what role this GC serves
  526. optional string name = 2; // A string to give the GC a name for asserts/logs/connection, etc
  527. optional string box = 3; // The box that this GC is expected to be associated with
  528. optional string command_line = 4; // Additional command line parameters to provide for this GC instance
  529. optional string gc_binary = 5; // The binary that should be launched for this GC. This can be left blank to launch the default binary
  530. }
  531. optional uint32 master_dir_index = 1; // The index of the master GC so that it knows how to setup the routing tables to include the master and sub GCs
  532. repeated SubGC dir = 2; // A listing of the various sub GCs that the GCH should create
  533. }
  534. message CMsgGCMsgMasterSetDirectory_Response
  535. {
  536. optional int32 eresult = 1 [default = 2]; // Could the GC start the processes? It doesn't mean they will all get initialized and each sub GC still needs to ack, but catches failure earlier
  537. }
  538. //
  539. // k_EGCMsgWebAPIJobRequestForwardResponse
  540. //
  541. message CMsgGCMsgWebAPIJobRequestForwardResponse
  542. {
  543. optional uint32 dir_index = 1; // The directory index of the GC which has been delegated to handle this particular WebAPI request
  544. }
  545. //
  546. // k_EGCMsgGetPurchaseTrustStatus
  547. //
  548. message CGCSystemMsg_GetPurchaseTrust_Request
  549. {
  550. optional fixed64 steamid = 1; // User to get details for
  551. }
  552. message CGCSystemMsg_GetPurchaseTrust_Response
  553. {
  554. optional bool has_prior_purchase_history = 1; // The user has prior purchase history with no recent gaps in purchase activity
  555. optional bool has_no_recent_password_resets = 2; // The user hasn't had their password reset recently
  556. optional bool is_wallet_cash_trusted = 3; // False if the user has recently used a new payment method to fund his or her wallet
  557. optional uint32 time_all_trusted = 4; // The time that the user will be trusted in all of the given fields if he or she were to complete a microtransaction right now
  558. }
  559. // k_EMsgGCHAccountVacStatusChange
  560. message CMsgGCHAccountVacStatusChange
  561. {
  562. optional fixed64 steam_id = 1;
  563. optional uint32 app_id = 2;
  564. optional uint32 rtime_vacban_starts = 3;
  565. optional bool is_banned_now = 4;
  566. optional bool is_banned_future = 5;
  567. }
  568. //
  569. // k_EGCMsgGetPartnerAccountLink
  570. //
  571. message CMsgGCGetPartnerAccountLink
  572. {
  573. optional fixed64 steamid = 1; // User whose partner account link details we want to get
  574. }
  575. message CMsgGCGetPartnerAccountLink_Response
  576. {
  577. optional uint32 pwid = 1; // Perfect World ID (not specified if not linked)
  578. optional uint32 nexonid = 2; // Nexon ID (not specified if not linked)
  579. }
  580. //
  581. // k_EGCMsgMasterSetWebAPIRouting and k_EGCMsgMasterSetClientMsgRouting
  582. //
  583. message CMsgGCRoutingInfo
  584. {
  585. enum RoutingMethod
  586. {
  587. RANDOM = 0; // random instead of round-robin so that we don't need to track state per routing pool
  588. DISCARD = 1;
  589. CLIENT_STEAMID = 2;
  590. PROTOBUF_FIELD_UINT64 = 3;
  591. WEBAPI_PARAM_UINT64 = 4;
  592. }
  593. repeated uint32 dir_index = 1; // One or more directory indices which are potential targets for this route
  594. optional RoutingMethod method = 2 [ default = RANDOM ]; // Method by which the route choses its target from multiple dir_index values
  595. optional RoutingMethod fallback = 3 [ default = DISCARD ]; // Fallback method to use when default method is not applicable (eg, field can't be parsed)
  596. optional uint32 protobuf_field = 4; // For PROTOBUF_FIELD_UINT64, the protobuf field number to decode as a uint64 for routing
  597. optional string webapi_param = 5; // For WEBAPI_PARAM_UINT64 method, the case-insensitive name of the webapi parameter
  598. }
  599. message CMsgGCMsgMasterSetWebAPIRouting
  600. {
  601. message Entry
  602. {
  603. optional string interface_name = 1;
  604. optional string method_name = 2;
  605. optional CMsgGCRoutingInfo routing = 3;
  606. }
  607. repeated Entry entries = 1;
  608. }
  609. message CMsgGCMsgMasterSetClientMsgRouting
  610. {
  611. message Entry
  612. {
  613. optional uint32 msg_type = 1; // Client message ID to be routed; top bit is ignored for historical reasons
  614. optional CMsgGCRoutingInfo routing = 2;
  615. }
  616. repeated Entry entries = 1;
  617. }
  618. message CMsgGCMsgMasterSetWebAPIRouting_Response
  619. {
  620. optional int32 eresult = 1 [ default = 2 ]; // Success or failure code from the GCH when processing k_EGCMsgMasterSetWebAPIRouting
  621. }
  622. message CMsgGCMsgMasterSetClientMsgRouting_Response
  623. {
  624. optional int32 eresult = 1 [ default = 2 ]; // Success or failure code from the GCH when processing k_EGCMsgMasterSetClientMsgRouting
  625. }
  626. // k_EGCMsgSetOptions
  627. message CMsgGCMsgSetOptions
  628. {
  629. enum Option
  630. {
  631. // Notifications (aka "data streams" - unsoliticed messages from Steam) - default disabled, specify to opt-in
  632. NOTIFY_USER_SESSIONS = 0;
  633. NOTIFY_SERVER_SESSIONS = 1;
  634. NOTIFY_ACHIEVEMENTS = 2;
  635. NOTIFY_VAC_ACTION = 3;
  636. // todo: other options? should start options higher up, like 20+, to save room for streams?
  637. }
  638. repeated Option options = 1;
  639. // The client_msg_ranges field indicates which client messages, if any, this GC should receive copies of
  640. message MessageRange
  641. {
  642. required uint32 low = 1;
  643. required uint32 high = 2;
  644. }
  645. repeated MessageRange client_msg_ranges = 2;
  646. }
  647. // k_EMsgGCHUpdateSession
  648. message CMsgGCHUpdateSession
  649. {
  650. optional fixed64 steam_id = 1;
  651. optional uint32 app_id = 2;
  652. optional bool online = 3;
  653. optional fixed64 server_steam_id = 4; // For a game client, the steam_id of the current server
  654. optional uint32 server_addr = 5; // The IP address of the current server (or self for server state)
  655. optional uint32 server_port = 6; // The IP port of the server (or self for server state)
  656. optional uint32 os_type = 7;
  657. optional uint32 client_addr = 8; // For a game client, the public IP address of the client
  658. message ExtraField
  659. {
  660. optional string name = 1;
  661. optional string value = 2;
  662. }
  663. repeated ExtraField extra_fields = 9;
  664. optional fixed64 owner_id = 10; // owner Steam ID, different from player ID if borrowed
  665. optional uint32 cm_session_sysid = 11; // routing info for client session that is playing the game
  666. optional uint32 cm_session_identifier = 12;
  667. repeated uint32 depot_ids = 13; // list of depots in packages that confer app, if requested k_EGCStreamDepots
  668. }
  669. //
  670. // k_EGCMsgVSReportedSuspiciousActivity
  671. //
  672. message CMsgNotificationOfSuspiciousActivity
  673. {
  674. optional fixed64 steamid = 1;
  675. optional uint32 appid = 2;
  676. message MultipleGameInstances
  677. {
  678. optional uint32 app_instance_count = 1;
  679. repeated fixed64 other_steamids = 2;
  680. }
  681. optional MultipleGameInstances multiple_instances = 3;
  682. }
  683. // Do not remove this comment due to a bug on the Mac OS X protobuf compiler