summaryrefslogtreecommitdiff
path: root/gcsdk/gcsystemmsgs.proto
blob: e5a1f53488dcfc1860fb563e304d3d062cd0587e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//====== Copyright 1996-2010, Valve Corporation, All rights reserved. =======
//
// Purpose: The file defines our Google Protocol Buffers which are used in over 
// the wire messages between servers as well as between clients and servers.
//
//=============================================================================

// We care more about speed than code size
option optimize_for = SPEED;

// We don't use the service generation functionality
option cc_generic_services = false;


// 
// STYLE NOTES:
//
// Use CamelCase CMsgMyMessageName style names for messages.
// 
// Use lowercase _ delimited names like my_steam_id for field names, this is non-standard for Steam,
// but plays nice with the Google formatted code generation.  
// 
// Try not to use required fields ever. Only do so if you are really really sure you'll never want them removed. 
// Optional should be preffered as it will make versioning easier and cleaner in the future if someone refactors
// your message and wants to remove or rename fields.
//
// Use fixed64 for JobId_t, GID_t, or SteamID.  This is appropriate for any field that is normally
// going to be larger than 2^56.  Otherwise use int64 for 64 bit values that are frequently smaller
// than 2^56 as it will safe space on the wire in those cases.
//
// Similar to fixed64, use fixed32 for RTime32 or other 32 bit values that are frequently larger than
// 2^28.  It will safe space in those cases, otherwise use int32 which will safe space for smaller values.
// An exception to this rule for RTime32 is if the value will frequently be zero rather than set to an actual 
// time.
//

enum EGCSystemMsg
{
	k_EGCMsgInvalid =							0;
	k_EGCMsgMulti =								1;

	k_EGCMsgGenericReply =						10;

	k_EGCMsgSystemBase =						50;
	k_EGCMsgAchievementAwarded =				51;
	k_EGCMsgConCommand =						52;		// A command from the GC's admin console
	k_EGCMsgStartPlaying =						53;
	k_EGCMsgStopPlaying =						54;
	k_EGCMsgStartGameserver =					55;
	k_EGCMsgStopGameserver =					56;
	k_EGCMsgWGRequest =							57;
	k_EGCMsgWGResponse =						58;
	k_EGCMsgGetUserGameStatsSchema =			59;		// Gets the user game stats schema for the app
	k_EGCMsgGetUserGameStatsSchemaResponse =	60;
	k_EGCMsgGetUserStatsDEPRECATED =			61;		// Gets user game stats for a user
	k_EGCMsgGetUserStatsResponse =				62;
	k_EGCMsgAppInfoUpdated =					63;		// Message sent to the GC when there has been an AppInfo update
	k_EGCMsgValidateSession =					64;		// Message sent by the GC when it wants to make sure a session exists
	k_EGCMsgValidateSessionResponse =			65;		// Message sent to the GC in response to ValidateSession 
	k_EGCMsgLookupAccountFromInput =			66;		// Sent by the GC to lookup user. Reply is k_EGCMsgGenericReply
	k_EGCMsgSendHTTPRequest =					67;		// Message sent by the GC to do a generic HTTP request
	k_EGCMsgSendHTTPRequestResponse =			68;		// Response back to the GC with the results of the HTTP request
	k_EGCMsgPreTestSetup =						69;		// Reset the GC database (usually for testing purposes)
	k_EGCMsgRecordSupportAction =				70;		// Logs a support action
	k_EGCMsgGetAccountDetails_DEPRECATED =		71;		// DEPRECATED - Use protobuf-based k_EGCMsgGetAccountDetails //Requests the details for an account
//	k_EGCMsgSendInterAppMessage =				72;		// Sends a message to another app's GC
	k_EGCMsgReceiveInterAppMessage =			73;		// Receives a message from another app's GC
	k_EGCMsgFindAccounts =						74;		// queries the AMs for accounts by name
	k_EGCMsgPostAlert =							75;		// posts an alert to Steam
	k_EGCMsgGetLicenses =						76;		// asks Steam for the user's licenses
	k_EGCMsgGetUserStats =						77;		// Gets user game stats for a user
	k_EGCMsgGetCommands =						78;		// request for a list of commands from a gc console
	k_EGCMsgGetCommandsResponse =				79;		// response with a list of commands for a gc console
	k_EGCMsgAddFreeLicense =					80;		// request for for Steam to add a license to the specified free package
	k_EGCMsgAddFreeLicenseResponse =			81;		// response with the result of the attempt to add a free license
	k_EGCMsgGetIPLocation = 					82;		// Get geolocation data for a specific IP
	k_EGCMsgGetIPLocationResponse = 			83;		// Geolocation response

