import "steammessages_unified_base.steamclient.proto";
import "steammessages_base.proto";
import "steammessages_clientserver_friends.proto";

message CCommunity_GetApps_Request {
	repeated int32 appids = 1;
}

message CCommunity_GetApps_Response {
	repeated .CCDDBAppDetailCommon apps = 1;
}

message CCommunity_GetAppRichPresenceLocalization_Request {
	optional int32 appid = 1;
	optional string language = 2;
}

message CCommunity_GetAppRichPresenceLocalization_Response {
	optional int32 appid = 1;
	repeated .CCommunity_GetAppRichPresenceLocalization_Response_TokenList token_lists = 2;
}

message CCommunity_GetAppRichPresenceLocalization_Response_Token {
	optional string name = 1;
	optional string value = 2;
}

message CCommunity_GetAppRichPresenceLocalization_Response_TokenList {
	optional string language = 1;
	repeated .CCommunity_GetAppRichPresenceLocalization_Response_Token tokens = 2;
}

message CWebRTCClient_InitiateWebRTCConnection_Request {
	optional string sdp = 1;
}

message CWebRTCClient_InitiateWebRTCConnection_Response {
	optional string remote_description = 1;
}

message CWebRTC_WebRTCSessionConnected_Notification {
	optional uint32 ssrc = 1;
	optional uint32 client_ip = 2;
	optional uint32 client_port = 3;
	optional uint32 server_ip = 4;
	optional uint32 server_port = 5;
}

message CWebRTC_WebRTCUpdateRemoteDescription_Notification {
	optional string remote_description = 1;
	optional uint64 remote_description_version = 2;
	repeated .CWebRTC_WebRTCUpdateRemoteDescription_Notification_CSSRCToAccountIDMapping ssrcs_to_accountids = 3;
}

message CWebRTC_WebRTCUpdateRemoteDescription_Notification_CSSRCToAccountIDMapping {
	optional uint32 ssrc = 1;
	optional uint32 accountid = 2;
}

message CWebRTCClient_AcknowledgeUpdatedRemoteDescription_Request {
	optional uint32 ip_webrtc_server = 1;
	optional uint32 port_webrtc_server = 2;
	optional uint32 ip_webrtc_session_client = 3;
	optional uint32 port_webrtc_session_client = 4;
	optional uint64 remote_description_version = 5;
}

message CWebRTCClient_AcknowledgeUpdatedRemoteDescription_Response {
}

message CVoiceChat_RequestOneOnOneChat_Request {
	optional fixed64 steamid_partner = 1;
}

message CVoiceChat_RequestOneOnOneChat_Response {
	optional fixed64 voice_chatid = 1;
}

message CVoiceChat_OneOnOneChatRequested_Notification {
	optional fixed64 voice_chatid = 1;
	optional fixed64 steamid_partner = 2;
}

message CVoiceChat_AnswerOneOnOneChat_Request {
	optional fixed64 voice_chatid = 1;
	optional fixed64 steamid_partner = 2;
	optional bool accepted_request = 3;
}

message CVoiceChat_AnswerOneOnOneChat_Response {
}

message CVoiceChat_OneOnOneChatRequestResponse_Notification {
	optional fixed64 voicechat_id = 1;
	optional fixed64 steamid_partner = 2;
	optional bool accepted_request = 3;
}

message CVoiceChat_EndOneOnOneChat_Request {
	optional fixed64 steamid_partner = 1;
}

message CVoiceChat_EndOneOnOneChat_Response {
}

message CVoiceChat_LeaveOneOnOneChat_Request {
	optional fixed64 steamid_partner = 1;
	optional fixed64 voice_chatid = 2;
}

message CVoiceChat_LeaveOneOnOneChat_Response {
}

message CVoiceChat_UserJoinedVoiceChat_Notification {
	optional fixed64 voice_chatid = 1;
	optional fixed64 user_steamid = 2;
	optional uint64 chatid = 3;
	optional fixed64 one_on_one_steamid_lower = 4;
	optional fixed64 one_on_one_steamid_higher = 5;
	optional uint64 chat_group_id = 6;
	optional uint32 user_sessionid = 7;
}

message CVoiceChat_UserVoiceStatus_Notification {
	optional fixed64 voice_chatid = 1;
	optional fixed64 user_steamid = 2;
	optional bool user_muted_mic_locally = 3;
	optional bool user_muted_output_locally = 4;
	optional bool user_has_no_mic_for_session = 5;
	optional int32 user_webaudio_sample_rate = 6;
}

