syntax = "proto2";
import "steammessages_base.proto";
import "steammessages_unified_base.proto";
import "enums.proto";

option py_generic_services = true;

enum EProfileCustomizationStyle {
	k_EProfileCustomizationStyleDefault = 0;
	k_EProfileCustomizationStyleSelected = 1;
	k_EProfileCustomizationStyleRarest = 2;
	k_EProfileCustomizationStyleMostRecent = 3;
	k_EProfileCustomizationStyleRandom = 4;
	k_EProfileCustomizationStyleHighestRated = 5;
}

enum EAgreementType {
	k_EAgreementType_Invalid = -1;
	k_EAgreementType_GlobalSSA = 0;
	k_EAgreementType_ChinaSSA = 1;
}

enum ENotificationSetting {
	k_ENotificationSettingNotifyUseDefault = 0;
	k_ENotificationSettingAlways = 1;
	k_ENotificationSettingNever = 2;
}

enum ETextFilterSetting {
	k_ETextFilterSettingSteamLabOptedOut = 0;
	k_ETextFilterSettingEnabled = 1;
	k_ETextFilterSettingEnabledAllowProfanity = 2;
	k_ETextFilterSettingDisabled = 3;
}

message CPlayer_GetRecentPlaytimeSessionsForChild_Request {
	optional uint64 steamid = 1;
}

message CPlayer_GetRecentPlaytimeSessionsForChild_Response {
	message PlaytimeSession {
		optional uint32 time_start = 1;
		optional uint32 time_end = 2;
		optional uint32 appid = 3;
		optional uint32 device_type = 4;
		optional bool disconnected = 5;
	}

	repeated .CPlayer_GetRecentPlaytimeSessionsForChild_Response.PlaytimeSession sessions = 1;
}

message CPlayer_GetPlayerLinkDetails_Request {
	repeated uint64 steamids = 1;
}

message CPlayer_GetPlayerLinkDetails_Response {
	message PlayerLinkDetails {
		message AccountPublicData {
			required fixed64 steamid = 1;
			optional int32 visibility_state = 2;
			optional int32 privacy_state = 3;
			optional int32 profile_state = 4;
			optional uint32 ban_expires_time = 7;
			optional uint32 account_flags = 8;
			optional bytes sha_digest_avatar = 9;
			optional string persona_name = 10;
			optional string profile_url = 11;
			optional bool content_country_restricted = 12;
		}

		message AccountPrivateData {
			optional int32 persona_state = 1;
			optional uint32 persona_state_flags = 2;
			optional uint32 time_created = 3;
			optional fixed64 game_id = 4;
			optional fixed64 game_server_steam_id = 5;
			optional uint32 game_server_ip_address = 6;
			optional uint32 game_server_port = 7;
			optional string game_extra_info = 8;
			optional string account_name = 9;
			optional fixed64 lobby_steam_id = 10;
			optional string rich_presence_kv = 11;
			optional fixed64 broadcast_session_id = 12;
			optional uint32 watching_broadcast_accountid = 13;
			optional uint32 watching_broadcast_appid = 14;
			optional uint32 watching_broadcast_viewers = 15;
			optional string watching_broadcast_title = 16;
			optional uint32 last_logoff_time = 17;
			optional uint32 last_seen_online = 18;
			optional int32 game_os_type = 19;
			optional int32 game_device_type = 20;
			optional string game_device_name = 21;
			optional bool game_is_private = 22;
		}

		optional .CPlayer_GetPlayerLinkDetails_Response.PlayerLinkDetails.AccountPublicData public_data = 1;
		optional .CPlayer_GetPlayerLinkDetails_Response.PlayerLinkDetails.AccountPrivateData private_data = 2;
	}

	repeated .CPlayer_GetPlayerLinkDetails_Response.PlayerLinkDetails accounts = 1;
}

message CPlayer_GetMutualFriendsForIncomingInvites_Request {
}

message CPlayer_IncomingInviteMutualFriendList {
	optional fixed64 steamid = 1;
	repeated uint32 mutual_friend_account_ids = 2;
}

message CPlayer_GetMutualFriendsForIncomingInvites_Response {
	repeated .CPlayer_IncomingInviteMutualFriendList incoming_invite_mutual_friends_lists = 1;
}

message CPlayer_GetOwnedGames_Request {
	optional uint64 steamid = 1;
	optional bool include_appinfo = 2;
	optional bool include_played_free_games = 3;
	repeated uint32 appids_filter = 4;
	optional bool include_free_sub = 5;
	optional bool skip_unvetted_apps = 6 [default = true];
	optional string language = 7;
	optional bool include_extended_appinfo = 8;
}