	k_EGCMsgSystemStatsSchema =		 			84;		// Message sent by the GC specifying what its stats schema is
	k_EGCMsgGetSystemStats =		 			85;		// Message sent to the GC requesting its stats
	k_EGCMsgGetSystemStatsResponse =	 		86;		// Message sent by the GC with its stats

	k_EGCMsgSendEmail =		 					87;		// Sent by the GC to send an email to a user
	k_EGCMsgSendEmailResponse =	 				88;		// Response with the result of the send request
	k_EGCMsgGetEmailTemplate =					89;		// Sent to the GC to request an email template
	k_EGCMsgGetEmailTemplateResponse =			90;		// Get email template response
	k_EGCMsgGrantGuestPass =					91;		// Sends a guest pass/gift to a user
	k_EGCMsgGrantGuestPassResponse =			92;		// Send guest pass response
	k_EGCMsgGetAccountDetails =					93;		// Requests the details for an account
	k_EGCMsgGetAccountDetailsResponse =			94;		// Requests the details for an account response
	k_EGCMsgGetPersonaNames =					95;		// Gets the persona names for a set of accounts
	k_EGCMsgGetPersonaNamesResponse =			96;		// Gets the persona names for a set of accounts response
	k_EGCMsgMultiplexMsg =						97;		// Sends a single message to multiple users

	// web API calls
	k_EGCMsgWebAPIRegisterInterfaces =			101; // sent once at startup to register APIs
	k_EGCMsgWebAPIJobRequest =					102; // sent when an actual request is made
//	k_EGCMsgWebAPIRegistrationRequested =		103; // sent by the GC Host when it learns a web API server has started		-- No longer sent by the GCH
	k_EGCMsgWebAPIJobRequestHttpResponse =		104; // sent by the GC in response to k_EGCMsgWebAPIJobRequest - uses CMsgHttpResponse
	k_EGCMsgWebAPIJobRequestForwardResponse =	105; // sent by the GC in response to k_EGCMsgWebAPIJobRequest - uses CMsgGCMsgWebAPIJobRequestForwardResponse


	// Memcached
	k_EGCMsgMemCachedGet =						200;	// Get key(s) from memcached
	k_EGCMsgMemCachedGetResponse =				201;	// Retrieved keys
	k_EGCMsgMemCachedSet =						202;	// Set key(s) into memcached
	k_EGCMsgMemCachedDelete =					203;	// Delete key(s) from memcached
	k_EGCMsgMemCachedStats =					204;	// Request stats from memcached
	k_EGCMsgMemCachedStatsResponse =			205;	// Retrieved stats

	// SQL
	k_EGCMsgSQLStats =							210;	// Get the current SQL stats
	k_EGCMsgSQLStatsResponse =					211;	// Retrieved stats

	// Multi-GC setup
	k_EGCMsgMasterSetDirectory =				220;	// The master GC will send this back to the GCH indicating the sub GC's that need to be created
	k_EGCMsgMasterSetDirectoryResponse =		221;	// Response back from the GCH to the master GC regarding the successful receiving of the directory (note this doesn't mean all sub GCs are done starting up)
	k_EGCMsgMasterSetWebAPIRouting =			222;	// The master GC will send this back to the GCH indicating the routing details for WebAPI requests
	k_EGCMsgMasterSetWebAPIRoutingResponse =	223;	// Response back from the GCH to the master GC regarding the successful receipt and processing of k_EGCMsgMasterSetWebAPIRouting
	k_EGCMsgMasterSetClientMsgRouting =			224;	// The master GC will send this back to the GCH indicating the routing details for client messages
	k_EGCMsgMasterSetClientMsgRoutingResponse =	225;	// Response back from the GCH to the master GC regarding the successful receipt and processing of k_EGCMsgMasterSetClientMsgRouting
	k_EGCMsgSetOptions =						226;	// Each GC can send this back to the GCH indicating which client messages and data streams the GC is interested in
	k_EGCMsgSetOptionsResponse =				227;	// Response back from the GCH (optional - don't send a job ID with SetOptions to skip the response)

