import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CContentServerDirectory_GetServersForSteamPipe_Request {
	optional uint32 cell_id = 1 [(description) = "client Cell ID"];
	optional uint32 max_servers = 2 [default = 20, (description) = "max servers in response list"];
	optional string ip_override = 3 [(description) = "client IP address"];
	optional int32 launcher_type = 4 [default = 0, (description) = "launcher type"];
}

message CContentServerDirectory_ServerInfo {
	optional string type = 1;
	optional int32 source_id = 2;
	optional int32 cell_id = 3;
	optional int32 load = 4;
	optional float weighted_load = 5;
	optional int32 num_entries_in_client_list = 6;
	optional bool steam_china_only = 7;
	optional string host = 8;
	optional string vhost = 9;
	optional bool use_as_proxy = 10;
	optional string proxy_request_path_template = 11;
	optional string https_support = 12;
	repeated uint32 allowed_app_ids = 13;
	optional bool preferred_server = 14;
}

message CContentServerDirectory_GetServersForSteamPipe_Response {
	repeated .CContentServerDirectory_ServerInfo servers = 1;
}

message CContentServerDirectory_GetDepotPatchInfo_Request {
	optional uint32 appid = 1;
	optional uint32 depotid = 2;
	optional uint64 source_manifestid = 3;
	optional uint64 target_manifestid = 4;
}

message CContentServerDirectory_GetDepotPatchInfo_Response {
	optional bool is_available = 1;
}

service ContentServerDirectory {
	option (service_description) = "Content Server and CDN directory";

	rpc GetServersForSteamPipe (.CContentServerDirectory_GetServersForSteamPipe_Request) returns (.CContentServerDirectory_GetServersForSteamPipe_Response);
	rpc GetDepotPatchInfo (.CContentServerDirectory_GetDepotPatchInfo_Request) returns (.CContentServerDirectory_GetDepotPatchInfo_Response);
}