message CPlayer_GetOwnedGames_Response {
	message Game {
		optional int32 appid = 1;
		optional string name = 2;
		optional int32 playtime_2weeks = 3;
		optional int32 playtime_forever = 4;
		optional string img_icon_url = 5;
		optional bool has_community_visible_stats = 7;
		optional int32 playtime_windows_forever = 8;
		optional int32 playtime_mac_forever = 9;
		optional int32 playtime_linux_forever = 10;
		optional int32 playtime_deck_forever = 20;
		optional uint32 rtime_last_played = 11;
		optional string capsule_filename = 12;
		optional string sort_as = 13;
		optional bool has_workshop = 14;
		optional bool has_market = 15;
		optional bool has_dlc = 16;
		optional bool has_leaderboards = 17;
		repeated uint32 content_descriptorids = 18;
		optional int32 playtime_disconnected = 19;
	}

	optional uint32 game_count = 1;
	repeated .CPlayer_GetOwnedGames_Response.Game games = 2;
}

message CPlayer_GetPlayNext_Request {
	optional uint32 max_age_seconds = 1;
	repeated uint32 ignore_appids = 2;
}

message CPlayer_GetPlayNext_Response {
	optional uint32 last_update_time = 1;
	repeated uint32 appids = 2;
}

message CPlayer_GetFriendsGameplayInfo_Request {
	optional uint32 appid = 1;
}

message CPlayer_GetFriendsGameplayInfo_Response {
	message FriendsGameplayInfo {
		optional fixed64 steamid = 1;
		optional uint32 minutes_played = 2;
		optional uint32 minutes_played_forever = 3;
	}

	message OwnGameplayInfo {
		optional fixed64 steamid = 1;
		optional uint32 minutes_played = 2;
		optional uint32 minutes_played_forever = 3;
		optional bool in_wishlist = 4;
		optional bool owned = 5;
	}

	optional .CPlayer_GetFriendsGameplayInfo_Response.OwnGameplayInfo your_info = 1;
	repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo in_game = 2;
	repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo played_recently = 3;
	repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo played_ever = 4;
	repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo owns = 5;
	repeated .CPlayer_GetFriendsGameplayInfo_Response.FriendsGameplayInfo in_wishlist = 6;
}

message CPlayer_GetGameBadgeLevels_Request {
	optional uint32 appid = 1;
}

message CPlayer_GetGameBadgeLevels_Response {
	message Badge {
		optional int32 level = 1;
		optional int32 series = 2;
		optional uint32 border_color = 3;
	}

	optional uint32 player_level = 1;
	repeated .CPlayer_GetGameBadgeLevels_Response.Badge badges = 2;
}

message CPlayer_GetProfileBackground_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message ProfileItem {
	message ProfileColor {
		optional string style_name = 1;
		optional string color = 2;
	}

	optional uint64 communityitemid = 1;
	optional string image_small = 2;
	optional string image_large = 3;
	optional string name = 4;
	optional string item_title = 5;
	optional string item_description = 6;
	optional uint32 appid = 7;
	optional uint32 item_type = 8;
	optional uint32 item_class = 9;
	optional string movie_webm = 10;
	optional string movie_mp4 = 11;
	optional string movie_webm_small = 13;
	optional string movie_mp4_small = 14;
	optional uint32 equipped_flags = 12;
	repeated .ProfileItem.ProfileColor profile_colors = 15;
	optional bool tiled = 16;
}

message CPlayer_GetProfileBackground_Response {
	optional .ProfileItem profile_background = 1;
}

message CPlayer_SetProfileBackground_Request {
	optional uint64 communityitemid = 1;
}

message CPlayer_SetProfileBackground_Response {
}

message CPlayer_GetMiniProfileBackground_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message CPlayer_GetMiniProfileBackground_Response {
	optional .ProfileItem profile_background = 1;
}

message CPlayer_SetMiniProfileBackground_Request {
	optional uint64 communityitemid = 1;
}

message CPlayer_SetMiniProfileBackground_Response {
}

message CPlayer_GetAvatarFrame_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message CPlayer_GetAvatarFrame_Response {
	optional .ProfileItem avatar_frame = 1;
}

message CPlayer_SetAvatarFrame_Request {
	optional uint64 communityitemid = 1;
}

message CPlayer_SetAvatarFrame_Response {
}

message CPlayer_GetAnimatedAvatar_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message CPlayer_GetAnimatedAvatar_Response {
	optional .ProfileItem avatar = 1;
}

message CPlayer_SetAnimatedAvatar_Request {
	optional uint64 communityitemid = 1;
}