message CVoiceChat_AllMembersStatus_Notification {
	optional fixed64 voice_chatid = 1;
	repeated .CVoiceChat_UserVoiceStatus_Notification users = 2;
}

message CVoiceChat_UpdateVoiceChatWebRTCData_Request {
	optional fixed64 voice_chatid = 1;
	optional uint32 ip_webrtc_server = 2;
	optional uint32 port_webrtc_server = 3;
	optional uint32 ip_webrtc_client = 4;
	optional uint32 port_webrtc_client = 5;
	optional uint32 ssrc_my_sending_stream = 6;
	optional string user_agent = 7;
	optional bool has_audio_worklets_support = 8;
}

message CVoiceChat_UpdateVoiceChatWebRTCData_Response {
	optional bool send_client_voice_logs = 1;
}

message CVoiceChat_UploadClientVoiceChatLogs_Request {
	optional fixed64 voice_chatid = 1;
	optional string client_voice_logs_new_lines = 2;
}

message CVoiceChat_UploadClientVoiceChatLogs_Response {
}

message CVoiceChat_LeaveVoiceChat_Response {
}

message CVoiceChat_UserLeftVoiceChat_Notification {
	optional fixed64 voice_chatid = 1;
	optional fixed64 user_steamid = 2;
	optional uint64 chatid = 3;
	optional fixed64 one_on_one_steamid_lower = 4;
	optional fixed64 one_on_one_steamid_higher = 5;
	optional uint64 chat_group_id = 6;
	optional uint32 user_sessionid = 7;
}

message CVoiceChat_VoiceChatEnded_Notification {
	optional fixed64 voice_chatid = 1;
	optional fixed64 one_on_one_steamid_lower = 2;
	optional fixed64 one_on_one_steamid_higher = 3;
	optional uint64 chatid = 4;
	optional uint64 chat_group_id = 5;
}

message CSteamTV_CreateBroadcastChannel_Response {
	optional fixed64 broadcast_channel_id = 1;
}

message CSteamTV_GetBroadcastChannelID_Response {
	optional fixed64 broadcast_channel_id = 1;
	optional string unique_name = 2;
	optional fixed64 steamid = 3;
}

message CSteamTV_SetBroadcastChannelProfile_Response {
}

message CSteamTV_GetBroadcastChannelProfile_Response {
	optional string unique_name = 1;
	optional fixed64 owner_steamid = 2;
	optional string name = 3;
	optional string language = 4;
	optional string headline = 5;
	optional string summary = 6;
	optional string schedule = 7;
	optional string rules = 8;
	optional string panels = 9;
}

message CSteamTV_SetBroadcastChannelImage_Response {
	optional string replace_image_hash = 1;
}

message CSteamTV_GetBroadcastChannelImages_Response {
	repeated .CSteamTV_GetBroadcastChannelImages_Response_Images images = 1;
}

message CSteamTV_GetBroadcastChannelImages_Response_Images {
	optional int32 image_type = 1 [(description) = "enum"];
	optional string image_path = 2;
	optional uint32 image_index = 3;
}

message CSteamTV_GetBroadcastChannelLinks_Response {
	repeated .CSteamTV_GetBroadcastChannelLinks_Response_Links links = 1;
}

message CSteamTV_GetBroadcastChannelLinks_Response_Links {
	optional uint32 link_index = 1;
	optional string url = 2;
	optional string link_description = 3;
	optional uint32 left = 4;
	optional uint32 top = 5;
	optional uint32 width = 6;
	optional uint32 height = 7;
}

message CSteamTV_SetBroadcastChannelLinkRegions_Request_Links {
	optional uint32 link_index = 1;
	optional string url = 2;
	optional string link_description = 3;
	optional uint32 left = 4;
	optional uint32 top = 5;
	optional uint32 width = 6;
	optional uint32 height = 7;
}

message CSteamTV_SetBroadcastChannelLinkRegions_Response {
}

message CSteamTV_GetBroadcastChannelStatus_Response {
	optional bool is_live = 1;
	optional bool is_disabled = 2;
	optional uint32 appid = 3;
	optional uint64 viewers = 4;
	optional uint64 views = 5;
	optional fixed64 broadcaster_steamid = 6;
	optional string thumbnail_url = 7;
	optional uint64 followers = 8;
	optional uint64 subscribers = 9;
}

