package dota; option optimize_for = SPEED; option cc_generic_services = false; enum ETeamInviteResult { TEAM_INVITE_SUCCESS = 0; TEAM_INVITE_FAILURE_INVITE_REJECTED = 1; TEAM_INVITE_FAILURE_INVITE_TIMEOUT = 2; TEAM_INVITE_ERROR_TEAM_AT_MEMBER_LIMIT = 3; TEAM_INVITE_ERROR_TEAM_LOCKED = 4; TEAM_INVITE_ERROR_INVITEE_NOT_AVAILABLE = 5; TEAM_INVITE_ERROR_INVITEE_BUSY = 6; TEAM_INVITE_ERROR_INVITEE_ALREADY_MEMBER = 7; TEAM_INVITE_ERROR_INVITEE_AT_TEAM_LIMIT = 8; TEAM_INVITE_ERROR_INVITEE_INSUFFICIENT_LEVEL = 9; TEAM_INVITE_ERROR_INVITER_INVALID_ACCOUNT_TYPE = 10; TEAM_INVITE_ERROR_INVITER_NOT_ADMIN = 11; TEAM_INVITE_ERROR_INCORRECT_USER_RESPONDED = 12; TEAM_INVITE_ERROR_UNSPECIFIED = 13; } message CMsgDOTATeamMemberSDO { optional uint32 account_id = 1; repeated uint32 team_ids = 2; optional uint32 profile_team_id = 3; } message CMsgDOTATeamAdminSDO { optional uint32 account_id = 1; repeated uint32 team_ids = 2; } message CMsgDOTATeamMember { optional uint32 account_id = 1; optional uint32 time_joined = 4; } message CMsgDOTATeam { repeated CMsgDOTATeamMember members = 1; optional uint32 team_id = 2; optional string name = 3; optional string tag = 4; optional uint32 admin_id = 5; optional uint32 time_created = 6; optional bool disbanded = 7; optional uint32 wins = 8; optional uint32 losses = 9; optional uint32 rank = 10; optional uint32 calibration_games_remaining = 24; optional uint64 logo = 11; optional uint64 base_logo = 12; optional uint64 banner_logo = 13; optional uint64 sponsor_logo = 14; optional string country_code = 15; optional string url = 16; optional uint32 fullgamesplayed = 17; repeated uint32 leagues = 18; optional uint32 gamesplayed = 19; optional uint32 gamesplayedwithcurrentroster = 20; optional uint32 teammatchmakinggamesplayed = 21; optional uint32 lastplayedgametime = 22; optional uint32 lastrenametime = 23; repeated uint64 recent_match_ids = 25; repeated uint64 top_match_ids = 26; optional bool pickup_team = 27; } message CMsgDOTATeamInfo { message Member { optional uint32 account_id = 1; optional uint32 time_joined = 2; optional bool admin = 3; optional bool sub = 4; } repeated CMsgDOTATeamInfo.Member members = 1; optional uint32 team_id = 2; optional string name = 3; optional string tag = 4; optional uint32 time_created = 5; optional bool pro = 6; optional bool locked = 7; optional bool pickup_team = 8; optional uint64 ugc_logo = 9; optional uint64 ugc_base_logo = 10; optional uint64 ugc_banner_logo = 11; optional uint64 ugc_sponsor_logo = 12; optional string country_code = 13; optional string url = 14; optional uint32 wins = 15; optional uint32 losses = 16; optional uint32 rank = 17; optional uint32 calibration_games_remaining = 18; optional uint32 games_played_total = 19; optional uint32 games_played_matchmaking = 20; repeated uint32 leagues_participated = 21; repeated uint64 top_match_ids = 22; repeated uint64 recent_match_ids = 23; } message CMsgDOTATeamsInfo { optional uint32 league_id = 1; repeated CMsgDOTATeamInfo teams = 2; } message CMsgDOTAMyTeamInfoRequest { } message CMsgDOTACreateTeam { optional string name = 1; optional string tag = 2; optional uint64 logo = 3; optional uint64 base_logo = 4; optional uint64 banner_logo = 5; optional uint64 sponsor_logo = 6; optional string country_code = 7; optional string url = 8; optional bool pickup_team = 9; } message CMsgDOTACreateTeamResponse { enum Result { INVALID = -1; SUCCESS = 0; NAME_EMPTY = 1; NAME_BAD_CHARACTERS = 2; NAME_TAKEN = 3; NAME_TOO_LONG = 4; TAG_EMPTY = 5; TAG_BAD_CHARACTERS = 6; TAG_TAKEN = 7; TAG_TOO_LONG = 8; CREATOR_BUSY = 9; UNSPECIFIED_ERROR = 10; CREATOR_TEAM_LIMIT_REACHED = 11; NO_LOGO = 12; CREATOR_TEAM_CREATION_COOLDOWN = 13; LOGO_UPLOAD_FAILED = 14; NAME_CHANGED_TOO_RECENTLY = 15; CREATOR_INSUFFICIENT_LEVEL = 16; INVALID_ACCOUNT_TYPE = 17; } optional CMsgDOTACreateTeamResponse.Result result = 1 [default = INVALID]; optional uint32 team_id = 2; } message CMsgDOTAEditTeamDetails { optional uint32 team_id = 1; optional string name = 2; optional string tag = 3; optional uint64 logo = 4; optional uint64 base_logo = 5; optional uint64 banner_logo = 6; optional uint64 sponsor_logo = 7; optional string country_code = 8; optional string url = 9; optional bool in_use_by_party = 10; } message CMsgDOTAEditTeamDetailsResponse { enum Result { SUCCESS = 0; FAILURE_INVALID_ACCOUNT_TYPE = 1; FAILURE_NOT_MEMBER = 2; FAILURE_TEAM_LOCKED = 3; FAILURE_UNSPECIFIED_ERROR = 4; } optional CMsgDOTAEditTeamDetailsResponse.Result result = 1 [default = SUCCESS]; } message CMsgDOTATeamProfileResponse { optional uint32 eresult = 1; optional CMsgDOTATeam team = 2; } message CMsgDOTAProTeamListRequest { } message CMsgDOTAProTeamListResponse { message TeamEntry { optional uint32 team_id = 1; optional string tag = 2; optional uint32 time_created = 3; optional uint64 logo = 4; optional string country_code = 5; optional uint32 member_count = 6; } repeated CMsgDOTAProTeamListResponse.TeamEntry teams = 1; optional uint32 eresult = 2; } message CMsgDOTATeamInvite_InviterToGC { optional uint32 account_id = 1; optional uint32 team_id = 2; } message CMsgDOTATeamInvite_GCImmediateResponseToInviter { optional ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; optional string invitee_name = 2; optional uint32 required_badge_level = 3; } message CMsgDOTATeamInvite_GCRequestToInvitee { optional uint32 inviter_account_id = 1; optional string team_name = 2; optional string team_tag = 3; optional uint64 logo = 4; } message CMsgDOTATeamInvite_InviteeResponseToGC { optional ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; } message CMsgDOTATeamInvite_GCResponseToInviter { optional ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; optional string invitee_name = 2; } message CMsgDOTATeamInvite_GCResponseToInvitee { optional ETeamInviteResult result = 1 [default = TEAM_INVITE_SUCCESS]; optional string team_name = 2; } message CMsgDOTAKickTeamMember { optional uint32 account_id = 1; optional uint32 team_id = 2; } message CMsgDOTAKickTeamMemberResponse { enum Result { SUCCESS = 0; FAILURE_INVALID_ACCOUNT_TYPE = 1; FAILURE_KICKER_NOT_ADMIN = 2; FAILURE_KICKEE_NOT_MEMBER = 3; FAILURE_TEAM_LOCKED = 4; FAILURE_UNSPECIFIED_ERROR = 5; } optional CMsgDOTAKickTeamMemberResponse.Result result = 1 [default = SUCCESS]; } message CMsgDOTATransferTeamAdmin { optional uint32 new_admin_account_id = 1; optional uint32 team_id = 2; } message CMsgDOTATransferTeamAdminResponse { enum Result { SUCCESS = 0; FAILURE_INVALID_ACCOUNT_TYPE = 1; FAILURE_NOT_ADMIN = 2; FAILURE_SAME_ACCOUNT = 3; FAILURE_NOT_MEMBER = 4; FAILURE_UNSPECIFIED_ERROR = 5; } optional CMsgDOTATransferTeamAdminResponse.Result result = 1 [default = SUCCESS]; } message CMsgDOTAChangeTeamSub { optional uint32 team_id = 1; optional uint32 member_account_id = 2; optional uint32 sub_account_id = 3; } message CMsgDOTAChangeTeamSubResponse { enum Result { SUCCESS = 0; FAILURE_INVALID_ACCOUNT_TYPE = 1; FAILURE_SAME_ACCOUNT = 2; FAILURE_NOT_ADMIN = 3; FAILURE_NOT_MEMBER = 4; FAILURE_NOT_SUB = 5; FAILURE_ALREADY_SUB = 6; FAILURE_UNSPECIFIED_ERROR = 7; } optional CMsgDOTAChangeTeamSubResponse.Result result = 1 [default = SUCCESS]; } message CMsgDOTALeaveTeam { optional uint32 team_id = 1; } message CMsgDOTALeaveTeamResponse { enum Result { SUCCESS = 0; FAILURE_NOT_MEMBER = 1; FAILURE_TEAM_LOCKED = 2; FAILURE_UNSPECIFIED_ERROR = 3; } optional CMsgDOTALeaveTeamResponse.Result result = 1 [default = SUCCESS]; } message CMsgDOTABetaParticipation { optional uint32 access_rights = 1; }