syntax = "proto2";

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

option cc_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_GetUserStats_Request {
  optional uint64 steamid = 1;
  optional uint32 appid = 2;
  optional bytes sha_schema = 3;
  optional uint32 crc_stats = 4;
}

message CPlayer_GetUserStats_Response {
  message Unlock_Time {
    optional uint32 achievement_bit = 1;
    optional fixed32 unlock_time = 2;
  }
  message Stats {
    optional uint32 stat_id = 1;
    optional uint32 stat_value = 2;
    repeated CPlayer_GetUserStats_Response.Unlock_Time unlock_times = 3;
  }
  optional bytes sha_schema = 1;
  optional uint32 crc_stats = 2;
  optional bytes schema = 3;
  repeated CPlayer_GetUserStats_Response.Stats stats = 4;
}

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;
  optional uint32 replay_year = 14;
}

message ProfileCustomization {
  optional EProfileCustomizationType customization_type = 1;
  optional bool large = 2;
  repeated ProfileCustomizationSlot slots = 3;
  optional bool active = 4;
  optional EProfileCustomizationStyle customization_style = 5;
  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;
    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;
  }
  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;
    optional uint32 count = 2;
  }
  message UpgradedCustomization {
    optional EProfileCustomizationType customization_type = 1;
    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;
  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;
  optional ENotificationSetting notifications_showonline = 4;
  optional ENotificationSetting notifications_showmessages = 5;
  optional ENotificationSetting sounds_showingame = 6;
  optional ENotificationSetting sounds_showonline = 7;
  optional ENotificationSetting sounds_showmessages = 8;
  optional ENotificationSetting notifications_sendmobile = 9;
}

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;
  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;
  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;
  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 GetUserStats (.CPlayer_GetUserStats_Request) returns (.CPlayer_GetUserStats_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 {
  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);
}