message GetBroadcastChannelEntry {
	optional fixed64 broadcast_channel_id = 1;
	optional string unique_name = 2;
	optional string name = 3;
	optional uint32 appid = 4;
	optional uint64 viewers = 5;
	optional uint64 views = 6;
	optional string thumbnail_url = 7;
	optional uint64 followers = 8;
	optional string headline = 9;
	optional string avatar_url = 10;
	optional fixed64 broadcaster_steamid = 11;
	optional uint64 subscribers = 12;
	optional string background_url = 13;
	optional bool is_featured = 14;
	optional bool is_disabled = 15;
	optional bool is_live = 16;
	optional string language = 17;
	optional uint32 reports = 18;
}

message CSteamTV_GetFollowedChannels_Response {
	repeated .GetBroadcastChannelEntry results = 1;
}

message CSteamTV_GetSubscribedChannels_Response {
	repeated .GetBroadcastChannelEntry results = 1;
}

message CSteamTV_FollowBroadcastChannel_Response {
	optional bool is_followed = 1;
}

message CSteamTV_SubscribeBroadcastChannel_Response {
	optional bool is_subscribed = 1;
}

message CSteamTV_ReportBroadcastChannel_Response {
}

message CSteamTV_GetBroadcastChannelInteraction_Response {
	optional bool is_followed = 1;
	optional bool is_subscribed = 2;
}

message CSteamTV_Game {
	optional uint32 appid = 1;
	optional string name = 2;
	optional string image = 3;
	optional uint64 viewers = 4;
}

message CSteamTV_GetGames_Response {
	repeated .CSteamTV_Game results = 1;
}

message CSteamTV_GetFeatured_Response {
	repeated .GetBroadcastChannelEntry results = 1;
}

message CSteamTV_GetBroadcastChannelBroadcasters_Response {
	repeated .CSteamTV_GetBroadcastChannelBroadcasters_Response_Broadcaster broadcasters = 1;
}

message CSteamTV_GetBroadcastChannelBroadcasters_Response_Broadcaster {
	optional fixed64 steamid = 1;
	optional string name = 2;
	optional string rtmp_token = 3;
}

message CSteamTV_ChatBan {
	optional fixed64 issuer_steamid = 1;
	optional fixed64 chatter_steamid = 2;
	optional string time_expires = 3;
	optional bool permanent = 4;
	optional string name = 5;
}

message CSteamTV_AddChatBan_Request {
	optional fixed64 broadcast_channel_id = 1;
	optional fixed64 chatter_steamid = 2;
	optional uint32 duration = 3;
	optional bool permanent = 4;
	optional bool undo = 5;
}

message CSteamTV_AddChatBan_Response {
}

message CSteamTV_GetChatBans_Response {
	repeated .CSteamTV_ChatBan results = 1;
}

message CSteamTV_AddChatModerator_Request {
	optional fixed64 broadcast_channel_id = 1;
	optional fixed64 moderator_steamid = 2;
	optional bool undo = 3;
}

message CSteamTV_AddChatModerator_Response {
}

message CSteamTV_GetChatModerators_Request {
	optional fixed64 broadcast_channel_id = 1;
}

message CSteamTV_ChatModerator {
	optional fixed64 steamid = 1;
	optional string name = 2;
}

message CSteamTV_GetChatModerators_Response {
	repeated .CSteamTV_ChatModerator results = 1;
}

message CSteamTV_AddWordBan_Response {
}

message CSteamTV_GetWordBans_Response {
	repeated string results = 1;
}

message CSteamTV_JoinChat_Request {
	optional fixed64 broadcast_channel_id = 1;
}

message CSteamTV_JoinChat_Response {
	optional fixed64 chat_id = 1;
	optional string view_url_template = 2;
}

message CSteamTV_Search_Response {
	repeated .GetBroadcastChannelEntry results = 1;
}

message CSteamTV_GetSteamTVUserSettings_Response {
	optional bool stream_live_email = 1;
	optional bool stream_live_notification = 2;
}

message CSteamTV_SetSteamTVUserSettings_Response {
}

message CSteamTV_GetMyBroadcastChannels_Response {
	repeated .GetBroadcastChannelEntry results = 1;
}

message CFriendsListCategory {
	optional uint32 groupid = 1;
	optional string name = 2;
	repeated uint32 accountid_members = 3;
}

message CFriendsList_GetCategories_Request {
}

message CFriendsList_GetCategories_Response {
	repeated .CFriendsListCategory categories = 1;
}

message CFriendsListFavoriteEntry {
	optional uint32 accountid = 1;
	optional uint32 clanid = 2;
	optional uint64 chat_group_id = 3;
}

