steamkit-protos 0.1.0

This crate is designed to be a bunch of tools for interacting with the Steam API.
Documentation
import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CGameServers_GetServerList_Request {
	optional string filter = 1 [(description) = "Query filter string."];
	optional uint32 limit = 2 [default = 100, (description) = "The maximum number of servers to return in the response"];
}

message CGameServers_GetServerList_Response {
	message Server {
		optional string addr = 1 [(description) = "The server's IP and query port"];
		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 [(description) = "List of servers matching the filter"];
}

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 [(description) = "FakeIP of server to query."];
	optional uint32 fake_port = 2 [(description) = "Fake port of server to query."];
	optional uint32 app_id = 3 [(description) = "AppID to use.  Each AppID has its own FakeIP address."];
	optional .CGameServers_QueryByFakeIP_Request.EQueryType query_type = 4 [default = Query_Invalid, (description) = "What type of query?"];
}

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 {
	option (service_description) = "A service for searching and managing game servers.";

	rpc GetServerList (.CGameServers_GetServerList_Request) returns (.CGameServers_GetServerList_Response) {
		option (method_description) = "Gets a list of servers given a filter string";
	}

	rpc GetServerSteamIDsByIP (.CGameServers_GetServerSteamIDsByIP_Request) returns (.CGameServers_IPsWithSteamIDs_Response) {
		option (method_description) = "Gets a list of server SteamIDs given a list of IPs";
	}

	rpc GetServerIPsBySteamID (.CGameServers_GetServerIPsBySteamID_Request) returns (.CGameServers_IPsWithSteamIDs_Response) {
		option (method_description) = "Gets a list of server IP addresses given a list of SteamIDs";
	}

	rpc QueryByFakeIP (.CGameServers_QueryByFakeIP_Request) returns (.CGameServers_GameServerQuery_Response) {
		option (method_description) = "Perform a query on a specific server by FakeIP";
	}
}

service GameServerClient {
	option (service_description) = "Service methods exposed by GameServer Steam clients";
	option (service_execution_site) = k_EProtoExecutionSiteSteamClient;

	rpc QueryServerData (.GameServerClient_QueryServerData_Request) returns (.GameServerClient_QueryServerData_Response) {
		option (method_description) = "Steam is asking a gameserver for its data";
	}
}