message CPlayer_SetAnimatedAvatar_Response {
}

message CPlayer_GetSteamDeckKeyboardSkin_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message CPlayer_GetSteamDeckKeyboardSkin_Response {
	optional .ProfileItem steam_deck_keyboard_skin = 1;
}

message CPlayer_SetSteamDeckKeyboardSkin_Request {
	optional uint64 communityitemid = 1;
}

message CPlayer_SetSteamDeckKeyboardSkin_Response {
}

message CPlayer_GetProfileItemsOwned_Request {
	optional string language = 1;
	repeated .ECommunityItemClass filters = 2;
}

message CPlayer_GetProfileItemsOwned_Response {
	repeated .ProfileItem profile_backgrounds = 1;
	repeated .ProfileItem mini_profile_backgrounds = 2;
	repeated .ProfileItem avatar_frames = 3;
	repeated .ProfileItem animated_avatars = 4;
	repeated .ProfileItem profile_modifiers = 5;
	repeated .ProfileItem steam_deck_keyboard_skins = 6;
	repeated .ProfileItem steam_deck_startup_movies = 7;
}

message CPlayer_GetProfileItemsEquipped_Request {
	optional fixed64 steamid = 1;
	optional string language = 2;
}

message CPlayer_GetProfileItemsEquipped_Response {
	optional .ProfileItem profile_background = 1;
	optional .ProfileItem mini_profile_background = 2;
	optional .ProfileItem avatar_frame = 3;
	optional .ProfileItem animated_avatar = 4;
	optional .ProfileItem profile_modifier = 5;
	optional .ProfileItem steam_deck_keyboard_skin = 6;
}

message CPlayer_SetEquippedProfileItemFlags_Request {
	optional uint64 communityitemid = 1;
	optional uint32 flags = 2;
}

message CPlayer_SetEquippedProfileItemFlags_Response {
}

message CPlayer_GetEmoticonList_Request {
}

message CPlayer_GetEmoticonList_Response {
	message Emoticon {
		optional string name = 1;
		optional int32 count = 2;
		optional uint32 time_last_used = 3;
		optional uint32 use_count = 4;
		optional uint32 time_received = 5;
		optional uint32 appid = 6;
	}

	repeated .CPlayer_GetEmoticonList_Response.Emoticon emoticons = 1;
}

message CPlayer_GetCommunityBadgeProgress_Request {
	optional uint64 steamid = 1;
	optional int32 badgeid = 2;
}

message CPlayer_GetCommunityBadgeProgress_Response {
	message Quest {
		optional uint32 questid = 1;
		optional bool completed = 2;
	}

	repeated .CPlayer_GetCommunityBadgeProgress_Response.Quest quests = 1;
}

message CPlayer_GetTopAchievementsForGames_Request {
	optional uint64 steamid = 1;
	optional string language = 2;
	optional uint32 max_achievements = 3;
	repeated uint32 appids = 4;
}

message CPlayer_GetTopAchievementsForGames_Response {
	message Achievement {
		optional uint32 statid = 1;
		optional uint32 bit = 2;
		optional string name = 3;
		optional string desc = 4;
		optional string icon = 5;
		optional string icon_gray = 6;
		optional bool hidden = 7;
		optional string player_percent_unlocked = 8;
	}

	message Game {
		optional uint32 appid = 1;
		optional uint32 total_achievements = 2;
		repeated .CPlayer_GetTopAchievementsForGames_Response.Achievement achievements = 3;
	}

	repeated .CPlayer_GetTopAchievementsForGames_Response.Game games = 1;
}

message CPlayer_GetAchievementsProgress_Request {
	optional uint64 steamid = 1;
	optional string language = 2;
	repeated uint32 appids = 3;
	optional bool include_unvetted_apps = 4;
}

message CPlayer_GetAchievementsProgress_Response {
	message AchievementProgress {
		optional uint32 appid = 1;
		optional uint32 unlocked = 2;
		optional uint32 total = 3;
		optional float percentage = 4;
		optional bool all_unlocked = 5;
		optional uint32 cache_time = 6;
		optional bool vetted = 7;
	}

	repeated .CPlayer_GetAchievementsProgress_Response.AchievementProgress achievement_progress = 1;
}

message CPlayer_GetGameAchievements_Request {
	optional uint32 appid = 1;
	optional string language = 2;
}

message CPlayer_GetGameAchievements_Response {
	message Achievement {
		optional string internal_name = 1;
		optional string localized_name = 2;
		optional string localized_desc = 3;
		optional string icon = 4;
		optional string icon_gray = 5;
		optional bool hidden = 6;
		optional string player_percent_unlocked = 7;
	}

	repeated .CPlayer_GetGameAchievements_Response.Achievement achievements = 1;
}

