package dota; import "dota_shared_enums.proto"; option optimize_for = SPEED; option cc_generic_services = false; enum DOTA_2013PassportSelectionIndices { PP13_SEL_ALLSTAR_PLAYER_0 = 0; PP13_SEL_ALLSTAR_PLAYER_1 = 1; PP13_SEL_ALLSTAR_PLAYER_2 = 2; PP13_SEL_ALLSTAR_PLAYER_3 = 3; PP13_SEL_ALLSTAR_PLAYER_4 = 4; PP13_SEL_ALLSTAR_PLAYER_5 = 5; PP13_SEL_ALLSTAR_PLAYER_6 = 6; PP13_SEL_ALLSTAR_PLAYER_7 = 7; PP13_SEL_ALLSTAR_PLAYER_8 = 8; PP13_SEL_ALLSTAR_PLAYER_9 = 9; PP13_SEL_QUALPRED_WEST_0 = 10; PP13_SEL_QUALPRED_WEST_1 = 11; PP13_SEL_QUALPRED_WEST_2 = 12; PP13_SEL_QUALPRED_WEST_3 = 13; PP13_SEL_QUALPRED_WEST_4 = 14; PP13_SEL_QUALPRED_WEST_5 = 15; PP13_SEL_QUALPRED_WEST_6 = 16; PP13_SEL_QUALPRED_WEST_7 = 17; PP13_SEL_QUALPRED_WEST_8 = 18; PP13_SEL_QUALPRED_WEST_9 = 19; PP13_SEL_QUALPRED_WEST_10 = 20; PP13_SEL_QUALPRED_WEST_11 = 21; PP13_SEL_QUALPRED_WEST_12 = 22; PP13_SEL_QUALPRED_WEST_13 = 23; PP13_SEL_QUALPRED_WEST_14 = 24; PP13_SEL_QUALPRED_EAST_0 = 25; PP13_SEL_QUALPRED_EAST_1 = 26; PP13_SEL_QUALPRED_EAST_2 = 27; PP13_SEL_QUALPRED_EAST_3 = 28; PP13_SEL_QUALPRED_EAST_4 = 29; PP13_SEL_QUALPRED_EAST_5 = 30; PP13_SEL_QUALPRED_EAST_6 = 31; PP13_SEL_QUALPRED_EAST_7 = 32; PP13_SEL_QUALPRED_EAST_8 = 33; PP13_SEL_QUALPRED_EAST_9 = 34; PP13_SEL_QUALPRED_EAST_10 = 35; PP13_SEL_QUALPRED_EAST_11 = 36; PP13_SEL_QUALPRED_EAST_12 = 37; PP13_SEL_QUALPRED_EAST_13 = 38; PP13_SEL_QUALPRED_EAST_14 = 39; PP13_SEL_TEAMCUP_TEAM = 40; PP13_SEL_TEAMCUP_PLAYER = 41; PP13_SEL_TEAMCUP_TEAM_LOCK = 42; PP13_SEL_TEAMCUP_PLAYER_LOCK = 43; PP13_SEL_EVENTPRED_0 = 44; PP13_SEL_EVENTPRED_1 = 45; PP13_SEL_EVENTPRED_2 = 46; PP13_SEL_EVENTPRED_3 = 47; PP13_SEL_EVENTPRED_4 = 48; PP13_SEL_EVENTPRED_5 = 49; PP13_SEL_EVENTPRED_6 = 50; PP13_SEL_EVENTPRED_7 = 51; PP13_SEL_EVENTPRED_8 = 52; PP13_SEL_EVENTPRED_9 = 53; PP13_SEL_EVENTPRED_10 = 54; PP13_SEL_EVENTPRED_11 = 55; PP13_SEL_EVENTPRED_12 = 56; PP13_SEL_EVENTPRED_13 = 57; PP13_SEL_EVENTPRED_14 = 58; PP13_SEL_EVENTPRED_15 = 59; PP13_SEL_EVENTPRED_16 = 60; PP13_SEL_EVENTPRED_17 = 61; PP13_SEL_EVENTPRED_18 = 62; PP13_SEL_EVENTPRED_19 = 63; PP13_SEL_EVENTPRED_20 = 64; PP13_SEL_EVENTPRED_21 = 65; PP13_SEL_EVENTPRED_22 = 66; PP13_SEL_EVENTPRED_23 = 67; PP13_SEL_EVENTPRED_24 = 68; PP13_SEL_EVENTPRED_25 = 69; PP13_SEL_EVENTPRED_26 = 70; PP13_SEL_EVENTPRED_27 = 71; PP13_SEL_EVENTPRED_28 = 72; PP13_SEL_EVENTPRED_29 = 73; PP13_SEL_EVENTPRED_30 = 74; PP13_SEL_EVENTPRED_31 = 75; PP13_SEL_EVENTPRED_32 = 76; PP13_SEL_EVENTPRED_33 = 77; PP13_SEL_EVENTPRED_34 = 78; PP13_SEL_EVENTPRED_35 = 79; PP13_SEL_EVENTPRED_36 = 80; PP13_SEL_EVENTPRED_37 = 81; PP13_SEL_EVENTPRED_38 = 82; PP13_SEL_EVENTPRED_39 = 83; PP13_SEL_EVENTPRED_40 = 84; PP13_SEL_EVENTPRED_41 = 85; PP13_SEL_EVENTPRED_42 = 86; PP13_SEL_EVENTPRED_43 = 87; PP13_SEL_SOLO_0 = 88; PP13_SEL_SOLO_1 = 89; PP13_SEL_SOLO_2 = 90; PP13_SEL_SOLO_3 = 91; PP13_SEL_SOLO_4 = 92; PP13_SEL_SOLO_5 = 93; PP13_SEL_SOLO_6 = 94; PP13_SEL_SOLO_7 = 95; } message CMsgGCPlayerInfo { message PlayerInfo { optional uint32 account_id = 1; optional string name = 2; optional string country_code = 3; optional uint32 fantasy_role = 4; optional uint32 team_id = 5; optional string team_name = 6; optional string team_tag = 7; optional string sponsor = 8; optional bool is_locked = 9; optional bool is_pro = 10; optional uint32 locked_until = 11; optional uint32 timestamp = 12; } message RegionLeaderboard { optional uint32 division = 1; repeated uint32 account_ids = 2; } repeated CMsgGCPlayerInfo.PlayerInfo player_infos = 1; repeated CMsgGCPlayerInfo.RegionLeaderboard leaderboards = 2; } message CMsgDOTACreateFantasyLeagueRequest { optional string league_name = 1; optional uint64 league_logo = 2; optional Fantasy_Selection_Mode selection_mode = 3 [default = FANTASY_SELECTION_INVALID]; optional uint32 team_count = 4; } message CMsgDOTACreateFantasyLeagueResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_TOO_MANY_LEAGUES = 2; ERROR_INVALID_TEAM_COUNT = 3; ERROR_CREATION_DISABLED = 4; } optional CMsgDOTACreateFantasyLeagueResponse.EResult result = 1 [default = SUCCESS]; } message CMsgFantasyLeagueScoring { optional float level = 1; optional float kills = 2; optional float deaths = 3; optional float assists = 4; optional float last_hits = 5; optional float denies = 6; optional float gpm = 7; optional float xppm = 8; optional float stuns = 9; optional float healing = 10; optional float tower_kills = 11; optional float roshan_kills = 12; optional float multiplier_premium = 13; optional float multiplier_professional = 14; } message CMsgDOTAFantasyLeagueInfo { message OwnerInfo { optional uint32 owner_account_id = 1; optional bool left_league = 2; repeated uint32 player_account_id = 3; } optional uint32 fantasy_league_id = 1; optional uint32 commissioner_account_id = 2; optional string fantasy_league_name = 3; optional Fantasy_Selection_Mode selection_mode = 4 [default = FANTASY_SELECTION_INVALID]; optional uint32 team_count = 5; optional uint64 logo = 6; optional CMsgFantasyLeagueScoring scoring = 7; optional uint32 draft_time = 12; optional uint32 draft_pick_time = 13; optional uint32 season_start = 15; optional uint32 season_length = 16; optional uint32 veto_votes = 17; optional uint32 acquisitions = 18; optional uint32 slot_1 = 19; optional uint32 slot_2 = 20; optional uint32 slot_3 = 21; optional uint32 slot_4 = 22; optional uint32 slot_5 = 23; optional uint32 bench_slots = 24; repeated CMsgDOTAFantasyLeagueInfo.OwnerInfo owner_info = 25; repeated uint32 players = 26; optional uint32 time_zone = 27; optional uint32 season = 28; optional string password = 29; } message CMsgDOTAFantasyLeagueEditInfoRequest { optional uint32 fantasy_league_id = 1; optional CMsgDOTAFantasyLeagueInfo edit_info = 2; } message CMsgDOTAFantasyLeagueEditInfoResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyLeagueEditInfoResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyLeagueFindRequest { optional uint32 fantasy_league_id = 1; optional string password = 2; } message CMsgDOTAFantasyLeagueFindResponse { enum EResult { SUCCESS = 0; ERROR_LEAGUE_NOT_FOUND = 1; ERROR_BAD_PASSWORD = 2; ERROR_UNSPECIFIED = 3; ERROR_FULL = 4; ERROR_ALREADY_MEMBER = 5; ERROR_LEAGUE_LOCKED = 6; } optional CMsgDOTAFantasyLeagueFindResponse.EResult result = 1 [default = SUCCESS]; optional string fantasy_league_name = 2; optional string commissioner_name = 3; } message CMsgDOTAFantasyLeagueInfoRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyLeagueInfoResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_BAD_LEAGUE_ID = 2; } optional CMsgDOTAFantasyLeagueInfoResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyLeagueMatchupsRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyLeagueMatchupsResponse { message Matchup { optional uint32 owner_account_id_1 = 1; optional uint32 owner_account_id_2 = 2; optional float score_1 = 3; optional float score_2 = 4; } message WeeklyMatchups { repeated CMsgDOTAFantasyLeagueMatchupsResponse.Matchup matchup = 1; optional uint32 start_time = 2; optional uint32 end_time = 3; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_BAD_LEAGUE_ID = 2; ERROR_NO_PERMISSION = 3; } optional CMsgDOTAFantasyLeagueMatchupsResponse.EResult result = 1 [default = SUCCESS]; optional uint32 fantasy_league_id = 2; repeated CMsgDOTAFantasyLeagueMatchupsResponse.WeeklyMatchups weekly_matchups = 3; } message CMsgDOTAEditFantasyTeamRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index = 2; optional string team_name = 3; optional uint64 team_logo = 4; } message CMsgDOTAEditFantasyTeamResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_INVALID_TEAM_INFO = 2; ERROR_NAME_ALREADY_TAKEN = 3; ERROR_NO_PERMISSION = 4; } optional CMsgDOTAEditFantasyTeamResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyTeamInfoRequestByFantasyLeagueID { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyTeamInfoRequestByOwnerAccountID { optional uint32 owner_account_id = 1; } message CMsgDOTAFantasyTeamInfoResponse { repeated CMsgDOTAFantasyTeamInfo results = 1; } message CMsgDOTAFantasyTeamInfo { optional uint32 fantasy_league_id = 1; optional uint32 owner_account_id = 2; optional uint32 fantasy_team_index = 3; optional string team_name = 4; optional uint64 team_logo = 5; optional uint32 wins = 6; optional uint32 losses = 7; repeated uint32 current_roster = 8; } message CMsgDOTAFantasyTeamScoreRequest { optional uint32 fantasy_league_id = 1; optional uint32 owner_account_id = 2; optional uint32 fantasy_team_index = 3; optional uint64 filter_match_id = 4; optional uint32 filter_start_time = 5; optional uint32 filter_end_time = 6; optional bool include_bench = 7; } message CMsgDOTAFantasyTeamScoreResponse { message CMsgPlayerScore { optional uint32 account_id = 1; optional float score = 2; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; ERROR_OWNER_NOT_IN_LEAGUE = 3; } optional CMsgDOTAFantasyTeamScoreResponse.EResult result = 1 [default = SUCCESS]; optional float fantasy_team_score = 2; repeated CMsgDOTAFantasyTeamScoreResponse.CMsgPlayerScore fantasy_player_score = 3; } message CMsgDOTAFantasyTeamStandingsRequest { optional uint32 fantasy_league_id = 1; optional uint32 count = 2; optional uint32 filter_start_time = 3; optional uint32 filter_end_time = 4; optional uint64 filter_match_id = 5; optional bool filter_last_match = 6; optional bool filter_in_hall = 7; } message CMsgDOTAFantasyTeamStandingsResponse { message CMsgTeamScore { optional uint32 fantasy_league_id = 1; optional uint32 owner_account_id = 2; optional uint32 fantasy_team_index = 3; optional uint64 fantasy_team_logo = 4; optional string owner_name = 5; optional string fantasy_team_name = 6; optional float score = 7; optional float score_against = 8; optional uint32 wins = 9; optional uint32 losses = 10; optional int32 streak = 11; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyTeamStandingsResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyTeamStandingsResponse.CMsgTeamScore team_scores = 3; } message CMsgDOTAFantasyPlayerScoreRequest { optional uint32 fantasy_league_id = 1; optional uint32 player_account_id = 2; optional uint32 filter_start_time = 3; optional uint32 filter_end_time = 4; optional uint64 filter_match_id = 5; optional bool filter_last_match = 6; } message CMsgDOTAFantasyPlayerScoreResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyPlayerScoreResponse.EResult result = 1 [default = SUCCESS]; optional uint32 fantasy_league_id = 2; optional uint32 player_account_id = 3; optional string player_name = 4; optional float score = 5; } message CMsgDOTAFantasyPlayerStandingsRequest { optional uint32 fantasy_league_id = 1; optional uint32 count = 2; optional uint32 role = 3; optional uint32 filter_start_time = 4; optional uint32 filter_end_time = 5; optional uint64 filter_match_id = 6; optional bool filter_last_match = 7; } message CMsgDOTAFantasyPlayerStandingsResponse { message CMsgPlayerScore { optional uint32 player_account_id = 1; optional string player_name = 2; optional float score = 3; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyPlayerStandingsResponse.EResult result = 1 [default = SUCCESS]; optional uint32 fantasy_league_id = 2; optional uint32 role = 3; repeated CMsgDOTAFantasyPlayerStandingsResponse.CMsgPlayerScore player_scores = 4; } message CMsgDOTAFantasyPlayerInfoRequest { } message CMsgDOTAFantasyPlayerInfoResponse { optional CMsgGCPlayerInfo msg = 1; } message CMsgDOTAFantasyLeagueCreateRequest { optional uint32 season_id = 1; optional string fantasy_league_name = 2; optional string password = 3; optional string team_name = 4; optional uint64 logo = 5; optional uint64 ticket_item_id = 6; } message CMsgDOTAFantasyLeagueCreateResponse { enum EResult { SUCCESS = 0; ERROR_NO_PERMISSION = 1; ERROR_BAD_SEASON_ID = 2; ERROR_BAD_LEAGUE_NAME = 3; ERROR_BAD_TEAM_NAME = 4; ERROR_UNSPECIFIED = 5; ERROR_FAILED_LOGO_UPLOAD = 6; ERROR_NO_TICKET = 7; } optional CMsgDOTAFantasyLeagueCreateResponse.EResult result = 1 [default = SUCCESS]; optional uint32 fantasy_league_id = 2; } message CMsgDOTAFantasyTeamCreateRequest { optional uint32 fantasy_league_id = 1; optional string password = 2; optional string team_name = 3; optional uint64 logo = 4; optional uint64 ticket_item_id = 5; } message CMsgDOTAFantasyTeamCreateResponse { enum EResult { SUCCESS = 0; ERROR_NO_PERMISSION = 1; ERROR_FAILED_LOGO_UPLOAD = 2; ERROR_BAD_FANTASY_LEAGUE_ID = 3; ERROR_BAD_NAME = 4; ERROR_FULL = 5; ERROR_ALREADY_MEMBER = 6; ERROR_BAD_PASSWORD = 7; ERROR_UNSPECIFIED = 8; ERROR_NO_TICKET = 9; ERROR_LEAGUE_LOCKED = 10; } optional CMsgDOTAFantasyTeamCreateResponse.EResult result = 1 [default = SUCCESS]; optional uint32 fantasy_team_index = 2; } message CMsgDOTAFantasyLeagueEditInvitesRequest { message InviteChange { optional uint32 account_id = 1; optional bool invited = 2; } optional uint32 fantasy_league_id = 1; optional string password = 2; repeated CMsgDOTAFantasyLeagueEditInvitesRequest.InviteChange invite_change = 3; } message CMsgDOTAFantasyLeagueEditInvitesResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; } optional CMsgDOTAFantasyLeagueEditInvitesResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyLeagueDraftStatusRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyLeagueDraftStatus { optional uint32 fantasy_league_id = 1; repeated uint32 draft_order = 2; optional uint32 current_pick = 3; optional uint32 time_remaining = 4; optional bool pending_resume = 5; optional bool completed = 6; repeated uint32 available_players = 7; } message CMsgDOTAFantasyLeagueDraftPlayerRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index = 2; optional uint32 player_account_id = 3; } message CMsgDOTAFantasyLeagueDraftPlayerResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_INVALID_FANTASY_LEAGUE = 2; ERROR_FANTASY_LEAGUE_NOT_DRAFTING = 3; ERROR_OWNER_NOT_IN_LEAGUE = 4; ERROR_NOT_OWNERS_TURN = 5; ERROR_PLAYER_INVALID = 6; ERROR_PLAYER_UNAVAILABLE = 7; ERROR_PLAYER_NO_VALID_SLOTS = 8; } optional CMsgDOTAFantasyLeagueDraftPlayerResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyTeamRosterSwapRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index = 2; optional uint32 timestamp = 3; optional uint32 slot_1 = 4; optional uint32 slot_2 = 5; } message CMsgDOTAFantasyTeamRosterSwapResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_OWNER_NOT_IN_LEAGUE = 2; ERROR_SLOTS_INVALID = 3; ERROR_SLOT_LOCKED = 4; } optional CMsgDOTAFantasyTeamRosterSwapResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyTeamRosterAddDropRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index = 2; optional uint32 add_account_id = 5; optional uint32 drop_account_id = 6; } message CMsgDOTAFantasyTeamRosterAddDropResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_OWNER_NOT_IN_LEAGUE = 2; ERROR_PLAYER_NOT_AVAILABLE = 3; ERROR_PLAYER_NOT_ON_TEAM = 4; ERROR_TRADE_ALREADY_PENDING = 5; } optional CMsgDOTAFantasyTeamRosterAddDropResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyTeamTradesRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyTeamTradesResponse { message Trade { optional uint32 timestamp = 1; optional uint32 owner_account_id_1 = 2; optional uint32 owner_account_id_2 = 3; optional uint32 player_account_id_1 = 4; optional uint32 player_account_id_2 = 5; optional uint32 status = 6; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyTeamTradesResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyTeamTradesResponse.Trade trades = 2; } message CMsgDOTAFantasyTeamTradeCancelRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index_1 = 3; optional uint32 owner_account_id_2 = 4; optional uint32 team_index_2 = 5; } message CMsgDOTAFantasyTeamTradeCancelResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; ERROR_NO_TRADE = 3; } optional CMsgDOTAFantasyTeamTradeCancelResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyTeamRosterRequest { optional uint32 fantasy_league_id = 1; optional uint32 team_index = 2; optional uint32 owner_account_id = 3; optional uint32 timestamp = 4; } message CMsgDOTAFantasyTeamRosterResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; ERROR_OWNER_NOT_IN_LEAGUE = 3; } optional CMsgDOTAFantasyTeamRosterResponse.EResult result = 1 [default = SUCCESS]; repeated uint32 player_account_ids = 2; repeated bool player_locked = 3; } message CMsgDOTAFantasyPlayerHisoricalStatsRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyPlayerHisoricalStatsResponse { message PlayerScoreAccumulator { optional uint32 matches = 1; optional float levels = 2; optional float kills = 3; optional float deaths = 4; optional float assists = 5; optional float last_hits = 6; optional float denies = 7; optional float gpm = 8; optional float xppm = 9; optional float stuns = 10; optional float healing = 11; optional float tower_kills = 12; optional float roshan_kills = 13; optional float score = 14; } message PlayerStats { optional uint32 account_id = 1; optional uint32 weeks = 2; optional CMsgDOTAFantasyPlayerHisoricalStatsResponse.PlayerScoreAccumulator stats_premium = 4; optional CMsgDOTAFantasyPlayerHisoricalStatsResponse.PlayerScoreAccumulator stats_professional = 5; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyPlayerHisoricalStatsResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyPlayerHisoricalStatsResponse.PlayerStats stats = 2; } message CMsgDOTAFantasyMessageAdd { optional uint32 fantasy_league_id = 1; optional string message = 2; } message CMsgDOTAFantasyMessagesRequest { optional uint32 fantasy_league_id = 1; optional uint32 start_message = 2; optional uint32 end_message = 3; } message CMsgDOTAFantasyMessagesResponse { message Message { optional uint32 message_id = 1; optional string message = 2; optional uint32 author_account_id = 3; optional uint32 time = 4; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; } optional CMsgDOTAFantasyMessagesResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyMessagesResponse.Message messages = 2; optional uint32 num_total_messages = 3; } message CMsgDOTAFantasyRemoveOwner { optional uint32 fantasy_league_id = 1; optional uint32 owner_account_id = 2; optional uint32 team_index = 3; } message CMsgDOTAFantasyRemoveOwnerResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NO_PERMISSION = 2; ERROR_LEAGUE_LOCKED = 3; ERROR_NOT_A_MEMBER = 4; } optional CMsgDOTAFantasyRemoveOwnerResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyScheduledMatchesRequest { optional uint32 fantasy_league_id = 1; } message CMsgDOTAFantasyScheduledMatchesResponse { message ScheduledMatchDays { optional uint32 timestamp = 1; repeated uint32 team_ids = 2; repeated uint32 league_ids = 3; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; } optional CMsgDOTAFantasyScheduledMatchesResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyScheduledMatchesResponse.ScheduledMatchDays scheduled_match_days = 2; } message CMsgDOTAFantasyLeaveLeagueRequest { optional uint32 fantasy_league_id = 1; optional uint32 fantasy_team_index = 2; } message CMsgDOTAFantasyLeaveLeagueResponse { enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NOT_MEMBER = 2; ERROR_LEAGUE_NOT_FOUND = 3; ERROR_DRAFT_ACTIVE = 4; } optional CMsgDOTAFantasyLeaveLeagueResponse.EResult result = 1 [default = SUCCESS]; } message CMsgDOTAFantasyPlayerScoreDetailsRequest { optional uint32 fantasy_league_id = 1; optional uint32 player_account_id = 2; optional uint32 start_time = 3; optional uint32 end_time = 4; } message CMsgDOTAFantasyPlayerScoreDetailsResponse { message PlayerMatchData { optional uint64 match_id = 1; optional uint32 series_id = 2; optional uint32 series_num = 3; optional uint32 series_type = 4; optional uint32 league_tier = 5; optional uint32 league_id = 6; optional uint32 opposing_team_id = 7; optional uint64 opposing_team_logo = 8; optional string opposing_team_name = 9; optional uint32 owned_by = 11; optional bool benched = 12; } enum EResult { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_NOT_MEMBER = 2; } optional CMsgDOTAFantasyPlayerScoreDetailsResponse.EResult result = 1 [default = SUCCESS]; repeated CMsgDOTAFantasyPlayerScoreDetailsResponse.PlayerMatchData data = 2; } message CMsgDOTAPassportVoteTeamGuess { optional uint32 league_id = 1; optional uint32 winner_id = 2; optional uint32 runnerup_id = 3; } message CMsgDOTAPassportVoteGenericSelection { optional DOTA_2013PassportSelectionIndices selection_index = 1 [default = PP13_SEL_ALLSTAR_PLAYER_0]; optional uint32 selection = 2; } message CMsgDOTAPassportStampedPlayer { optional uint64 steam_id = 1; optional uint32 stamp_level = 2; } message CMsgDOTAPassportPlayerCardChallenge { optional uint32 challenge_id = 1; } message CMsgDOTAPassportVote { repeated CMsgDOTAPassportVoteTeamGuess team_votes = 1; repeated CMsgDOTAPassportVoteGenericSelection generic_selections = 2; repeated CMsgDOTAPassportStampedPlayer stamped_players = 3; repeated CMsgDOTAPassportPlayerCardChallenge player_card_challenges = 4; } message CMsgClientToGCGetPlayerCardRosterRequest { optional uint32 league_id = 1; optional uint32 timestamp = 2; } message CMsgClientToGCGetPlayerCardRosterResponse { enum Result { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_INVALID_LEAGUE_ID = 2; ERROR_INVALID_TIMESTAMP = 3; } optional CMsgClientToGCGetPlayerCardRosterResponse.Result result = 1 [default = SUCCESS]; repeated uint64 player_card_item_id = 2; optional float score = 3; optional bool finalized = 4; } message CMsgClientToGCSetPlayerCardRosterRequest { optional uint32 league_id = 1; optional uint32 timestamp = 2; optional uint32 slot = 3; optional uint64 player_card_item_id = 4; } message CMsgClientToGCSetPlayerCardRosterResponse { enum Result { SUCCESS = 0; ERROR_UNSPECIFIED = 1; ERROR_INVALID_LEAGUE_ID = 2; ERROR_INVALID_TIMESTAMP = 3; ERROR_PLAYER_CARD_NOT_OWNED = 4; ERROR_INVALID_SLOT = 5; ERROR_FAILED_CARD_INFO = 6; ERROR_ACCOUNT_DUPLICATE = 7; ERROR_LOCKED_TIMESTAMP = 8; } optional CMsgClientToGCSetPlayerCardRosterResponse.Result result = 1 [default = SUCCESS]; }