import "steammessages_base.proto"; import "steammessages_unified_base.steamclient.proto"; option cc_generic_services = true; enum EBroadcastWatchLocation { k_EBroadcastWatchLocation_Invalid = 0; k_EBroadcastWatchLocation_SteamTV_Tab = 1; k_EBroadcastWatchLocation_SteamTV_WatchParty = 2; k_EBroadcastWatchLocation_Chat_Tab = 3; k_EBroadcastWatchLocation_Chat_WatchParty = 4; k_EBroadcastWatchLocation_CommunityPage = 5; k_EBroadcastWatchLocation_StoreAppPage = 6; k_EBroadcastWatchLocation_InGame = 7; k_EBroadcastWatchLocation_BigPicture = 8; k_EBroadcastWatchLocation_SalesPage = 9; k_EBroadcastWatchLocation_CuratorPage = 10; k_EBroadcastWatchLocation_DeveloperPage = 11; k_EBroadcastWatchLocation_Chat_Friends = 12; k_EBroadcastWatchLocation_SteamTV_Web = 13; k_EBroadcastWatchLocation_DesktopUI_Overlay = 14; } enum EBroadcastChatPermission { k_EBroadcastChatPermissionPublic = 0; k_EBroadcastChatPermissionOwnsApp = 1; } message CBroadcast_BeginBroadcastSession_Request { optional int32 permission = 1; optional uint64 gameid = 2; optional uint64 client_instance_id = 3; optional string title = 4; optional uint32 cellid = 5; optional uint64 rtmp_token = 6; optional bool thumbnail_upload = 7; optional string client_beta = 8; optional uint32 sysid = 9; optional bool allow_webrtc = 10; } message CBroadcast_BeginBroadcastSession_Response { optional fixed64 broadcast_id = 1; optional string thumbnail_upload_address = 2; optional string thumbnail_upload_token = 3; optional uint32 thumbnail_interval_seconds = 4; optional uint32 heartbeat_interval_seconds = 5; } message CBroadcast_EndBroadcastSession_Request { optional fixed64 broadcast_id = 1; } message CBroadcast_EndBroadcastSession_Response { } message CBroadcast_StartBroadcastUpload_Request { optional fixed64 broadcast_id = 1; optional uint32 cellid = 2; optional bool as_rtmp = 3; optional uint32 delay_seconds = 4; optional uint64 rtmp_token = 5 [default = 0]; optional uint32 upload_ip_address = 6; optional bool is_replay = 7; optional uint32 sysid = 8; } message CBroadcast_StartBroadcastUpload_Response { optional string upload_token = 1; optional string upload_address = 2; optional fixed64 broadcast_upload_id = 3; optional bool enable_replay = 6; optional string http_address = 7; } message CBroadcast_NotifyBroadcastUploadStop_Notification { optional fixed64 broadcast_upload_id = 1; optional uint32 upload_result = 2; } message CBroadcast_WatchBroadcast_Request { optional fixed64 steamid = 1; optional fixed64 existing_broadcast_id = 2; optional fixed64 viewer_token = 3; optional uint32 client_cell = 5; optional .EBroadcastWatchLocation watch_location = 6 [default = k_EBroadcastWatchLocation_Invalid]; optional bool is_webrtc = 7; } message CBroadcast_WatchBroadcast_Response { enum EWatchResponse { k_EWatchResponseReady = 1; k_EWatchResponseNotAvailable = 2; k_EWatchResponseWaitingForApproval = 3; k_EWatchResponseWaitingForStart = 4; k_EWatchResponseInvalidSession = 5; k_EWatchResponseTooManyBroadcasts = 6; k_EWatchResponseWaitingForReconnect = 7; k_EWatchResponseSystemNotSupported = 8; k_EWatchResponseUserRestricted = 9; k_EWatchResponseClientOutOfDate = 10; k_EWatchResponsePoorUploadQuality = 11; k_EWatchResponseMissingSubscription = 12; k_EWatchResponseTooManyViewers = 13; } optional .CBroadcast_WatchBroadcast_Response.EWatchResponse response = 1 [default = k_EWatchResponseReady]; optional string mpd_url = 2; optional fixed64 broadcast_id = 3; optional uint64 gameid = 4; optional string title = 5; optional uint32 num_viewers = 6; optional int32 permission = 7; optional bool is_rtmp = 8; optional int32 seconds_delay = 9; optional fixed64 viewer_token = 10; optional string hls_m3u8_master_url = 11; optional int32 heartbeat_interval = 12; optional string thumbnail_url = 13; optional bool is_webrtc = 14; optional fixed64 webrtc_session_id = 15; optional string webrtc_offer_sdp = 16; optional string webrtc_turn_server = 17; optional bool is_replay = 18; optional int32 duration = 19; optional string cdn_auth_url_parameters = 20; } message CBroadcast_HeartbeatBroadcast_Notification { optional fixed64 steamid = 1; optional fixed64 broadcast_id = 2; optional fixed64 viewer_token = 3; optional uint32 representation = 4; } message CBroadcast_StopWatchingBroadcast_Notification { optional fixed64 steamid = 1; optional fixed64 broadcast_id = 2; optional fixed64 viewer_token = 3; } message CBroadcast_GetBroadcastStatus_Request { optional fixed64 steamid = 1; optional fixed64 broadcast_id = 2; } message CBroadcast_GetBroadcastStatus_Response { optional uint64 gameid = 1; optional string title = 2; optional uint32 num_viewers = 3; optional int32 permission = 4; optional bool is_rtmp = 5; optional int32 seconds_delay = 6; optional bool is_publisher = 7; optional string thumbnail_url = 8; optional int32 update_interval = 9; optional bool is_uploading = 10; optional uint32 duration = 11; optional bool is_replay = 12; optional bool is_capturing_vod = 13; optional bool is_store_whitelisted = 14; } message CBroadcast_GetBroadcastThumbnail_Request { optional fixed64 steamid = 1; optional fixed64 broadcast_id = 2; } message CBroadcast_GetBroadcastThumbnail_Response { optional string thumbnail_url = 1; optional int32 update_interval = 2; optional int32 num_viewers = 3; optional int32 duration = 4; } message CBroadcast_InviteToBroadcast_Request { optional fixed64 steamid = 1; optional bool approval_response = 2; } message CBroadcast_InviteToBroadcast_Response { optional bool success = 1; } message CBroadcast_SendBroadcastStateToServer_Request { optional int32 permission = 1; optional uint64 gameid = 2; optional string title = 3; optional string game_data_config = 4; } message CBroadcast_SendBroadcastStateToServer_Response { } message CBroadcast_NotifyBroadcastSessionHeartbeat_Notification { optional fixed64 broadcast_id = 1; } message CBroadcast_GetBroadcastChatInfo_Request { optional fixed64 steamid = 1; optional fixed64 broadcast_id = 2; optional uint32 client_ip = 3; optional uint32 client_cell = 4; } message CBroadcast_GetBroadcastChatInfo_Response { optional fixed64 chat_id = 1; optional string view_url_template = 3; repeated uint32 flair_group_ids = 4; } message CBroadcast_PostChatMessage_Request { optional fixed64 chat_id = 1; optional string message = 2; optional uint32 instance_id = 3; optional uint32 language = 4 [default = 0]; optional string country_code = 5; } message CBroadcast_PostChatMessage_Response { optional string persona_name = 1; optional bool in_game = 2; optional int32 result = 3; optional int32 cooldown_time_seconds = 4; } message CBroadcast_UpdateChatMessageFlair_Request { optional fixed64 chat_id = 1; optional string flair = 2; } message CBroadcast_UpdateChatMessageFlair_Response { optional int32 result = 1; optional fixed64 chat_id = 2; optional string flair = 3; } message CBroadcast_MuteBroadcastChatUser_Request { optional fixed64 chat_id = 1; optional fixed64 user_steamid = 2; optional bool muted = 3; } message CBroadcast_MuteBroadcastChatUser_Response { } message CBroadcast_RemoveUserChatText_Request { optional fixed64 chat_id = 1; optional fixed64 user_steamid = 2; } message CBroadcast_RemoveUserChatText_Response { } message CBroadcast_GetBroadcastChatUserNames_Request { optional fixed64 chat_id = 1; repeated fixed64 user_steamid = 2; } message CBroadcast_GetBroadcastChatUserNames_Response { message PersonaName { optional fixed64 steam_id = 1 [(allow_field_named_steam_id) = true]; optional string persona = 2; } repeated .CBroadcast_GetBroadcastChatUserNames_Response.PersonaName persona_names = 1; } message CBroadcast_StartBuildClip_Request { optional fixed64 steamid = 1; optional fixed64 broadcast_session_id = 2; optional int32 first_segment = 3; optional int32 num_segments = 4; optional string clip_description = 5; } message CBroadcast_StartBuildClip_Response { optional fixed64 broadcast_clip_id = 1; } message CBroadcast_GetBuildClipStatus_Request { optional fixed64 broadcast_clip_id = 1; } message CBroadcast_GetBuildClipStatus_Response { } message CBroadcast_SetClipDetails_Request { optional uint64 broadcast_clip_id = 1; optional uint32 start_time = 2; optional uint32 end_time = 3; optional string video_description = 4; } message CBroadcast_SetClipDetails_Response { } message CBroadcast_GetClipDetails_Request { optional uint64 broadcast_clip_id = 1; } message CBroadcast_GetClipDetails_Response { optional uint64 broadcast_clip_id = 1; optional uint64 video_id = 2; optional uint64 channel_id = 3; optional uint32 app_id = 4; optional uint32 accountid_broadcaster = 5; optional uint32 accountid_clipmaker = 6; optional string video_description = 7; optional uint32 start_time = 8; optional uint32 length_milliseconds = 9; optional string thumbnail_path = 10; } message CBroadcast_SetRTMPInfo_Request { optional int32 broadcast_permission = 1; optional bool update_token = 2; optional int32 broadcast_delay = 3; optional uint32 app_id = 4; optional uint32 required_app_id = 5; optional .EBroadcastChatPermission broadcast_chat_permission = 6 [default = k_EBroadcastChatPermissionPublic]; optional int32 broadcast_buffer = 7; optional fixed64 steamid = 8; optional uint32 chat_rate_limit = 9; optional bool enable_replay = 10; optional bool is_partner_chat_only = 11; optional string wordban_list = 12; } message CBroadcast_SetRTMPInfo_Response { } message CBroadcast_GetRTMPInfo_Request { optional uint32 ip = 1; optional fixed64 steamid = 2; } message CBroadcast_GetRTMPInfo_Response { optional int32 broadcast_permission = 1; optional string rtmp_host = 2; optional string rtmp_token = 3; optional int32 broadcast_delay = 4; optional uint32 app_id = 5; optional uint32 required_app_id = 6; optional .EBroadcastChatPermission broadcast_chat_permission = 7 [default = k_EBroadcastChatPermissionPublic]; optional int32 broadcast_buffer = 8; optional fixed64 steamid = 9; optional uint32 chat_rate_limit = 10; optional bool enable_replay = 11; optional bool is_partner_chat_only = 12; optional string wordban_list = 13; } message CBroadcast_WebRTCHaveTURNServer_Notification { optional fixed64 broadcast_session_id = 1; optional string turn_server = 2; } message CBroadcast_WebRTCStartResult_Request { optional fixed64 webrtc_session_id = 1; optional bool started = 2; optional string offer = 3; optional uint32 resolution_x = 4; optional uint32 resolution_y = 5; optional uint32 fps = 6; } message CBroadcast_WebRTCStartResult_Response { } message CBroadcast_WebRTCStopped_Request { optional fixed64 webrtc_session_id = 1; } message CBroadcast_WebRTCStopped_Response { } message CBroadcast_WebRTCSetAnswer_Request { optional fixed64 broadcaster_steamid = 1; optional fixed64 webrtc_session_id = 2; optional string answer = 3; } message CBroadcast_WebRTCSetAnswer_Response { } message CBroadcast_WebRTCLookupTURNServer_Request { optional uint32 cellid = 1; } message CBroadcast_WebRTCLookupTURNServer_Response { optional string turn_server = 1; } message CBroadcast_WebRTC_Candidate { optional string sdp_mid = 1; optional int32 sdp_mline_index = 2; optional string candidate = 3; } message CBroadcast_WebRTCAddHostCandidate_Request { optional fixed64 webrtc_session_id = 1; optional .CBroadcast_WebRTC_Candidate candidate = 2; } message CBroadcast_WebRTCAddHostCandidate_Response { } message CBroadcast_WebRTCAddViewerCandidate_Request { optional fixed64 broadcaster_steamid = 1; optional fixed64 webrtc_session_id = 2; optional .CBroadcast_WebRTC_Candidate candidate = 3; } message CBroadcast_WebRTCAddViewerCandidate_Response { } message CBroadcast_WebRTCGetHostCandidates_Request { optional fixed64 broadcaster_steamid = 1; optional fixed64 webrtc_session_id = 2; optional uint32 candidate_generation = 3; } message CBroadcast_WebRTCGetHostCandidates_Response { optional uint32 candidate_generation = 1; repeated .CBroadcast_WebRTC_Candidate candidates = 2; } message CBroadcast_GetBroadcastUploadStats_Request { optional uint32 row_limit = 1 [default = 100]; optional uint32 start_time = 2 [default = 0]; optional uint64 upload_id = 3; optional fixed64 steamid = 4; optional uint64 session_id = 5; } message CBroadcast_GetBroadcastUploadStats_Response { message UploadStats { optional uint32 upload_result = 1; optional uint32 time_stopped = 2; optional uint32 seconds_uploaded = 3; optional uint32 max_viewers = 4; optional uint32 resolution_x = 5; optional uint32 resolution_y = 6; optional uint32 avg_bandwidth = 7; optional uint64 total_bytes = 8; optional uint32 app_id = 9; optional uint32 total_unique_viewers = 10; optional uint64 total_seconds_watched = 11; optional uint32 time_started = 12; optional uint64 upload_id = 13; optional string local_address = 14; optional string remote_address = 15; optional uint32 frames_per_second = 16; optional uint32 num_representations = 17; optional string app_name = 18; optional bool is_replay = 19; optional uint64 session_id = 20; } repeated .CBroadcast_GetBroadcastUploadStats_Response.UploadStats upload_stats = 1; } message CBroadcast_GetBroadcastViewerStats_Request { optional uint64 upload_id = 1; optional fixed64 steamid = 2; } message CBroadcast_GetBroadcastViewerStats_Response { message ViewerStats { optional uint32 time = 1; optional uint32 num_viewers = 2; } message CountryStats { optional string country_code = 1; optional uint32 num_viewers = 2; } repeated .CBroadcast_GetBroadcastViewerStats_Response.ViewerStats viewer_stats = 1; repeated .CBroadcast_GetBroadcastViewerStats_Response.CountryStats country_stats = 2; } message CBroadcast_BroadcastViewerState_Notification { enum EViewerState { k_EViewerNeedsApproval = 1; k_EViewerWatching = 2; k_EViewerLeft = 3; } optional fixed64 steamid = 1; optional .CBroadcast_BroadcastViewerState_Notification.EViewerState state = 2 [default = k_EViewerNeedsApproval]; } message CBroadcast_WaitingBroadcastViewer_Notification { optional fixed64 broadcast_id = 1; } message CBroadcast_BroadcastUploadStarted_Notification { optional fixed64 broadcast_id = 1; optional string upload_token = 2; optional string upload_address = 3; optional string http_address = 4; optional fixed64 broadcast_upload_id = 5; optional uint32 heartbeat_interval_seconds = 6; optional bool is_rtmp = 7; } message CBroadcast_StopBroadcastUpload_Notification { optional fixed64 broadcast_id = 1; optional fixed64 broadcast_relay_id = 2; optional uint32 upload_result = 3; optional bool too_many_poor_uploads = 4; } message CBroadcast_SessionClosed_Notification { optional fixed64 broadcast_id = 1; } message CBroadcast_ViewerBroadcastInvite_Notification { optional fixed64 broadcaster_steamid = 1; } message CBroadcast_BroadcastStatus_Notification { optional fixed64 broadcast_id = 1; optional int32 num_viewers = 2; } message CBroadcast_BroadcastChannelLive_Notification { optional fixed64 broadcast_channel_id = 1; optional string broadcast_channel_name = 2; optional string broadcast_channel_avatar = 3; } message CBroadcast_SendThumbnailToRelay_Notification { optional string thumbnail_upload_token = 1; optional fixed64 thumbnail_broadcast_session_id = 2; optional bytes thumbnail_data = 3; optional uint32 thumbnail_width = 4; optional uint32 thumbnail_height = 5; } message CBroadcast_WebRTCNeedTURNServer_Notification { optional fixed64 broadcast_session_id = 1; } message CBroadcast_WebRTCStart_Notification { optional fixed64 broadcast_session_id = 1; optional fixed64 webrtc_session_id = 2; optional fixed64 viewer_steamid = 3; optional fixed64 viewer_token = 4; } message CBroadcast_WebRTCSetAnswer_Notification { optional fixed64 broadcast_session_id = 1; optional fixed64 webrtc_session_id = 2; optional string answer = 3; } message CBroadcast_WebRTCAddViewerCandidate_Notification { optional fixed64 broadcast_session_id = 1; optional fixed64 webrtc_session_id = 2; optional .CBroadcast_WebRTC_Candidate candidate = 3; } service Broadcast { rpc BeginBroadcastSession (.CBroadcast_BeginBroadcastSession_Request) returns (.CBroadcast_BeginBroadcastSession_Response); rpc EndBroadcastSession (.CBroadcast_EndBroadcastSession_Request) returns (.CBroadcast_EndBroadcastSession_Response); rpc StartBroadcastUpload (.CBroadcast_StartBroadcastUpload_Request) returns (.CBroadcast_StartBroadcastUpload_Response); rpc NotifyBroadcastUploadStop (.CBroadcast_NotifyBroadcastUploadStop_Notification) returns (.NoResponse); rpc WatchBroadcast (.CBroadcast_WatchBroadcast_Request) returns (.CBroadcast_WatchBroadcast_Response); rpc HeartbeatBroadcast (.CBroadcast_HeartbeatBroadcast_Notification) returns (.NoResponse); rpc StopWatchingBroadcast (.CBroadcast_StopWatchingBroadcast_Notification) returns (.NoResponse); rpc GetBroadcastStatus (.CBroadcast_GetBroadcastStatus_Request) returns (.CBroadcast_GetBroadcastStatus_Response); rpc GetBroadcastThumbnail (.CBroadcast_GetBroadcastThumbnail_Request) returns (.CBroadcast_GetBroadcastThumbnail_Response); rpc InviteToBroadcast (.CBroadcast_InviteToBroadcast_Request) returns (.CBroadcast_InviteToBroadcast_Response); rpc SendBroadcastStateToServer (.CBroadcast_SendBroadcastStateToServer_Request) returns (.CBroadcast_SendBroadcastStateToServer_Response); rpc NotifyBroadcastSessionHeartbeat (.CBroadcast_NotifyBroadcastSessionHeartbeat_Notification) returns (.NoResponse); rpc GetBroadcastChatInfo (.CBroadcast_GetBroadcastChatInfo_Request) returns (.CBroadcast_GetBroadcastChatInfo_Response); rpc PostChatMessage (.CBroadcast_PostChatMessage_Request) returns (.CBroadcast_PostChatMessage_Response); rpc UpdateChatMessageFlair (.CBroadcast_UpdateChatMessageFlair_Request) returns (.CBroadcast_UpdateChatMessageFlair_Response); rpc MuteBroadcastChatUser (.CBroadcast_MuteBroadcastChatUser_Request) returns (.CBroadcast_MuteBroadcastChatUser_Response); rpc RemoveUserChatText (.CBroadcast_RemoveUserChatText_Request) returns (.CBroadcast_RemoveUserChatText_Response); rpc GetBroadcastChatUserNames (.CBroadcast_GetBroadcastChatUserNames_Request) returns (.CBroadcast_GetBroadcastChatUserNames_Response); rpc StartBuildClip (.CBroadcast_StartBuildClip_Request) returns (.CBroadcast_StartBuildClip_Response); rpc GetBuildClipStatus (.CBroadcast_GetBuildClipStatus_Request) returns (.CBroadcast_GetBuildClipStatus_Response); rpc SetClipDetails (.CBroadcast_SetClipDetails_Request) returns (.CBroadcast_SetClipDetails_Response); rpc GetClipDetails (.CBroadcast_GetClipDetails_Request) returns (.CBroadcast_GetClipDetails_Response); rpc SetRTMPInfo (.CBroadcast_SetRTMPInfo_Request) returns (.CBroadcast_SetRTMPInfo_Response); rpc GetRTMPInfo (.CBroadcast_GetRTMPInfo_Request) returns (.CBroadcast_GetRTMPInfo_Response); rpc NotifyWebRTCHaveTURNServer (.CBroadcast_WebRTCHaveTURNServer_Notification) returns (.NoResponse); rpc WebRTCStartResult (.CBroadcast_WebRTCStartResult_Request) returns (.CBroadcast_WebRTCStartResult_Response); rpc WebRTCStopped (.CBroadcast_WebRTCStopped_Request) returns (.CBroadcast_WebRTCStopped_Response); rpc WebRTCSetAnswer (.CBroadcast_WebRTCSetAnswer_Request) returns (.CBroadcast_WebRTCSetAnswer_Response); rpc WebRTCLookupTURNServer (.CBroadcast_WebRTCLookupTURNServer_Request) returns (.CBroadcast_WebRTCLookupTURNServer_Response); rpc WebRTCAddHostCandidate (.CBroadcast_WebRTCAddHostCandidate_Request) returns (.CBroadcast_WebRTCAddHostCandidate_Response); rpc WebRTCAddViewerCandidate (.CBroadcast_WebRTCAddViewerCandidate_Request) returns (.CBroadcast_WebRTCAddViewerCandidate_Response); rpc WebRTCGetHostCandidates (.CBroadcast_WebRTCGetHostCandidates_Request) returns (.CBroadcast_WebRTCGetHostCandidates_Response); rpc GetBroadcastUploadStats (.CBroadcast_GetBroadcastUploadStats_Request) returns (.CBroadcast_GetBroadcastUploadStats_Response); rpc GetBroadcastViewerStats (.CBroadcast_GetBroadcastViewerStats_Request) returns (.CBroadcast_GetBroadcastViewerStats_Response); } service BroadcastClient { option (service_execution_site) = k_EProtoExecutionSiteSteamClient; rpc NotifyBroadcastViewerState (.CBroadcast_BroadcastViewerState_Notification) returns (.NoResponse); rpc NotifyWaitingBroadcastViewer (.CBroadcast_WaitingBroadcastViewer_Notification) returns (.NoResponse); rpc NotifyBroadcastUploadStarted (.CBroadcast_BroadcastUploadStarted_Notification) returns (.NoResponse); rpc NotifyStopBroadcastUpload (.CBroadcast_StopBroadcastUpload_Notification) returns (.NoResponse); rpc NotifySessionClosed (.CBroadcast_SessionClosed_Notification) returns (.NoResponse); rpc NotifyViewerBroadcastInvite (.CBroadcast_ViewerBroadcastInvite_Notification) returns (.NoResponse); rpc NotifyBroadcastStatus (.CBroadcast_BroadcastStatus_Notification) returns (.NoResponse); rpc NotifyBroadcastChannelLive (.CBroadcast_BroadcastChannelLive_Notification) returns (.NoResponse); rpc SendThumbnailToRelay (.CBroadcast_SendThumbnailToRelay_Notification) returns (.NoResponse); rpc NotifyWebRTCNeedTURNServer (.CBroadcast_WebRTCNeedTURNServer_Notification) returns (.NoResponse); rpc NotifyWebRTCStart (.CBroadcast_WebRTCStart_Notification) returns (.NoResponse); rpc NotifyWebRTCSetAnswer (.CBroadcast_WebRTCSetAnswer_Notification) returns (.NoResponse); rpc NotifyWebRTCAddViewerCandidate (.CBroadcast_WebRTCAddViewerCandidate_Notification) returns (.NoResponse); }