message CPlayer_GetFavoriteBadge_Request {
	optional uint64 steamid = 1;
}

message CPlayer_GetFavoriteBadge_Response {
	optional bool has_favorite_badge = 1;
	optional uint32 badgeid = 2;
	optional uint64 communityitemid = 3;
	optional uint32 item_type = 4;
	optional uint32 border_color = 5;
	optional uint32 appid = 6;
	optional uint32 level = 7;
}

message CPlayer_SetFavoriteBadge_Request {
	optional uint64 communityitemid = 1;
	optional uint32 badgeid = 2;
}

message CPlayer_SetFavoriteBadge_Response {
}

message CPlayer_GetProfileCustomization_Request {
	optional fixed64 steamid = 1;
	optional bool include_inactive_customizations = 2;
	optional bool include_purchased_customizations = 3;
}

message ProfileCustomizationSlot {
	optional uint32 slot = 1;
	optional uint32 appid = 2;
	optional uint64 publishedfileid = 3;
	optional uint64 item_assetid = 4;
	optional uint64 item_contextid = 5;
	optional string notes = 6;
	optional string title = 7;
	optional uint32 accountid = 8;
	optional uint32 badgeid = 9;
	optional uint32 border_color = 10;
	optional uint64 item_classid = 11;
	optional uint64 item_instanceid = 12;
	optional .EBanContentCheckResult ban_check_result = 13 [default = k_EBanContentCheckResult_NotScanned];
	optional uint32 replay_year = 14;
}

message ProfileCustomization {
	optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid];
	optional bool large = 2;
	repeated .ProfileCustomizationSlot slots = 3;
	optional bool active = 4;
	optional .EProfileCustomizationStyle customization_style = 5 [default = k_EProfileCustomizationStyleDefault];
	optional uint64 purchaseid = 6;
	optional uint32 level = 7;
}

message ProfileTheme {
	optional string theme_id = 1;
	optional string title = 2;
}

message ProfilePreferences {
	optional bool hide_profile_awards = 1;
}

message CPlayer_GetProfileCustomization_Response {
	message PurchasedCustomization {
		optional uint64 purchaseid = 1;
		optional .EProfileCustomizationType customization_type = 2 [default = k_EProfileCustomizationTypeInvalid];
		optional uint32 level = 3;
	}

	repeated .ProfileCustomization customizations = 1;
	optional uint32 slots_available = 2;
	optional .ProfileTheme profile_theme = 3;
	repeated .CPlayer_GetProfileCustomization_Response.PurchasedCustomization purchased_customizations = 4;
	optional .ProfilePreferences profile_preferences = 5;
}

message CPlayer_GetPurchasedProfileCustomizations_Request {
	optional fixed64 steamid = 1;
}

message CPlayer_GetPurchasedProfileCustomizations_Response {
	message PurchasedCustomization {
		optional uint64 purchaseid = 1;
		optional .EProfileCustomizationType customization_type = 2 [default = k_EProfileCustomizationTypeInvalid];
	}

	repeated .CPlayer_GetPurchasedProfileCustomizations_Response.PurchasedCustomization purchased_customizations = 1;
}

message CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request {
	optional fixed64 steamid = 1;
}

message CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response {
	message PurchasedCustomization {
		optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid];
		optional uint32 count = 2;
	}

	message UpgradedCustomization {
		optional .EProfileCustomizationType customization_type = 1 [default = k_EProfileCustomizationTypeInvalid];
		optional uint32 level = 2;
	}

	repeated .CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response.PurchasedCustomization purchased_customizations = 1;
	repeated .CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response.UpgradedCustomization upgraded_customizations = 2;
}

message CPlayer_GetProfileThemesAvailable_Request {
}

message CPlayer_GetProfileThemesAvailable_Response {
	repeated .ProfileTheme profile_themes = 1;
}

message CPlayer_SetProfileTheme_Request {
	optional string theme_id = 1;
}

message CPlayer_SetProfileTheme_Response {
}

message CPlayer_SetProfilePreferences_Request {
	optional .ProfilePreferences profile_preferences = 1;
}

message CPlayer_SetProfilePreferences_Response {
}

message CPlayer_PostStatusToFriends_Request {
	optional uint32 appid = 1;
	optional string status_text = 2;
}

message CPlayer_PostStatusToFriends_Response {
}

message CPlayer_GetPostedStatus_Request {
	optional uint64 steamid = 1;
	optional uint64 postid = 2;
}