message CFriendsList_GetFavorites_Request {
}

message CFriendsList_GetFavorites_Response {
	repeated .CFriendsListFavoriteEntry favorites = 1;
}

message CFriendsList_SetFavorites_Request {
	repeated .CFriendsListFavoriteEntry favorites = 1;
}

message CFriendsList_SetFavorites_Response {
}

message CFriendsList_FavoritesChanged_Notification {
	repeated .CFriendsListFavoriteEntry favorites = 1;
}

message CFriendsList_GetFriendsList_Request {
}

message CFriendsList_GetFriendsList_Response {
	optional .CMsgClientFriendsList friendslist = 1;
}

message CClan_RespondToClanInvite_Request {
	optional fixed64 steamid = 1;
	optional bool accept = 2;
}

message CClan_RespondToClanInvite_Response {
}

message CProductImpressionsFromClient_Notification {
	repeated .CProductImpressionsFromClient_Notification_Impression impressions = 1;
}

message CProductImpressionsFromClient_Notification_Impression {
	optional int32 type = 1 [(description) = "enum"];
	optional uint32 appid = 2;
	optional uint32 num_impressions = 3;
}

message NotImplemented {
}

service Community {
	rpc GetApps (.CCommunity_GetApps_Request) returns (.CCommunity_GetApps_Response);
	rpc GetAppRichPresenceLocalization (.CCommunity_GetAppRichPresenceLocalization_Request) returns (.CCommunity_GetAppRichPresenceLocalization_Response);
}

service WebRTCClient {
	rpc InitiateWebRTCConnection (.CWebRTCClient_InitiateWebRTCConnection_Request) returns (.CWebRTCClient_InitiateWebRTCConnection_Response);
	rpc AcknowledgeUpdatedRemoteDescription (.CWebRTCClient_AcknowledgeUpdatedRemoteDescription_Request) returns (.CWebRTCClient_AcknowledgeUpdatedRemoteDescription_Response);
}

service WebRTCClientNotifications {
	rpc NotifyWebRTCSessionConnected (.CWebRTC_WebRTCSessionConnected_Notification) returns (.NoResponse);
	rpc NotifyWebRTCUpdateRemoteDescription (.CWebRTC_WebRTCUpdateRemoteDescription_Notification) returns (.NoResponse);
}

service VoiceChat {
	rpc UpdateVoiceChatWebRTCData (.CVoiceChat_UpdateVoiceChatWebRTCData_Request) returns (.CVoiceChat_UpdateVoiceChatWebRTCData_Response);
	rpc NotifyUserVoiceStatus (.CVoiceChat_UserVoiceStatus_Notification) returns (.NoResponse);
	rpc UploadClientVoiceChatLogs (.CVoiceChat_UploadClientVoiceChatLogs_Request) returns (.CVoiceChat_UploadClientVoiceChatLogs_Response);
	rpc LeaveVoiceChat (.NotImplemented) returns (.CVoiceChat_LeaveVoiceChat_Response);
	rpc RequestOneOnOneChat (.CVoiceChat_RequestOneOnOneChat_Request) returns (.CVoiceChat_RequestOneOnOneChat_Response);
	rpc AnswerOneOnOneChat (.CVoiceChat_AnswerOneOnOneChat_Request) returns (.CVoiceChat_AnswerOneOnOneChat_Response);
	rpc EndOneOnOneChat (.CVoiceChat_EndOneOnOneChat_Request) returns (.CVoiceChat_EndOneOnOneChat_Response);
	rpc LeaveOneOnOneChat (.CVoiceChat_LeaveOneOnOneChat_Request) returns (.CVoiceChat_LeaveOneOnOneChat_Response);
}

service VoiceChatClient {
	rpc NotifyUserJoinedVoiceChat (.CVoiceChat_UserJoinedVoiceChat_Notification) returns (.NoResponse);
	rpc NotifyUserLeftVoiceChat (.CVoiceChat_UserLeftVoiceChat_Notification) returns (.NoResponse);
	rpc NotifyVoiceChatEnded (.CVoiceChat_VoiceChatEnded_Notification) returns (.NoResponse);
	rpc NotifyUserVoiceStatus (.CVoiceChat_UserVoiceStatus_Notification) returns (.NoResponse);
	rpc NotifyAllUsersVoiceStatus (.CVoiceChat_AllMembersStatus_Notification) returns (.NoResponse);
	rpc NotifyOneOnOneChatRequested (.CVoiceChat_OneOnOneChatRequested_Notification) returns (.NoResponse);
	rpc NotifyOneOnOneChatResponse (.CVoiceChat_OneOnOneChatRequestResponse_Notification) returns (.NoResponse);
}

