import "steammessages_base.proto"; import "steammessages_unified_base.steamclient.proto"; option cc_generic_services = true; message CGameServers_GetServerList_Request { optional string filter = 1; optional uint32 limit = 2 [default = 100]; } message CGameServers_GetServerList_Response { message Server { optional string addr = 1; optional uint32 gameport = 2; optional uint32 specport = 3; optional fixed64 steamid = 4; optional string name = 5; optional uint32 appid = 6; optional string gamedir = 7; optional string version = 8; optional string product = 9; optional int32 region = 10; optional int32 players = 11; optional int32 max_players = 12; optional int32 bots = 13; optional string map = 14; optional bool secure = 15; optional bool dedicated = 16; optional string os = 17; optional string gametype = 18; } repeated .CGameServers_GetServerList_Response.Server servers = 1; } message CGameServers_GetServerSteamIDsByIP_Request { repeated string server_ips = 1; } message CGameServers_IPsWithSteamIDs_Response { message Server { optional string addr = 1; optional fixed64 steamid = 2; } repeated .CGameServers_IPsWithSteamIDs_Response.Server servers = 1; } message CGameServers_GetServerIPsBySteamID_Request { repeated fixed64 server_steamids = 1; } message CGameServers_QueryByFakeIP_Request { enum EQueryType { Query_Invalid = 0; Query_Ping = 1; Query_Players = 2; Query_Rules = 3; } optional uint32 fake_ip = 1; optional uint32 fake_port = 2; optional uint32 app_id = 3; optional .CGameServers_QueryByFakeIP_Request.EQueryType query_type = 4 [default = Query_Invalid]; } message CMsgGameServerPingQueryData { optional .CMsgIPAddress server_ip = 1; optional uint32 query_port = 2; optional uint32 game_port = 3; optional uint32 spectator_port = 4; optional string spectator_server_name = 5; optional string server_name = 6; optional fixed64 steamid = 7; optional uint32 app_id = 8; optional string gamedir = 9; optional string map = 10; optional string game_description = 11; optional string gametype = 12; optional uint32 num_players = 13; optional uint32 max_players = 14; optional uint32 num_bots = 15; optional bool password = 16; optional bool secure = 17; optional bool dedicated = 18; optional string version = 19; optional fixed32 sdr_popid = 20; optional string sdr_location_string = 21; } message CMsgGameServerPlayersQueryData { message Player { optional string name = 1; optional uint32 score = 2; optional uint32 time_played = 3; } repeated .CMsgGameServerPlayersQueryData.Player players = 1; } message CMsgGameServerRulesQueryData { message Rule { optional string rule = 1; optional string value = 2; } repeated .CMsgGameServerRulesQueryData.Rule rules = 1; } message CGameServers_GameServerQuery_Response { optional .CMsgGameServerPingQueryData ping_data = 1; optional .CMsgGameServerPlayersQueryData players_data = 2; optional .CMsgGameServerRulesQueryData rules_data = 3; } message GameServerClient_QueryServerData_Request { } message GameServerClient_QueryServerData_Response { optional .CMsgGameServerPingQueryData ping_data = 1; optional .CMsgGameServerPlayersQueryData players_data = 2; optional .CMsgGameServerRulesQueryData rules_data = 3; } service GameServers { rpc GetServerList (.CGameServers_GetServerList_Request) returns (.CGameServers_GetServerList_Response); rpc GetServerSteamIDsByIP (.CGameServers_GetServerSteamIDsByIP_Request) returns (.CGameServers_IPsWithSteamIDs_Response); rpc GetServerIPsBySteamID (.CGameServers_GetServerIPsBySteamID_Request) returns (.CGameServers_IPsWithSteamIDs_Response); rpc QueryByFakeIP (.CGameServers_QueryByFakeIP_Request) returns (.CGameServers_GameServerQuery_Response); } service GameServerClient { option (service_execution_site) = k_EProtoExecutionSiteSteamClient; rpc QueryServerData (.GameServerClient_QueryServerData_Request) returns (.GameServerClient_QueryServerData_Response); }