message CPlayer_GetPostedStatus_Response {
	optional uint32 accountid = 1;
	optional uint64 postid = 2;
	optional string status_text = 3;
	optional bool deleted = 4;
	optional uint32 appid = 5;
}

message CPlayer_DeletePostedStatus_Request {
	optional uint64 postid = 1;
}

message CPlayer_DeletePostedStatus_Response {
}

message CPlayer_GetLastPlayedTimes_Request {
	optional uint32 min_last_played = 1;
}

message CPlayer_GetLastPlayedTimes_Response {
	message Game {
		optional int32 appid = 1;
		optional uint32 last_playtime = 2;
		optional int32 playtime_2weeks = 3;
		optional int32 playtime_forever = 4;
		optional uint32 first_playtime = 5;
		optional int32 playtime_windows_forever = 6;
		optional int32 playtime_mac_forever = 7;
		optional int32 playtime_linux_forever = 8;
		optional int32 playtime_deck_forever = 16;
		optional uint32 first_windows_playtime = 9;
		optional uint32 first_mac_playtime = 10;
		optional uint32 first_linux_playtime = 11;
		optional uint32 first_deck_playtime = 17;
		optional uint32 last_windows_playtime = 12;
		optional uint32 last_mac_playtime = 13;
		optional uint32 last_linux_playtime = 14;
		optional uint32 last_deck_playtime = 18;
		optional uint32 playtime_disconnected = 15;
	}

	repeated .CPlayer_GetLastPlayedTimes_Response.Game games = 1;
}

message CPlayer_GetTimeSSAAccepted_Request {
}

message CPlayer_GetTimeSSAAccepted_Response {
	optional uint32 time_ssa_accepted = 1;
	optional uint32 time_ssa_updated = 2;
	optional uint32 time_chinassa_accepted = 3;
}

message CPlayer_AcceptSSA_Request {
	optional .EAgreementType agreement_type = 1 [default = k_EAgreementType_Invalid];
	optional uint32 time_signed_utc = 2;
}

message CPlayer_AcceptSSA_Response {
}

message CPlayer_GetNicknameList_Request {
}

message CPlayer_GetNicknameList_Response {
	message PlayerNickname {
		optional fixed32 accountid = 1;
		optional string nickname = 2;
	}

	repeated .CPlayer_GetNicknameList_Response.PlayerNickname nicknames = 1;
}

message CPlayer_GetPerFriendPreferences_Request {
}

message PerFriendPreferences {
	optional fixed32 accountid = 1;
	optional string nickname = 2;
	optional .ENotificationSetting notifications_showingame = 3 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting notifications_showonline = 4 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting notifications_showmessages = 5 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting sounds_showingame = 6 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting sounds_showonline = 7 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting sounds_showmessages = 8 [default = k_ENotificationSettingNotifyUseDefault];
	optional .ENotificationSetting notifications_sendmobile = 9 [default = k_ENotificationSettingNotifyUseDefault];
}

message CPlayer_GetPerFriendPreferences_Response {
	repeated .PerFriendPreferences preferences = 1;
}

message CPlayer_SetPerFriendPreferences_Request {
	optional .PerFriendPreferences preferences = 1;
}

message CPlayer_SetPerFriendPreferences_Response {
}

message CPlayer_AddFriend_Request {
	optional fixed64 steamid = 1;
}

message CPlayer_AddFriend_Response {
	optional bool invite_sent = 1;
	optional uint32 friend_relationship = 2;
	optional int32 result = 3;
}

message CPlayer_RemoveFriend_Request {
	optional fixed64 steamid = 1;
}

message CPlayer_RemoveFriend_Response {
	optional uint32 friend_relationship = 1;
}

message CPlayer_IgnoreFriend_Request {
	optional fixed64 steamid = 1;
	optional bool unignore = 2;
}

message CPlayer_IgnoreFriend_Response {
	optional uint32 friend_relationship = 1;
}

message CPlayer_GetCommunityPreferences_Request {
}

message CPlayer_CommunityPreferences {
	optional bool parenthesize_nicknames = 4 [default = false];
	optional .ETextFilterSetting text_filter_setting = 5 [default = k_ETextFilterSettingSteamLabOptedOut];
	optional bool text_filter_ignore_friends = 6 [default = true];
	optional uint32 text_filter_words_revision = 7;
	optional uint32 timestamp_updated = 3;
}

message CPlayer_GetCommunityPreferences_Response {
	optional .CPlayer_CommunityPreferences preferences = 1;
	optional .UserContentDescriptorPreferences content_descriptor_preferences = 2;
}