service SteamTV {
	rpc CreateBroadcastChannel (.NotImplemented) returns (.CSteamTV_CreateBroadcastChannel_Response);
	rpc GetBroadcastChannelID (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelID_Response);
	rpc SetBroadcastChannelProfile (.NotImplemented) returns (.CSteamTV_SetBroadcastChannelProfile_Response);
	rpc GetBroadcastChannelProfile (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelProfile_Response);
	rpc SetBroadcastChannelImage (.NotImplemented) returns (.CSteamTV_SetBroadcastChannelImage_Response);
	rpc GetBroadcastChannelImages (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelImages_Response);
	rpc SetBroadcastChannelLinkRegions (.NotImplemented) returns (.CSteamTV_SetBroadcastChannelLinkRegions_Response);
	rpc GetBroadcastChannelLinks (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelLinks_Response);
	rpc GetBroadcastChannelBroadcasters (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelBroadcasters_Response);
	rpc GetFollowedChannels (.NotImplemented) returns (.CSteamTV_GetFollowedChannels_Response);
	rpc GetSubscribedChannels (.NotImplemented) returns (.CSteamTV_GetSubscribedChannels_Response);
	rpc GetBroadcastChannelStatus (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelStatus_Response);
	rpc FollowBroadcastChannel (.NotImplemented) returns (.CSteamTV_FollowBroadcastChannel_Response);
	rpc SubscribeBroadcastChannel (.NotImplemented) returns (.CSteamTV_SubscribeBroadcastChannel_Response);
	rpc ReportBroadcastChannel (.NotImplemented) returns (.CSteamTV_ReportBroadcastChannel_Response);
	rpc GetBroadcastChannelInteraction (.NotImplemented) returns (.CSteamTV_GetBroadcastChannelInteraction_Response);
	rpc GetGames (.NotImplemented) returns (.CSteamTV_GetGames_Response);
	rpc GetFeatured (.NotImplemented) returns (.CSteamTV_GetFeatured_Response);
	rpc AddChatBan (.CSteamTV_AddChatBan_Request) returns (.CSteamTV_AddChatBan_Response);
	rpc GetChatBans (.NotImplemented) returns (.CSteamTV_GetChatBans_Response);
	rpc AddChatModerator (.CSteamTV_AddChatModerator_Request) returns (.CSteamTV_AddChatModerator_Response);
	rpc GetChatModerators (.CSteamTV_GetChatModerators_Request) returns (.CSteamTV_GetChatModerators_Response);
	rpc AddWordBan (.NotImplemented) returns (.CSteamTV_AddWordBan_Response);
	rpc GetWordBans (.NotImplemented) returns (.CSteamTV_GetWordBans_Response);
	rpc JoinChat (.CSteamTV_JoinChat_Request) returns (.CSteamTV_JoinChat_Response);
	rpc Search (.NotImplemented) returns (.CSteamTV_Search_Response);
	rpc GetSteamTVUserSettings (.NotImplemented) returns (.CSteamTV_GetSteamTVUserSettings_Response);
	rpc SetSteamTVUserSettings (.NotImplemented) returns (.CSteamTV_SetSteamTVUserSettings_Response);
	rpc GetMyBroadcastChannels (.NotImplemented) returns (.CSteamTV_GetMyBroadcastChannels_Response);
}

service FriendsList {
	rpc GetCategories (.CFriendsList_GetCategories_Request) returns (.CFriendsList_GetCategories_Response);
	rpc GetFriendsList (.CFriendsList_GetFriendsList_Request) returns (.CFriendsList_GetFriendsList_Response);
	rpc GetFavorites (.CFriendsList_GetFavorites_Request) returns (.CFriendsList_GetFavorites_Response);
	rpc SetFavorites (.CFriendsList_SetFavorites_Request) returns (.CFriendsList_SetFavorites_Response);
}

service FriendsListClient {
	rpc FavoritesChanged (.CFriendsList_FavoritesChanged_Notification) returns (.NoResponse);
}

service Clan {
	rpc RespondToClanInvite (.CClan_RespondToClanInvite_Request) returns (.CClan_RespondToClanInvite_Response);
}

service ExperimentService {
	rpc ReportProductImpressionsFromClient (.NotImplemented) returns (.NoResponse);
}

