Get desktop application:
View/edit binary Protocol Buffers messages
k_EGCMsgGetIPLocation
k_EGCMsgGetSystemStats
(message has no fields)
k_EGCMsgGetSystemStatsResponse
statically included in GCHost's stats
k_EGCMsgMemCachedDelete
k_EGCMsgMemCachedGet
k_EGCMsgMemCachedGetResponse
Used in:
k_EGCMsgMemCachedSet
Used in:
k_EGCMsgMemCachedStats
Nothing, yet.
(message has no fields)
k_EGCMsgMemCachedStatsResponse
k_EGCMsgSQLStats
k_EGCMsgSQLStatsResponse
k_EGCMsgSystemStatsSchema
k_EGCMsgGetAccountDetails
User to get details for
appid of the source GC
Result of the request
Login name for the user
Diplay name for the user
Is the user's profile public
Is the user's inventory public
optional bool is_trusted = 6; // Is the user trusted
Is the user vac banned
Is the user a cybe cafe
Is the user a school account
Is the user limited
Is the user subscribed to this app
The package the user owns the app through
Is the user playing the game for free
If the user is playing for free, when does it expire?
Is the user restricted to low-violence for this app
Is the user's account locked
Is the user banned from performing community actions
Is the user banned from trading items to other users on Steam
The time at which the user is unbanned from trading
The account ID of the user we're responding about
If suspended (ban that ends), the date/time the suspension ends
The currency associated with this account
The Steam level of the user
Number of friends
Time when the account was created
Is SteamGuard enabled
Has a verified phone number
Has SteamGuard two factor auth
Time two factor was added
Time phone was verified
Phone identifier
Phone is useful for identity
k_EGCMsgGetPurchaseTrustStatus
User to get details for
The user has prior purchase history with no recent gaps in purchase activity
The user hasn't had their password reset recently
False if the user has recently used a new payment method to fund his or her wallet
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
k_EGCToGCMsgMasterAck
the index from the directory that this GC is responsible for
the machine name that this GC is running on so that we can quickly see the universe configuration
the name of the process that this is running to ensure that it matches
the list of type instances contained within this process, must match the master directory
k_EGCToGCMsgMasterAck_Response
Is this GC what the master thinks it should be?
k_EGCToGCMsgMasterStartupComplete
Used in:
k_EGCToGCMsgRouted
the type of the contained message
steam ID of the client that sent this. If nil, it came from the system instead.
the binary blob contents of the contained message
k_EGCToGCMsgRoutedReply
the type of the contained message
the binary blob contents of the contained message
k_EGCMsgGetIPLocationResponse
Used in:
k_EMsgAMAddFreeLicense
SteamID of account
IP of client (zero if not a client-initiated message)
ID for package to purchase. Should be k_uPackageIdInvalid if shopping cart gid set
country code to use for purchase
k_EMsgAMAddFreeLicenseResponse
EResult with result of Purchase.
Detailed result information
ID of the created transaction
Message struct for k_EMsgAMFindAccounts
Message struct for k_EMsgAMFindAccountsResponse
k_EGCMsgGetLicenses
the steam ID to fetch licenses for
k_EMsgAMGetLicensesResponse
the list of licenses the user owns
result code, k_EResultOK on success
k_EMsgAMGetUserGameStats
ID of user
Game ID of stats to get
k_EMsgAMGetUserGameStatsResponse
ID of user
Game ID
EResult with result of query. (Fields following are only valid if this is EResultOK.)
Used in:
There are only 32 of these, matching the achievment bitfields, we check on the receiver that
Used in:
There are 4 of these, really only 8 bits each. Yay for compression!
k_EMsgAMGrantGuestPasses2
k_EMsgAMGrantGuestPasses2Response
k_EGCMsgSendEmail
Used in:
Used in:
k_EGCMsgSendEmailResponse
CMsgConnectionStatus
The last client session need state we got from you.
If they are in the queue, this tells them where they are.
your approximate position in the queue
how many people are in the queue
how long you've been waiting
estimated time until you are logged on.
k_EGCMsgCheckClanMembership
[ (description) = "User whose group memberships we want" ];
[ (description) = "Clan to check membership against" ];
[ (description) = "Whether the user in question is a member of the group in question" ];
k_EGCMsgCheckFriendship
User whose friends list we'll load
User to look for in the list we load
Whether the API calls all succeeded
Denotes whether the users are friends (false on API failure)
k_EMsgGCPingRequest k_EMsgGCPingReply
Remember, if you need to associate ping replies with requests, consider using the JobID field
(message has no fields)
k_EMsgAdminGCGetCommandList
prefix of the command to filter by
k_EMsgAdminGCGetCommandListResponse
a list of command names
k_EGCMsgGetEmailTemplate
k_EGCMsgGetEmailTemplateResponse
k_EGCMsgGetPartnerAccountLink
User whose partner account link details we want to get
Perfect World ID (not specified if not linked)
Nexon ID (not specified if not linked)
k_EGCMsgGetPersonaNames
Users whose persona names we want
Users we could get names for
Users we failed to get a names for
Used in:
User we could get a name for
Display name for that user
k_EMsgGCHAccountLockStatusChange
k_EMsgGCHAccountPhoneNumberChange
k_EMsgGCHAccountTradeBanStatusChange
k_EMsgGCHAccountTwoFactorChange
k_EMsgGCHAccountVacStatusChange
k_EMsgGCHUpdateSession
For a game client, the steam_id of the current server
The IP address of the current server (or self for server state)
The IP port of the server (or self for server state)
For a game client, the public IP address of the client
Used in:
k_EMsgGCHVacVerificationChange
Used in:
Client message ID to be routed; top bit is ignored for historical reasons
Success or failure code from the GCH when processing k_EGCMsgMasterSetClientMsgRouting
k_EGCMsgMasterSetDirectory
The index of the master GC so that it knows how to setup the routing tables to include the master and sub GCs
A listing of the various sub GCs that the GCH should create
Used in:
The index in the GC directory indicating what role this GC serves
A string to give the GC a name for asserts/logs/connection, etc
The box that this GC is expected to be associated with
Additional command line parameters to provide for this GC instance
The binary that should be launched for this GC. This can be left blank to launch the default binary
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
Used in:
Success or failure code from the GCH when processing k_EGCMsgMasterSetWebAPIRouting
k_EGCMsgSetOptions
The GCSQL version field is only read by the GC.EXE host to determine support for enums, etc; the GCH doesn't care
Used in:
baseline
added explicit support for bool types (instead of int8)
The client_msg_ranges field indicates which client messages, if any, this GC should receive copies of
Used in:
Used in:
Notifications (aka "data streams" - unsoliticed messages from Steam) - default disabled, specify to opt-in
k_EGCMsgWebAPIJobRequestForwardResponse
The directory index of the GC which has been delegated to handle this particular WebAPI request
ID of the message being sent
Serialized message to send
Clients to send the message to
k_EMsgGCRequestSubGCSessionInfo
k_EMsgGCRequestSubGCSessionInfoRespone
k_EGCMsgMasterSetWebAPIRouting and k_EGCMsgMasterSetClientMsgRouting
Used in:
,One or more directory indices which are potential targets for this route
Method by which the route choses its target from multiple dir_index values
Fallback method to use when default method is not applicable (eg, field can't be parsed)
For PROTOBUF_FIELD_UINT64, the protobuf field number to decode as a uint64 for routing
For WEBAPI_PARAM_UINT64 method, the case-insensitive name of the webapi parameter
Used in:
random instead of round-robin so that we don't need to track state per routing pool
k_EMsgGCToGCIncrementRecruitmentLevel
k_EMsgGCToGCSOCacheSubscribe
the ID of the user that is subscribing to a cache
the ID of the cache that is being subscribed to
the unique ID that is used to distinguish this synch across the various parts
the version that the client has already (used to skip unnecessary sends)
Used in:
k_EMsgGCToGCSOCacheUnsubscribe
if 0, then this means unsubscribe everyone from the cache
the cache we are unsubscribing from
k_EMsgGCUpdateSubGCSessionInfo
the list of updates we should process (in order)
Used in:
An HTTP request message
Used in:
Used in:
Used in:
An HTTP response
Used in:
k_EGCMsgVSReportedSuspiciousActivity
Used in:
k_EMsgNotifyWatchdog
Alert source
type of alert
destination for alert
Is the alert critical
world time that alert occurred
app to forward the alert to for alerts with alert_type set to AppID
Alert text
Used by CMsgAMGetLicensesResponse
Used in:
ID of the package this license is for
RTime32 when the license was granted
the original owner if this license. if this is different from given steamid, it's a borrowed package
Message header, every protcol buffer based message starts with this.
Client message header fields
SteamID of the client sending this, typically set in all client originated messages.
SessionID of the client on the CM
Source appId for inter-gc messages
appId of source GC message sender
Job routing (may be set on client or inter-server messages)
JobID that sent this message
The target job which is expected to be waiting on this message
the type of job to start when this message is received
For response jobs, the corresponding eresult
Optionally an error message in case of failure. Mostly used for debugging purpose.
Where did this message originally enter the system? From a client, from another GC, etc
If this came from another GC, what is the GC that it came from
CMsgSOCacheHaveVersion An array of these is sent to indicate what SO cache versions we currently have
ID of the cache we have
version stamp we have of this cache
For partial caches, what service this version is associated with
k_ESOMsg_CacheSubscribed
the owner of this cache
a list of types
version of the cache
The SOID that owns this object
The service that is providing this SO cache information
Other services that are providing parts of this cache and need to to be received for it to be complete
The unique ID of the sync to ensure all subscribes across services match. Ignored/not provided if no other GCs are involved
Used in:
ID of the type for these objects
the data for all the objects of this type
k_ESOMsg_CacheSubscribedUpToDate
version of the cache for this sub GC
The SOID that owns this object
The service that is providing this SO cache information
Other services that are providing parts of this cache and need to to be received for it to be complete
The unique ID of the sync to ensure all subscribes across services match. Ignored/not provided if no other GCs are involved
k_ESOMsg_CacheSubscriptionCheck
the owner of the cache
version of the cache
The SOID that owns this object
The service associated with this version
The other services that need to provide information on this cache
The unique ID of the sync to ensure all subscribes across services match. Ignored/not provided if no other GCs are involved
k_ESOMsg_CacheSubscriptionRefresh
the owner of the cache
The SOID that owns this object
k_ESOMsg_CacheUnsubscribed
the owner of this cache
Stored in memcached for each SO Cache
version of the cache
Used in:
, , , , , ,k_ESOMsg_UpdateMultiple
the steam ID of the owner of the objects
a list of types
version of the cache
The SOID that owns this object
The service that sent this update
Used in:
the shared object type ID of this object
the actual data for the object
k_ESOMsg_Create k_ESOMsg_Update k_ESOMsg_Destroy
the steam ID of the owner of this object
the shared object type ID of this object
the actual data for the object
version of the cache
The SOID that owns this object
The service that sent this update
Used to serialize CWebAPIKey objects.
Used in:
A web API request
no longer used
GC <=> client
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!
GC => client
GC => server
client => GC
server => GC
GC => client
GC => server
A command from the GC's admin console
Gets the user game stats schema for the app
Gets user game stats for a user
Message sent to the GC when there has been an AppInfo update
Message sent by the GC when it wants to make sure a session exists
Message sent to the GC in response to ValidateSession
Sent by the GC to lookup user. Reply is k_EGCMsgGenericReply
Message sent by the GC to do a generic HTTP request
Response back to the GC with the results of the HTTP request
Reset the GC database (usually for testing purposes)
Logs a support action
DEPRECATED - Use protobuf-based k_EGCMsgGetAccountDetails //Requests the details for an account
k_EGCMsgSendInterAppMessage = 72; // Sends a message to another app's GC
Receives a message from another app's GC
queries the AMs for accounts by name
posts an alert to Steam
asks Steam for the user's licenses
Gets user game stats for a user
request for a list of commands from a gc console
response with a list of commands for a gc console
request for for Steam to add a license to the specified free package
response with the result of the attempt to add a free license
Get geolocation data for a specific IP
Geolocation response
Message sent by the GC specifying what its stats schema is
Message sent to the GC requesting its stats
Message sent by the GC with its stats
Sent by the GC to send an email to a user
Response with the result of the send request
Sent to the GC to request an email template
Get email template response
Sends a guest pass/gift to a user
Send guest pass response
Requests the details for an account
Requests the details for an account response
Gets the persona names for a set of accounts
Gets the persona names for a set of accounts response
Sends a single message to multiple users
web API calls
sent once at startup to register APIs
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
sent by the GC in response to k_EGCMsgWebAPIJobRequest - uses CMsgHttpResponse
sent by the GC in response to k_EGCMsgWebAPIJobRequest - uses CMsgGCMsgWebAPIJobRequestForwardResponse
Memcached
Get key(s) from memcached
Retrieved keys
Set key(s) into memcached
Delete key(s) from memcached
Request stats from memcached
Retrieved stats
SQL
Get the current SQL stats
Retrieved stats
Multi-GC setup
The master GC will send this back to the GCH indicating the sub GC's that need to be created
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)
The master GC will send this back to the GCH indicating the routing details for WebAPI requests
Response back from the GCH to the master GC regarding the successful receipt and processing of k_EGCMsgMasterSetWebAPIRouting
The master GC will send this back to the GCH indicating the routing details for client messages
Response back from the GCH to the master GC regarding the successful receipt and processing of k_EGCMsgMasterSetClientMsgRouting
Each GC can send this back to the GCH indicating which client messages and data streams the GC is interested in
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.
Gets information about a user's purchase trustworthiness
Gets information about a user's purchase trustworthiness response
GCH update regarding the status of a session, only sent if the convar to enable these messages is set
Accounts VAC status has changed
GC checking if two users are friends
Response to the GC regarding the users' friendship
Request the partner account link details for a user
Response to the GC with the partner account link details
Suspicious activity detected on user's account
Account's trade ban status has changed
Account's lock status has changed
A set of microtransaction data relayed to the DP for insert or update.
... Response
Get ASN data for a specific IP
IP ASN response
GC requesting a list of app-friends for a user (defined as friends who play the app requesting the friends list)
... Response
From VS to GC
From Phone Server to GC
From AM to GC
Checks if an account is a member of a given clan
Checks if an account is a member of a given clan response
Sub GC => Master GC, confirm that we've started up successfully so the master can go when all sub GCs are ready
Master GC => Sub GC, the ack came through fine and everything is as expected
Master GC => Sub GC, a routed message that originally came in from a client or the system and has been sent to another GC
Sub GC => Sub/Master GC, a reply message that needs to be sent back from the original GC that received the message
Master GC => Other GCs
Sub GC => Master GC
Master GC => Sub GC
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
Master GC => Sub GC - A steam ID has subscribed to another SO cache (or possibly their own)
Master GC => Sub GC - A steam ID has unsubscribed from another SO cache (or possibly their own)
need to get rid of this!
/ Status of connection to GC. Don't change these values, as they need to be consistent across props, since they are central to handshaking with clients old and new!
Used in:
You have a session. (The status of one or more services may have changed.)
Notification that the entire GC system is going down.
You don't have a session. Please send a hello message to initiate the session creation process.
You don't have a session, but we have your info and will sign you on ASAP. No need to send it again.
Client-side only value. We aren't connected to Steam.
Client-side only value. We were told that we've been suspended from connecting to this GC. No need to try again later.
Used in:
the default for users, which is an account not linked to a provider
linked to a Perfect World account
linked to a Nexon account