message CPlayer_SetCommunityPreferences_Request {
	optional .CPlayer_CommunityPreferences preferences = 1;
}

message CPlayer_SetCommunityPreferences_Response {
}

message CPlayer_GetTextFilterWords_Request {
}

message CPlayer_TextFilterWords {
	repeated string text_filter_custom_banned_words = 1;
	repeated string text_filter_custom_clean_words = 2;
	optional uint32 text_filter_words_revision = 3;
}

message CPlayer_GetTextFilterWords_Response {
	optional .CPlayer_TextFilterWords words = 1;
}

message CPlayer_GetNewSteamAnnouncementState_Request {
	optional int32 language = 1;
}

message CPlayer_GetNewSteamAnnouncementState_Response {
	optional .ENewSteamAnnouncementState state = 1 [default = k_ENewSteamAnnouncementState_Invalid];
	optional string announcement_headline = 2;
	optional string announcement_url = 3;
	optional uint32 time_posted = 4;
	optional uint64 announcement_gid = 5;
}

message CPlayer_UpdateSteamAnnouncementLastRead_Request {
	optional uint64 announcement_gid = 1;
	optional uint32 time_posted = 2;
}

message CPlayer_UpdateSteamAnnouncementLastRead_Response {
}

message CPlayer_GetPrivacySettings_Request {
}

message CPrivacySettings {
	optional int32 privacy_state = 1;
	optional int32 privacy_state_inventory = 2;
	optional int32 privacy_state_gifts = 3;
	optional int32 privacy_state_ownedgames = 4;
	optional int32 privacy_state_playtime = 5;
	optional int32 privacy_state_friendslist = 6;
}

message CPlayer_GetPrivacySettings_Response {
	optional .CPrivacySettings privacy_settings = 1;
}

message CPlayer_GetDurationControl_Request {
	optional uint32 appid = 1;
}

message CPlayer_GetDurationControl_Response {
	optional bool is_enabled = 1;
	optional int32 seconds = 2;
	optional int32 seconds_today = 3;
	optional bool is_steamchina_account = 4;
	optional bool is_age_verified = 5;
	optional uint32 seconds_allowed_today = 6;
	optional bool age_verification_pending = 7;
	optional bool block_minors = 8;
}

message CPlayer_RecordDisconnectedPlaytime_Request {
	message PlayHistory {
		optional uint32 appid = 1;
		optional uint32 session_time_start = 2;
		optional uint32 seconds = 3;
		optional bool offline = 4;
		optional uint32 owner = 5;
	}

	repeated .CPlayer_RecordDisconnectedPlaytime_Request.PlayHistory play_sessions = 3;
}

message CPlayer_RecordDisconnectedPlaytime_Response {
}

message CPlayer_LastPlayedTimes_Notification {
	repeated .CPlayer_GetLastPlayedTimes_Response.Game games = 1;
}

message CPlayer_FriendNicknameChanged_Notification {
	optional fixed32 accountid = 1;
	optional string nickname = 2;
	optional bool is_echo_to_self = 3;
}

message CPlayer_FriendEquippedProfileItemsChanged_Notification {
	optional fixed32 accountid = 1;
}

message CPlayer_NewSteamAnnouncementState_Notification {
	optional .ENewSteamAnnouncementState state = 1 [default = k_ENewSteamAnnouncementState_Invalid];
	optional string announcement_headline = 2;
	optional string announcement_url = 3;
	optional uint32 time_posted = 4;
	optional uint64 announcement_gid = 5;
}

message CPlayer_CommunityPreferencesChanged_Notification {
	optional .CPlayer_CommunityPreferences preferences = 1;
	optional .UserContentDescriptorPreferences content_descriptor_preferences = 2;
}

message CPlayer_TextFilterWordsChanged_Notification {
	optional .CPlayer_TextFilterWords words = 1;
}

message CPlayer_PerFriendPreferencesChanged_Notification {
	optional fixed32 accountid = 1;
	optional .PerFriendPreferences preferences = 2;
}

message CPlayer_PrivacySettingsChanged_Notification {
	optional .CPrivacySettings privacy_settings = 1;
}