	// Newer GC SDK messages. All should be protobuf based.
	k_EGCMsgSystemBase2 =						500;
	k_EGCMsgGetPurchaseTrustStatus =			501;	// Gets information about a user's purchase trustworthiness
	k_EGCMsgGetPurchaseTrustStatusResponse =	502;	// Gets information about a user's purchase trustworthiness response
	k_EGCMsgUpdateSession =						503;	// GCH update regarding the status of a session, only sent if the convar to enable these messages is set
	k_EGCMsgGCAccountVacStatusChange =			504;	// Accounts VAC status has changed
	k_EGCMsgCheckFriendship =					505;	// GC checking if two users are friends
	k_EGCMsgCheckFriendshipResponse =			506;	// Response to the GC regarding the users' friendship
	k_EGCMsgGetPartnerAccountLink =				507;	// Request the partner account link details for a user
	k_EGCMsgGetPartnerAccountLinkResponse =		508;	// Response to the GC with the partner account link details
	k_EGCMsgVSReportedSuspiciousActivity =		509;	// Suspicious activity detected on user's account
	k_EGCMsgAccountTradeBanStatusChange =		510;	// Account's trade ban status has changed
	k_EGCMsgAccountLockStatusChange =			511;	// Account's lock status has changed
	k_EGCMsgDPPartnerMicroTxns =				512;	// A set of microtransaction data relayed to the DP for insert or update.
	k_EGCMsgDPPartnerMicroTxnsResponse =		513;	// ... Response
	k_EGCMsgGetIPASN = 							514;	// Get ASN data for a specific IP
	k_EGCMsgGetIPASNResponse = 					515;	// IP ASN response
	k_EGCMsgGetAppFriendsList =					516;	// GC requesting a list of app-friends for a user (defined as friends who play the app requesting the friends list)
	k_EGCMsgGetAppFriendsListResponse =			517;	// ... Response
	k_EGCMsgVacVerificationChange =				518;	// From VS to GC
	k_EGCMsgAccountPhoneNumberChange =			519;	// From Phone Server to GC
	k_EGCMsgAccountTwoFactorChange =			520;	// From AM to GC
	k_EGCMsgCheckClanMembership =				521;	// Checks if an account is a member of a given clan
	k_EGCMsgCheckClanMembershipResponse =		522;	// Checks if an account is a member of a given clan response
};

enum ESOMsg
{
	k_ESOMsg_Create =						21;
	k_ESOMsg_Update =						22;
	k_ESOMsg_Destroy =						23;
	k_ESOMsg_CacheSubscribed =				24;
	k_ESOMsg_CacheUnsubscribed =			25;
	k_ESOMsg_UpdateMultiple =				26;
	k_ESOMsg_CacheSubscriptionCheck =		27; // need to get rid of this!
	k_ESOMsg_CacheSubscriptionRefresh =		28;
	k_ESOMsg_CacheSubscribedUpToDate =		29;
};

enum EGCBaseClientMsg
{
	k_EMsgGCPingRequest =						3001; // GC <=> client
	k_EMsgGCPingResponse =						3002; // GC <=> client

	// WARNING: These messages were promoted into the gcsdk
	// from base_gcmessages.proto (which is not part of the gcsdk put is
	// "shared game code").  But we did not want to change the numbers
	// for existing messages.  Don't add new messages in the 4000 range!
	k_EMsgGCClientWelcome =						4004; // GC => client
	k_EMsgGCServerWelcome =						4005; // GC => server
	k_EMsgGCClientHello =						4006; // client => GC
	k_EMsgGCServerHello =						4007; // server => GC

	k_EMsgGCClientGoodbye =						4008; // GC => client
	k_EMsgGCServerGoodbye =						4009; // GC => server

	// !FIXME! DOTAMERGE
	//k_EMsgGCClientConnectionStatus =			4009; // GC => client
	//k_EMsgGCServerConnectionStatus =			4010; // GC => server

};

enum EGCToGCMsg
{
	k_EGCToGCMsgMasterAck =						150;		// Sub GC => Master GC, confirm that we've started up successfully so the master can go when all sub GCs are ready
	k_EGCToGCMsgMasterAckResponse =				151;		// Master GC => Sub GC, the ack came through fine and everything is as expected
	k_EGCToGCMsgRouted =						152;		// Master GC => Sub GC, a routed message that originally came in from a client or the system and has been sent to another GC
	k_EGCToGCMsgRoutedReply =					153;		// Sub GC => Sub/Master GC, a reply message that needs to be sent back from the original GC that received the message
	k_EMsgGCUpdateSubGCSessionInfo =			154;		// Master GC => Other GCs
	k_EMsgGCRequestSubGCSessionInfo =			155;		// Sub GC => Master GC
	k_EMsgGCRequestSubGCSessionInfoResponse =	156;		// Master GC => Sub GC
	k_EGCToGCMsgMasterStartupComplete =			157;		// Master GC => Sub GC - Indicates that the master universe has completed startup, indicating that sub GC's are in a good spot to complete startup
	k_EMsgGCToGCSOCacheSubscribe =				158;		// Master GC => Sub GC - A steam ID has subscribed to another SO cache (or possibly their own)
	k_EMsgGCToGCSOCacheUnsubscribe =			159;		// Master GC => Sub GC - A steam ID has unsubscribed from another SO cache (or possibly their own)
}


// Do not remove this comment due to a bug on the Mac OS X protobuf compiler