service Player {
	rpc GetRecentPlaytimeSessionsForChild (.CPlayer_GetRecentPlaytimeSessionsForChild_Request) returns (.CPlayer_GetRecentPlaytimeSessionsForChild_Response);
	rpc GetPlayerLinkDetails (.CPlayer_GetPlayerLinkDetails_Request) returns (.CPlayer_GetPlayerLinkDetails_Response);
	rpc GetMutualFriendsForIncomingInvites (.CPlayer_GetMutualFriendsForIncomingInvites_Request) returns (.CPlayer_GetMutualFriendsForIncomingInvites_Response);
	rpc GetOwnedGames (.CPlayer_GetOwnedGames_Request) returns (.CPlayer_GetOwnedGames_Response);
	rpc GetPlayNext (.CPlayer_GetPlayNext_Request) returns (.CPlayer_GetPlayNext_Response);
	rpc GetFriendsGameplayInfo (.CPlayer_GetFriendsGameplayInfo_Request) returns (.CPlayer_GetFriendsGameplayInfo_Response);
	rpc GetGameBadgeLevels (.CPlayer_GetGameBadgeLevels_Request) returns (.CPlayer_GetGameBadgeLevels_Response);
	rpc GetProfileBackground (.CPlayer_GetProfileBackground_Request) returns (.CPlayer_GetProfileBackground_Response);
	rpc SetProfileBackground (.CPlayer_SetProfileBackground_Request) returns (.CPlayer_SetProfileBackground_Response);
	rpc GetMiniProfileBackground (.CPlayer_GetMiniProfileBackground_Request) returns (.CPlayer_GetMiniProfileBackground_Response);
	rpc SetMiniProfileBackground (.CPlayer_SetMiniProfileBackground_Request) returns (.CPlayer_SetMiniProfileBackground_Response);
	rpc GetAvatarFrame (.CPlayer_GetAvatarFrame_Request) returns (.CPlayer_GetAvatarFrame_Response);
	rpc SetAvatarFrame (.CPlayer_SetAvatarFrame_Request) returns (.CPlayer_SetAvatarFrame_Response);
	rpc GetAnimatedAvatar (.CPlayer_GetAnimatedAvatar_Request) returns (.CPlayer_GetAnimatedAvatar_Response);
	rpc SetAnimatedAvatar (.CPlayer_SetAnimatedAvatar_Request) returns (.CPlayer_SetAnimatedAvatar_Response);
	rpc GetSteamDeckKeyboardSkin (.CPlayer_GetSteamDeckKeyboardSkin_Request) returns (.CPlayer_GetSteamDeckKeyboardSkin_Response);
	rpc SetSteamDeckKeyboardSkin (.CPlayer_SetSteamDeckKeyboardSkin_Request) returns (.CPlayer_SetSteamDeckKeyboardSkin_Response);
	rpc GetProfileItemsOwned (.CPlayer_GetProfileItemsOwned_Request) returns (.CPlayer_GetProfileItemsOwned_Response);
	rpc GetProfileItemsEquipped (.CPlayer_GetProfileItemsEquipped_Request) returns (.CPlayer_GetProfileItemsEquipped_Response);
	rpc SetEquippedProfileItemFlags (.CPlayer_SetEquippedProfileItemFlags_Request) returns (.CPlayer_SetEquippedProfileItemFlags_Response);
	rpc GetEmoticonList (.CPlayer_GetEmoticonList_Request) returns (.CPlayer_GetEmoticonList_Response);
	rpc GetCommunityBadgeProgress (.CPlayer_GetCommunityBadgeProgress_Request) returns (.CPlayer_GetCommunityBadgeProgress_Response);
	rpc GetTopAchievementsForGames (.CPlayer_GetTopAchievementsForGames_Request) returns (.CPlayer_GetTopAchievementsForGames_Response);
	rpc GetAchievementsProgress (.CPlayer_GetAchievementsProgress_Request) returns (.CPlayer_GetAchievementsProgress_Response);
	rpc GetGameAchievements (.CPlayer_GetGameAchievements_Request) returns (.CPlayer_GetGameAchievements_Response);
	rpc GetFavoriteBadge (.CPlayer_GetFavoriteBadge_Request) returns (.CPlayer_GetFavoriteBadge_Response);
	rpc SetFavoriteBadge (.CPlayer_SetFavoriteBadge_Request) returns (.CPlayer_SetFavoriteBadge_Response);
	rpc GetProfileCustomization (.CPlayer_GetProfileCustomization_Request) returns (.CPlayer_GetProfileCustomization_Response);
	rpc GetPurchasedProfileCustomizations (.CPlayer_GetPurchasedProfileCustomizations_Request) returns (.CPlayer_GetPurchasedProfileCustomizations_Response);
	rpc GetPurchasedAndUpgradedProfileCustomizations (.CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Request) returns (.CPlayer_GetPurchasedAndUpgradedProfileCustomizations_Response);
	rpc GetProfileThemesAvailable (.CPlayer_GetProfileThemesAvailable_Request) returns (.CPlayer_GetProfileThemesAvailable_Response);
	rpc SetProfileTheme (.CPlayer_SetProfileTheme_Request) returns (.CPlayer_SetProfileTheme_Response);
	rpc SetProfilePreferences (.CPlayer_SetProfilePreferences_Request) returns (.CPlayer_SetProfilePreferences_Response);
	rpc PostStatusToFriends (.CPlayer_PostStatusToFriends_Request) returns (.CPlayer_PostStatusToFriends_Response);
	rpc GetPostedStatus (.CPlayer_GetPostedStatus_Request) returns (.CPlayer_GetPostedStatus_Response);
	rpc DeletePostedStatus (.CPlayer_DeletePostedStatus_Request) returns (.CPlayer_DeletePostedStatus_Response);
	rpc ClientGetLastPlayedTimes (.CPlayer_GetLastPlayedTimes_Request) returns (.CPlayer_GetLastPlayedTimes_Response);
	rpc GetTimeSSAAccepted (.CPlayer_GetTimeSSAAccepted_Request) returns (.CPlayer_GetTimeSSAAccepted_Response);
	rpc AcceptSSA (.CPlayer_AcceptSSA_Request) returns (.CPlayer_AcceptSSA_Response);
	rpc GetNicknameList (.CPlayer_GetNicknameList_Request) returns (.CPlayer_GetNicknameList_Response);
	rpc GetPerFriendPreferences (.CPlayer_GetPerFriendPreferences_Request) returns (.CPlayer_GetPerFriendPreferences_Response);
	rpc SetPerFriendPreferences (.CPlayer_SetPerFriendPreferences_Request) returns (.CPlayer_SetPerFriendPreferences_Response);
	rpc AddFriend (.CPlayer_AddFriend_Request) returns (.CPlayer_AddFriend_Response);
	rpc RemoveFriend (.CPlayer_RemoveFriend_Request) returns (.CPlayer_RemoveFriend_Response);
	rpc IgnoreFriend (.CPlayer_IgnoreFriend_Request) returns (.CPlayer_IgnoreFriend_Response);
	rpc GetCommunityPreferences (.CPlayer_GetCommunityPreferences_Request) returns (.CPlayer_GetCommunityPreferences_Response);
	rpc SetCommunityPreferences (.CPlayer_SetCommunityPreferences_Request) returns (.CPlayer_SetCommunityPreferences_Response);
	rpc GetTextFilterWords (.CPlayer_GetTextFilterWords_Request) returns (.CPlayer_GetTextFilterWords_Response);
	rpc GetNewSteamAnnouncementState (.CPlayer_GetNewSteamAnnouncementState_Request) returns (.CPlayer_GetNewSteamAnnouncementState_Response);
	rpc UpdateSteamAnnouncementLastRead (.CPlayer_UpdateSteamAnnouncementLastRead_Request) returns (.CPlayer_UpdateSteamAnnouncementLastRead_Response);
	rpc GetPrivacySettings (.CPlayer_GetPrivacySettings_Request) returns (.CPlayer_GetPrivacySettings_Response);
	rpc GetDurationControl (.CPlayer_GetDurationControl_Request) returns (.CPlayer_GetDurationControl_Response);
	rpc RecordDisconnectedPlaytime (.CPlayer_RecordDisconnectedPlaytime_Request) returns (.CPlayer_RecordDisconnectedPlaytime_Response);
}

service PlayerClient {
	option (service_execution_site) = k_EProtoExecutionSiteSteamClient;

	rpc NotifyLastPlayedTimes (.CPlayer_LastPlayedTimes_Notification) returns (.NoResponse);
	rpc NotifyFriendNicknameChanged (.CPlayer_FriendNicknameChanged_Notification) returns (.NoResponse);
	rpc NotifyFriendEquippedProfileItemsChanged (.CPlayer_FriendEquippedProfileItemsChanged_Notification) returns (.NoResponse);
	rpc NotifyNewSteamAnnouncementState (.CPlayer_NewSteamAnnouncementState_Notification) returns (.NoResponse);
	rpc NotifyCommunityPreferencesChanged (.CPlayer_CommunityPreferencesChanged_Notification) returns (.NoResponse);
	rpc NotifyTextFilterWordsChanged (.CPlayer_TextFilterWordsChanged_Notification) returns (.NoResponse);
	rpc NotifyPerFriendPreferencesChanged (.CPlayer_PerFriendPreferencesChanged_Notification) returns (.NoResponse);
	rpc NotifyPrivacyPrivacySettingsChanged (.CPlayer_PrivacySettingsChanged_Notification) returns (.NoResponse);
}
