syntax = "proto2"; package bnet.protocol; // Proto extractor compiled unit - https://github.com/HearthSim/proto-extractor option java_package = "com.alterdekim"; option java_outer_classname = "Protocol"; // ref: PegasusUtil.RpcHeader message RpcHeader { required uint64 type = 1; optional uint64 retry_count = 2 [default = 0]; } // ref: PegasusUtil.RpcMessage message RpcMessage { required RpcHeader rpc_header = 1; optional bytes message_body = 2; } // ref: bnet.protocol.attribute.Attribute message Attribute { required string name = 1; required Variant value = 2; } // ref: bnet.protocol.attribute.AttributeFilter message AttributeFilter { // ref: bnet.protocol.attribute.AttributeFilter/Types/Operation enum Operation { MATCH_NONE = 0; MATCH_ANY = 1; MATCH_ALL = 2; MATCH_ALL_MOST_SPECIFIC = 3; } required Operation op = 1; repeated Attribute attribute = 2; } // ref: bnet.protocol.attribute.Variant message Variant { optional bool bool_value = 2; optional int64 int_value = 3; optional double float_value = 4; optional string string_value = 5; optional bytes blob_value = 6; optional bytes message_value = 7; optional string fourcc_value = 8; optional uint64 uint_value = 9; optional bnet.protocol.EntityId entityid_value = 10; } // ref: bnet.protocol.AccountInfo message AccountInfo { optional bool account_paid = 1 [default = false]; optional fixed32 country_id = 2 [default = 0]; optional string battle_tag = 3; optional bool manual_review = 4 [default = false]; } // ref: bnet.protocol.Address message Address { required string address = 1; optional uint32 port = 2; } // ref: bnet.protocol.ContentHandle message ContentHandle { required fixed32 region = 1; required fixed32 usage = 2; required bytes hash = 3; optional string proto_url = 4; } // ref: bnet.protocol.EntityId message EntityId { required fixed64 high = 1; required fixed64 low = 2; } // ref: bnet.protocol.ErrorInfo message ErrorInfo { required ObjectAddress object_address = 1; required uint32 status = 2; required uint32 service_hash = 3; required uint32 method_id = 4; } // ref: bnet.protocol.Header message Header { required uint32 service_id = 1; optional uint32 method_id = 2; required uint32 token = 3; optional uint64 object_id = 4 [default = 0]; optional uint32 size = 5 [default = 0]; optional uint32 status = 6 [default = 0]; repeated ErrorInfo error = 7; optional uint64 timeout = 8; } // ref: bnet.protocol.Identity message Identity { optional EntityId account_id = 1; optional EntityId game_account_id = 2; } // ref: bnet.protocol.NoData message NoData { } // ref: bnet.protocol.NORESPONSE message NORESPONSE { } // ref: bnet.protocol.ObjectAddress message ObjectAddress { required ProcessId host = 1; optional uint64 object_id = 2 [default = 0]; } // ref: bnet.protocol.Path message Path { repeated uint32 ordinal = 1 [packed=true]; } // ref: bnet.protocol.Privilege message Privilege { required string name = 1; required uint32 value = 2; } // ref: bnet.protocol.ProcessId message ProcessId { required uint32 label = 1; required uint32 epoch = 2; } // ref: bnet.protocol.Role message Role { required uint32 id = 1; required string name = 2; repeated string privilege = 3; repeated uint32 assignable_role = 4 [packed=true]; optional bool required = 5 [default = false]; optional bool unique = 6 [default = false]; optional uint32 relegation_role = 7; repeated bnet.protocol.Attribute attribute = 8; } // ref: bnet.protocol.RoleSet message RoleSet { required string program = 1; required string service = 2; optional string subtype = 3 [default = "default"]; repeated Role role = 4; repeated uint32 default_role = 5 [packed=true]; optional int32 max_members = 6; repeated bnet.protocol.Attribute attribute = 7; } // ref: bnet.protocol.RoleSetConfig message RoleSetConfig { repeated Privilege privilege = 1; required RoleSet role_set = 2; } /////////////// protocol end // ref: bnet.protocol.account.AccountBlob message AccountBlob { required fixed32 id = 2; required uint32 region = 3; repeated string email = 4; required uint64 flags = 5; optional uint64 secure_release = 6; optional uint64 whitelist_start = 7; optional uint64 whitelist_end = 8; required string full_name = 10; repeated AccountLicense licenses = 20; repeated AccountCredential credentials = 21; repeated GameAccountLink account_links = 22; optional string battle_tag = 23; optional fixed32 default_currency = 25; optional uint32 legal_region = 26; optional fixed32 legal_locale = 27; required uint64 cache_expiration = 30; optional ParentalControlInfo parental_control_info = 31; optional string country = 32; optional uint32 preferred_region = 33; } // ref: bnet.protocol.account.AccountBlobList message AccountBlobList { repeated AccountBlob blob = 1; } // ref: bnet.protocol.account.AccountCredential message AccountCredential { required uint32 id = 1; optional bytes data = 2; } // ref: bnet.protocol.account.AccountFieldOptions message AccountFieldOptions { optional bool all_f1elds = 1; // clashes optional bool field_account_level_info = 2; optional bool field_privacy_info = 3; optional bool field_parental_control_info = 4; optional bool field_game_level_info = 6; optional bool field_game_status = 7; optional bool field_game_accounts = 8; } // ref: bnet.protocol.account.AccountFieldTags message AccountFieldTags { optional fixed32 account_level_info_tag = 2; optional fixed32 privacy_info_tag = 3; optional fixed32 parental_control_info_tag = 4; repeated ProgramTag game_level_info_tags = 7; repeated ProgramTag game_status_tags = 9; repeated RegionTag game_account_tags = 11; } // ref: bnet.protocol.account.AccountId message AccountId { required fixed32 id = 1; } // ref: bnet.protocol.account.AccountLevelInfo message AccountLevelInfo { repeated AccountLicense licenses = 3; optional fixed32 default_currency = 4; optional string country = 5; optional uint32 preferred_region = 6; } // ref: bnet.protocol.account.AccountLicense message AccountLicense { required uint32 id = 1; optional uint64 expires = 2; } // ref: bnet.protocol.account.AccountReference message AccountReference { optional fixed32 id = 1; optional string email = 2; optional GameAccountHandle handle = 3; optional string battle_tag = 4; optional uint32 region = 10 [default = 0]; } // ref: bnet.protocol.account.AccountServiceConfig message AccountServiceConfig { repeated AccountServiceRegion region = 1; } // ref: bnet.protocol.account.AccountServiceRegion message AccountServiceRegion { required uint32 id = 1; required string shard = 2; } // ref: bnet.protocol.account.AccountState message AccountState { optional AccountLevelInfo account_level_info = 1; optional PrivacyInfo privacy_info = 2; optional ParentalControlInfo parental_control_info = 3; repeated GameLevelInfo game_level_info = 5; repeated GameStatus game_status = 6; repeated GameAccountList game_accounts = 7; } // ref: bnet.protocol.account.AccountStateNotification message AccountStateNotification { optional AccountState state = 1; optional uint64 subscriber_id = 2; optional AccountFieldTags account_tags = 3; optional bool subscription_completed = 4; } // ref: bnet.protocol.account.AccountStateTagged message AccountStateTagged { optional AccountState account_state = 1; optional AccountFieldTags tags = 2; } // ref: bnet.protocol.account.CacheExpireRequest message CacheExpireRequest { repeated AccountId account = 1; repeated GameAccountHandle game_account = 2; repeated string email = 3; } // ref: bnet.protocol.account.CAIS message CAIS { optional uint32 played_minutes = 1; optional uint32 rested_minutes = 2; optional uint64 last_heard_time = 3; } // ref: bnet.protocol.account.CreateGameAccountRequest message CreateGameAccountRequest { optional AccountId account = 1; optional uint32 region = 2; optional fixed32 program = 3; optional uint32 realm_permissions = 4 [default = 1]; } // ref: bnet.protocol.account.CredentialUpdateRequest message CredentialUpdateRequest { required AccountId account = 1; repeated AccountCredential old_credentials = 2; repeated AccountCredential new_credentials = 3; optional uint32 region = 4; } // ref: bnet.protocol.account.CredentialUpdateResponse message CredentialUpdateResponse { } // ref: bnet.protocol.account.CurrencyRestriction message CurrencyRestriction { required string currency = 1; required string authenticator_cap = 2; required string soft_cap = 3; } // ref: bnet.protocol.account.FlagUpdateRequest message FlagUpdateRequest { required AccountId account = 1; optional uint32 region = 2; required uint64 flag = 3; required bool active = 4; } // ref: bnet.protocol.account.FlagUpdateResponse message FlagUpdateResponse { } // ref: bnet.protocol.account.ForwardCacheExpireRequest message ForwardCacheExpireRequest { optional bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.account.GameAccountBlob message GameAccountBlob { required GameAccountHandle game_account = 1; optional string name = 2 [default = ""]; optional uint32 realm_permissions = 3 [default = 0]; required uint32 status = 4; optional uint64 flags = 5 [default = 0]; optional uint32 billing_flags = 6 [default = 0]; required uint64 cache_expiration = 7; optional uint64 subscription_expiration = 10; optional uint32 units_remaining = 11; optional uint64 status_expiration = 12; optional uint32 box_level = 13; optional uint64 box_level_expiration = 14; repeated AccountLicense licenses = 20; } // ref: bnet.protocol.account.GameAccountBlobList message GameAccountBlobList { repeated GameAccountBlob blob = 1; } // ref: bnet.protocol.account.GameAccountFieldOptions message GameAccountFieldOptions { optional bool all_f1elds = 1; // clashes optional bool field_game_level_info = 2; optional bool field_game_time_info = 3; optional bool field_game_status = 4; } // ref: bnet.protocol.account.GameAccountFieldTags message GameAccountFieldTags { optional fixed32 game_level_info_tag = 2; optional fixed32 game_time_info_tag = 3; optional fixed32 game_status_tag = 4; } // ref: bnet.protocol.account.GameAccountHandle message GameAccountHandle { required fixed32 id = 1; required fixed32 program = 2; required uint32 region = 3; } // ref: bnet.protocol.account.GameAccountLink message GameAccountLink { required GameAccountHandle game_account = 1; required string name = 2; } // ref: bnet.protocol.account.GameAccountList message GameAccountList { optional uint32 region = 3; repeated GameAccountHandle handle = 4; } // ref: bnet.protocol.account.GameAccountNotification message GameAccountNotification { repeated GameAccountList region_delta = 1; optional uint64 subscriber_id = 2; optional AccountFieldTags account_tags = 3; } // ref: bnet.protocol.account.GameAccountSessionNotification message GameAccountSessionNotification { optional GameAccountHandle game_account = 1; optional GameSessionUpdateInfo session_info = 2; } // ref: bnet.protocol.account.GameAccountState message GameAccountState { optional GameLevelInfo game_level_info = 1; optional GameTimeInfo game_time_info = 2; optional GameStatus game_status = 3; } // ref: bnet.protocol.account.GameAccountStateNotification message GameAccountStateNotification { optional GameAccountState state = 1; optional uint64 subscriber_id = 2; optional GameAccountFieldTags game_account_tags = 3; optional bool subscription_completed = 4; } // ref: bnet.protocol.account.GameAccountStateTagged message GameAccountStateTagged { optional GameAccountState game_account_state = 1; optional GameAccountFieldTags game_account_tags = 2; } // ref: bnet.protocol.account.GameLevelInfo message GameLevelInfo { optional bool is_starter_edition = 3; optional bool is_trial = 4; optional bool is_lifetime = 5; optional bool is_restricted = 6; optional bool is_beta = 7; optional string name = 8; optional fixed32 program = 9; repeated AccountLicense licenses = 10; optional uint32 realm_permissions = 11; } // ref: bnet.protocol.account.GameSessionInfo message GameSessionInfo { optional uint32 start_time = 3; optional GameSessionLocation location = 4; optional bool has_benefactor = 5; optional bool is_using_igr = 6; optional bool parental_controls_active = 7; } // ref: bnet.protocol.account.GameSessionLocation message GameSessionLocation { optional string ip_address = 1; optional uint32 country = 2; optional string city = 3; } // ref: bnet.protocol.account.GameSessionUpdateInfo message GameSessionUpdateInfo { optional CAIS cais = 8; } // ref: bnet.protocol.account.GameStatus message GameStatus { optional bool is_suspended = 4; optional bool is_banned = 5; optional uint64 suspension_expires = 6; optional fixed32 program = 7; } // ref: bnet.protocol.account.GameTimeInfo message GameTimeInfo { optional bool is_unlimited_play_time = 3; optional uint64 play_time_expires = 5; optional bool is_subscription = 6; optional bool is_recurring_subscription = 7; } // ref: bnet.protocol.account.GameTimeRemainingInfo message GameTimeRemainingInfo { optional uint32 minutes_remaining = 1; optional uint32 parental_daily_minutes_remaining = 2; optional uint32 parental_weekly_minutes_remaining = 3; } // ref: bnet.protocol.account.GetAccountRequest message GetAccountRequest { optional AccountReference ref = 1; optional bool fetch_all = 10 [default = false]; optional bool fetch_blob = 11 [default = false]; optional bool fetch_id = 12 [default = false]; optional bool fetch_email = 13 [default = false]; optional bool fetch_battle_tag = 14 [default = false]; optional bool fetch_full_name = 15 [default = false]; optional bool fetch_links = 16 [default = false]; optional bool fetch_parental_controls = 17 [default = false]; } // ref: bnet.protocol.account.GetAccountResponse message GetAccountResponse { optional AccountBlob blob = 11; optional AccountId id = 12; repeated string email = 13; optional string battle_tag = 14; optional string full_name = 15; repeated GameAccountLink links = 16; optional ParentalControlInfo parental_control_info = 17; } // ref: bnet.protocol.account.GetAccountStateRequest message GetAccountStateRequest { optional bnet.protocol.EntityId entity_id = 1; optional uint32 program = 2; optional uint32 region = 3; optional AccountFieldOptions options = 10; optional AccountFieldTags tags = 11; } // ref: bnet.protocol.account.GetAccountStateResponse message GetAccountStateResponse { optional AccountState state = 1; optional AccountFieldTags tags = 2; } // ref: bnet.protocol.account.GetCAISInfoRequest message GetCAISInfoRequest { optional bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.account.GetCAISInfoResponse message GetCAISInfoResponse { optional CAIS cais_info = 1; } // ref: bnet.protocol.account.GetEBalanceRequest message GetEBalanceRequest { required AccountId account_id = 1; required string currency = 2; optional uint32 currency_home_region = 3; } // ref: bnet.protocol.account.GetEBalanceResponse message GetEBalanceResponse { optional string balance = 1; } // ref: bnet.protocol.account.GetEBalanceRestrictionsRequest message GetEBalanceRestrictionsRequest { optional uint32 currency_home_region = 1; } // ref: bnet.protocol.account.GetEBalanceRestrictionsResponse message GetEBalanceRestrictionsResponse { repeated CurrencyRestriction currency_restrictions = 1; } // ref: bnet.protocol.account.GetGameAccountStateRequest message GetGameAccountStateRequest { optional bnet.protocol.EntityId account_id = 1; optional bnet.protocol.EntityId game_account_id = 2; optional GameAccountFieldOptions options = 10; optional GameAccountFieldTags tags = 11; } // ref: bnet.protocol.account.GetGameAccountStateResponse message GetGameAccountStateResponse { optional GameAccountState state = 1; optional GameAccountFieldTags tags = 2; } // ref: bnet.protocol.account.GetGameSessionInfoRequest message GetGameSessionInfoRequest { optional bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.account.GetGameSessionInfoResponse message GetGameSessionInfoResponse { optional GameSessionInfo session_info = 2; } // ref: bnet.protocol.account.GetGameTimeRemainingInfoRequest message GetGameTimeRemainingInfoRequest { optional bnet.protocol.EntityId game_account_id = 1; optional bnet.protocol.EntityId account_id = 2; } // ref: bnet.protocol.account.GetGameTimeRemainingInfoResponse message GetGameTimeRemainingInfoResponse { optional GameTimeRemainingInfo game_time_remaining_info = 1; } // ref: bnet.protocol.account.GetLicensesRequest message GetLicensesRequest { optional bnet.protocol.EntityId target_id = 1; optional bool get_account_licenses = 2; optional bool get_game_account_licenses = 3; optional bool get_dynamic_account_licenses = 4; optional fixed32 program_id = 5; optional bool exclude_unknown_program = 6 [default = false]; } // ref: bnet.protocol.account.GetLicensesResponse message GetLicensesResponse { repeated AccountLicense licenses = 1; } // ref: bnet.protocol.account.GetWalletListRequest message GetWalletListRequest { required AccountId account_id = 1; optional bool refresh = 2 [default = false]; } // ref: bnet.protocol.account.GetWalletListResponse message GetWalletListResponse { repeated Wallet wallets = 1; } // ref: bnet.protocol.account.IsIgrAddressRequest message IsIgrAddressRequest { optional string client_address = 1; optional uint32 region = 2; } // ref: bnet.protocol.account.ParentalControlInfo message ParentalControlInfo { optional string timezone = 3; optional uint32 minutes_per_day = 4; optional uint32 minutes_per_week = 5; optional bool can_receive_voice = 6; optional bool can_send_voice = 7; repeated bool play_schedule = 8; } // ref: bnet.protocol.account.PrivacyInfo message PrivacyInfo { // ref: bnet.protocol.account.PrivacyInfo/Types/GameInfoPrivacy enum GameInfoPrivacy { PRIVACY_ME = 0; PRIVACY_FRIENDS = 1; PRIVACY_EVERYONE = 2; } optional bool is_using_rid = 3; optional bool is_real_id_visible_for_view_friends = 4; optional bool is_hidden_from_friend_finder = 5; optional GameInfoPrivacy game_info_privacy = 6 [default = PRIVACY_FRIENDS]; } // ref: bnet.protocol.account.ProgramTag message ProgramTag { optional fixed32 program = 1; optional fixed32 tag = 2; } // ref: bnet.protocol.account.RegionTag message RegionTag { optional fixed32 region = 1; optional fixed32 tag = 2; } // ref: bnet.protocol.account.SubscriberReference message SubscriberReference { optional uint64 object_id = 1 [default = 0]; optional bnet.protocol.EntityId entity_id = 2; optional AccountFieldOptions account_options = 3; optional AccountFieldTags account_tags = 4; optional GameAccountFieldOptions game_account_options = 5; optional GameAccountFieldTags game_account_tags = 6; } // ref: bnet.protocol.account.SubscriptionUpdateRequest message SubscriptionUpdateRequest { repeated SubscriberReference ref = 2; } // ref: bnet.protocol.account.SubscriptionUpdateResponse message SubscriptionUpdateResponse { repeated SubscriberReference ref = 1; } // ref: bnet.protocol.account.Wallet message Wallet { required uint32 region = 1; required uint64 wallet_id = 2; required uint32 wallet_type = 3; optional string description = 4; required uint32 country_id = 5; optional string state = 6; optional string city = 7; optional string postal_code = 8; optional bytes payment_info = 9; optional string bin = 10; optional string locale_id = 11; optional string street = 12; optional string first_name = 13; optional string last_name = 14; optional uint64 birth_date = 15; } // ref: bnet.protocol.account.Wallets message Wallets { repeated Wallet wallets = 1; } /////////////// // ref: bnet.protocol.authentication.AccountSettingsNotification message AccountSettingsNotification { repeated bnet.protocol.AccountLicense licenses = 1; optional bool is_using_rid = 2; optional bool is_playing_from_igr = 3; optional bool can_receive_voice = 4; optional bool can_send_voice = 5; } // ref: bnet.protocol.authentication.GameAccountSelectedRequest message GameAccountSelectedRequest { required uint32 result = 1; optional bnet.protocol.EntityId game_account = 2; } // ref: bnet.protocol.authentication.GenerateSSOTokenRequest message GenerateSSOTokenRequest { optional fixed32 program = 1; } // ref: bnet.protocol.authentication.GenerateSSOTokenResponse message GenerateSSOTokenResponse { optional bytes sso_id = 1; optional bytes sso_secret = 2; } // ref: bnet.protocol.authentication.LogonQueueUpdateRequest message LogonQueueUpdateRequest { required uint32 position = 1; required uint64 estimated_time = 2; required uint64 eta_deviation_in_sec = 3; } // ref: bnet.protocol.authentication.LogonRequest message LogonRequest { optional string program = 1; optional string platform = 2; optional string locale = 3; optional string email = 4; optional string version = 5; optional int32 application_version = 6; optional bool public_computer = 7; optional bytes sso_id = 8; optional bool disconnect_on_cookie_fail = 9 [default = false]; optional bool allow_logon_queue_notifications = 10 [default = false]; optional bool web_client_verification = 11 [default = false]; optional bytes cached_web_credentials = 12; optional string user_agent = 14; } // ref: bnet.protocol.authentication.LogonResult message LogonResult { required uint32 error_code = 1; optional bnet.protocol.EntityId account = 2; repeated bnet.protocol.EntityId game_account = 3; optional string email = 4; repeated uint32 available_region = 5; optional uint32 connected_region = 6; optional string battle_tag = 7; optional string geoip_country = 8; } // ref: bnet.protocol.authentication.LogonUpdateRequest message LogonUpdateRequest { required uint32 error_code = 1; } // ref: bnet.protocol.authentication.MemModuleLoadRequest message MemModuleLoadRequest { required bnet.protocol.ContentHandle handle = 1; required bytes key = 2; required bytes input = 3; } // ref: bnet.protocol.authentication.MemModuleLoadResponse message MemModuleLoadResponse { required bytes data = 1; } // ref: bnet.protocol.authentication.ModuleLoadRequest message ModuleLoadRequest { required bnet.protocol.ContentHandle module_handle = 1; optional bytes message = 2; } // ref: bnet.protocol.authentication.ModuleMessageRequest message ModuleMessageRequest { required int32 module_id = 1; optional bytes message = 2; } // ref: bnet.protocol.authentication.ModuleNotification message ModuleNotification { optional int32 module_id = 2; optional uint32 result = 3; } // ref: bnet.protocol.authentication.SelectGameAccountRequest message SelectGameAccountRequest { required bnet.protocol.EntityId game_account = 1; } // ref: bnet.protocol.authentication.ServerStateChangeRequest message ServerStateChangeRequest { required uint32 state = 1; required uint64 event_time = 2; } // ref: bnet.protocol.authentication.VerifyWebCredentialsRequest message VerifyWebCredentialsRequest { optional bytes web_credentials = 1; } // ref: bnet.protocol.authentication.VersionInfo message VersionInfo { optional uint32 number = 1; optional string patch = 2; optional bool is_optional = 3; optional uint64 kick_time = 4; } // ref: bnet.protocol.authentication.VersionInfoNotification message VersionInfoNotification { optional VersionInfo version_info = 1; } //////////////// // ref: bnet.protocol.challenge.Challenge message Challenge { required fixed32 type = 1; optional string info = 2; optional string answer = 3; optional uint32 retries = 4; } // ref: bnet.protocol.challenge.ChallengeAnsweredRequest message ChallengeAnsweredRequest { required string answer = 1; optional bytes data = 2; optional uint32 id = 3; } // ref: bnet.protocol.challenge.ChallengeAnsweredResponse message ChallengeAnsweredResponse { optional bytes data = 1; optional bool do_retry = 2; optional bool record_not_found = 3; } // ref: bnet.protocol.challenge.ChallengeCancelledRequest message ChallengeCancelledRequest { optional uint32 id = 1; } // ref: bnet.protocol.challenge.ChallengeExternalRequest message ChallengeExternalRequest { optional string request_token = 1; optional string payload_type = 2; optional bytes payload = 3; } // ref: bnet.protocol.challenge.ChallengeExternalResult message ChallengeExternalResult { optional string request_token = 1; optional bool passed = 2 [default = true]; } // ref: bnet.protocol.challenge.ChallengePickedRequest message ChallengePickedRequest { required fixed32 challenge = 1; optional uint32 id = 2; optional bool new_challenge_protocol = 3 [default = false]; } // ref: bnet.protocol.challenge.ChallengePickedResponse message ChallengePickedResponse { optional bytes data = 1; } // ref: bnet.protocol.challenge.ChallengeResultRequest message ChallengeResultRequest { optional uint32 id = 1; optional fixed32 type = 2; optional uint32 error_id = 3; optional bytes answer = 4; } // ref: bnet.protocol.challenge.ChallengeUserRequest message ChallengeUserRequest { repeated Challenge challenges = 1; required fixed32 context = 2; optional uint32 id = 3; optional uint64 deadline = 4; repeated bnet.protocol.Attribute attributes = 5; optional bnet.protocol.EntityId game_account_id = 6; } // ref: bnet.protocol.challenge.SendChallengeToUserRequest message SendChallengeToUserRequest { optional bnet.protocol.ProcessId peer_id = 1; optional bnet.protocol.EntityId game_account_id = 2; repeated Challenge challenges = 3; required fixed32 context = 4; optional uint64 timeout = 5; repeated bnet.protocol.Attribute attributes = 6; } // ref: bnet.protocol.challenge.SendChallengeToUserResponse message SendChallengeToUserResponse { optional uint32 id = 1; } ////// chat // ref: bnet.protocol.chat.ChannelState message ChannelState { optional string identity = 1; optional fixed32 program = 2; optional fixed32 locale = 3; optional bool public = 4 [default = false]; optional uint32 bucket_index = 5; } /////////////////// // ref: bnet.protocol.config.RPCMeterConfig message RPCMeterConfig { repeated RPCMethodConfig method = 1; optional uint32 income_per_second = 2 [default = 1]; optional uint32 initial_balance = 3; optional uint32 cap_balance = 4; optional float startup_period = 5 [default = 0]; } // ref: bnet.protocol.config.RPCMethodConfig message RPCMethodConfig { optional string service_name = 1; optional string method_name = 2; optional uint32 fixed_call_cost = 3 [default = 1]; optional uint32 fixed_packet_size = 4 [default = 0]; optional float variable_multiplier = 5 [default = 0]; optional float multiplier = 6 [default = 1]; optional uint32 rate_limit_count = 7; optional uint32 rate_limit_seconds = 8; optional uint32 max_packet_size = 9; optional uint32 max_encoded_size = 10; optional float timeout = 11; } ///////////////// conn // ref: bnet.protocol.connection.BindRequest message BindRequest { repeated fixed32 imported_service_hash = 1; repeated BoundService exported_service = 2; } // ref: bnet.protocol.connection.BindResponse message BindResponse { repeated uint32 imported_service_id = 1 [packed=true]; } // ref: bnet.protocol.connection.BoundService message BoundService { required fixed32 hash = 1; required uint32 id = 2; } // ref: bnet.protocol.connection.ConnectionMeteringContentHandles message ConnectionMeteringContentHandles { repeated bnet.protocol.ContentHandle content_handle = 1; } // ref: bnet.protocol.connection.ConnectRequest message ConnectRequest { optional bnet.protocol.ProcessId client_id = 1; optional BindRequest bind_request = 2; } // ref: bnet.protocol.connection.ConnectResponse message ConnectResponse { required bnet.protocol.ProcessId server_id = 1; optional bnet.protocol.ProcessId client_id = 2; optional uint32 bind_result = 3; optional BindResponse bind_response = 4; optional ConnectionMeteringContentHandles content_handle_array = 5; optional uint64 server_time = 6; } // ref: bnet.protocol.connection.DisconnectNotification message DisconnectNotification { required uint32 error_code = 1; optional string reason = 2; } // ref: bnet.protocol.connection.DisconnectRequest message DisconnectRequest { required uint32 error_code = 1; } // ref: bnet.protocol.connection.EchoRequest message EchoRequest { optional fixed64 time = 1; optional bool network_only = 2 [default = false]; optional bytes payload = 3; } // ref: bnet.protocol.connection.EchoResponse message EchoResponse { optional fixed64 time = 1; optional bytes payload = 2; } // ref: bnet.protocol.connection.EncryptRequest message EncryptRequest { } ////// game_utilities // ref: bnet.protocol.game_utilities.ClientRequest message ClientRequest { repeated bnet.protocol.Attribute attribute = 1; optional bnet.protocol.ProcessId host = 2; optional bnet.protocol.EntityId bnet_account_id = 3; optional bnet.protocol.EntityId game_account_id = 4; } // ref: bnet.protocol.game_utilities.ClientResponse message ClientResponse { repeated bnet.protocol.Attribute attribute = 1; } // ref: bnet.protocol.game_utilities.GameAccountOfflineNotification message GameAccountOfflineNotification { required bnet.protocol.EntityId game_account_id = 1; optional bnet.protocol.ProcessId host = 2; } // ref: bnet.protocol.game_utilities.GameAccountOnlineNotification message GameAccountOnlineNotification { required bnet.protocol.EntityId game_account_id = 1; optional bnet.protocol.ProcessId host = 2; } // ref: bnet.protocol.game_utilities.GetPlayerVariablesRequest message GetPlayerVariablesRequest { repeated PlayerVariables player_variables = 1; optional bnet.protocol.ProcessId host = 2; } // ref: bnet.protocol.game_utilities.GetPlayerVariablesResponse message GetPlayerVariablesResponse { repeated PlayerVariables player_variables = 1; } // ref: bnet.protocol.game_utilities.PlayerVariables message PlayerVariables { required bnet.protocol.Identity identity = 1; optional double rating = 2; repeated bnet.protocol.Attribute attribute = 3; } // ref: bnet.protocol.game_utilities.PresenceChannelCreatedRequest message PresenceChannelCreatedRequest { required bnet.protocol.EntityId id = 1; optional bnet.protocol.EntityId game_account_id = 3; optional bnet.protocol.EntityId bnet_account_id = 4; optional bnet.protocol.ProcessId host = 5; } // ref: bnet.protocol.game_utilities.ServerRequest message ServerRequest { repeated bnet.protocol.Attribute attribute = 1; required fixed32 program = 2; optional bnet.protocol.ProcessId host = 3; } // ref: bnet.protocol.game_utilities.ServerResponse message ServerResponse { repeated bnet.protocol.Attribute attribute = 1; } // ref: bnet.protocol.notification.FindClientRequest message FindClientRequest { required bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.notification.FindClientResponse message FindClientResponse { required uint32 label = 1; optional bnet.protocol.ProcessId client_process_id = 2; } // ref: bnet.protocol.notification.Notification message Notification { optional bnet.protocol.EntityId sender_id = 1; required bnet.protocol.EntityId target_id = 2; required string type = 3; repeated bnet.protocol.Attribute attribute = 4; optional bnet.protocol.EntityId sender_account_id = 5; optional bnet.protocol.EntityId target_account_id = 6; optional string sender_battle_tag = 7; } // ref: bnet.protocol.notification.RegisterClientRequest message RegisterClientRequest { required bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.notification.UnregisterClientRequest message UnregisterClientRequest { required bnet.protocol.EntityId entity_id = 1; } // // ref: bnet.protocol.presence.ChannelState message PresenceChannelState { optional bnet.protocol.EntityId entity_id = 1; repeated FieldOperation field_operation = 2; optional bool healing = 3 [default = false]; } // ref: bnet.protocol.presence.Field message Field { required FieldKey key = 1; required bnet.protocol.Variant value = 2; } // ref: bnet.protocol.presence.FieldKey message FieldKey { required uint32 program = 1; required uint32 group = 2; required uint32 field = 3; optional uint64 index = 4 [default = 0]; } // ref: bnet.protocol.presence.FieldOperation message FieldOperation { // ref: bnet.protocol.presence.FieldOperation/Types/OperationType enum OperationType { SET = 0; CLEAR = 1; } required Field field = 1; optional OperationType operation = 2 [default = SET]; } // ref: bnet.protocol.presence.OwnershipRequest message OwnershipRequest { required bnet.protocol.EntityId entity_id = 1; optional bool release_ownership = 2 [default = false]; } // ref: bnet.protocol.presence.QueryRequest message QueryRequest { required bnet.protocol.EntityId entity_id = 1; repeated FieldKey key = 2; } // ref: bnet.protocol.presence.QueryResponse message QueryResponse { repeated Field field = 2; } // ref: bnet.protocol.presence.RichPresence message RichPresence { required fixed32 program_id = 1; required fixed32 stream_id = 2; required uint32 index = 3; } // ref: bnet.protocol.presence.SubscribeNotificationRequest message SubscribeNotificationRequest { required bnet.protocol.EntityId entity_id = 1; } // ref: bnet.protocol.presence.SubscribeRequest message SubscribeRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId entity_id = 2; required uint64 object_id = 3; repeated fixed32 program_id = 4; } // ref: bnet.protocol.presence.UnsubscribeRequest message UnsubscribeRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId entity_id = 2; } // ref: bnet.protocol.presence.UpdateRequest message UpdateRequest { required bnet.protocol.EntityId entity_id = 1; repeated FieldOperation field_operation = 2; } // PresenceChannelState // ref: bnet.protocol.profanity.WordFilter message WordFilter { required string type = 1; required string regex = 2; } // ref: bnet.protocol.profanity.WordFilters message WordFilters { repeated WordFilter filters = 1; } // ref: bnet.protocol.resources.ContentHandleRequest message ContentHandleRequest { required fixed32 program_id = 1; required fixed32 stream_id = 2; optional fixed32 locale = 3 [default = 1701729619]; } ///////// // ref: bnet.protocol.server_pool.GetLoadRequest message GetLoadRequest { } // ref: bnet.protocol.server_pool.PoolStateRequest message PoolStateRequest { } // ref: bnet.protocol.server_pool.PoolStateResponse message PoolStateResponse { repeated ServerInfo info = 1; } // ref: bnet.protocol.server_pool.ServerInfo message ServerInfo { required bnet.protocol.ProcessId host = 1; optional bool replace = 2 [default = false]; optional ServerState state = 3; repeated bnet.protocol.Attribute attribute = 4; optional fixed32 program_id = 5; } // ref: bnet.protocol.server_pool.ServerState message ServerState { optional float current_load = 1 [default = 1]; optional uint32 game_count = 2 [default = 0]; optional uint32 player_count = 3 [default = 0]; } ///////////// // ref: bnet.protocol.friends.AssignRoleRequest message AssignRoleRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId target_id = 2; repeated int32 role = 3; } // ref: bnet.protocol.friends.Friend message Friend { required bnet.protocol.EntityId id = 1; repeated bnet.protocol.Attribute attribute = 2; repeated uint32 role = 3 [packed=true]; optional uint64 privileges = 4 [default = 0]; optional uint64 attributes_epoch = 5; optional string full_name = 6; optional string battle_tag = 7; } // ref: bnet.protocol.friends.FriendInvitation message FriendInvitation { optional bool first_received = 1 [default = false]; repeated uint32 role = 2 [packed=true]; } // ref: bnet.protocol.friends.FriendInvitationParams message FriendInvitationParams { optional string target_email = 1; optional string target_battle_tag = 2; optional string inviter_battle_tag = 3; optional string inviter_full_name = 4; optional string invitee_display_name = 5; repeated uint32 role = 6 [packed=true]; } // ref: bnet.protocol.friends.FriendNotification message FriendNotification { required Friend target = 1; optional bnet.protocol.EntityId game_account_id = 2; } // ref: bnet.protocol.friends.GenericFriendRequest message GenericFriendRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId target_id = 2; } // ref: bnet.protocol.friends.GenericFriendResponse message GenericFriendResponse { optional Friend target_friend = 1; } // ref: bnet.protocol.friends.InvitationNotification message InvitationNotification { required bnet.protocol.Invitation invitation = 1; optional bnet.protocol.EntityId game_account_id = 2; optional uint32 reason = 3 [default = 0]; } // ref: bnet.protocol.friends.SubscribeToFriendsRequest message SubscribeToFriendsRequest { optional bnet.protocol.EntityId agent_id = 1; required uint64 object_id = 2; } // ref: bnet.protocol.friends.SubscribeToFriendsResponse message SubscribeToFriendsResponse { optional uint32 max_friends = 1; optional uint32 max_received_invitations = 2; optional uint32 max_sent_invitations = 3; repeated bnet.protocol.Role role = 4; repeated Friend friends = 5; repeated bnet.protocol.Invitation sent_invitations = 6; repeated bnet.protocol.Invitation received_invitations = 7; } // ref: bnet.protocol.friends.UnsubscribeToFriendsRequest message UnsubscribeToFriendsRequest { optional bnet.protocol.EntityId agent_id = 1; optional uint64 object_id = 2; } // ref: bnet.protocol.friends.UpdateFriendStateNotification message UpdateFriendStateNotification { required Friend changed_friend = 1; optional bnet.protocol.EntityId game_account_id = 2; } // ref: bnet.protocol.friends.UpdateFriendStateRequest message UpdateFriendStateRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId target_id = 2; repeated bnet.protocol.Attribute attribute = 3; optional uint64 attributes_epoch = 4; } // ref: bnet.protocol.friends.ViewFriendsRequest message ViewFriendsRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId target_id = 2; repeated uint32 role = 3 [packed=true]; } // ref: bnet.protocol.friends.ViewFriendsResponse message ViewFriendsResponse { repeated Friend friends = 1; } // // ref: bnet.protocol.invitation.GenericRequest message GenericRequest { optional bnet.protocol.EntityId agent_id = 1; optional bnet.protocol.EntityId target_id = 2; required fixed64 invitation_id = 3; optional string invitee_name = 4; optional string inviter_name = 5; repeated uint32 previous_role = 6 [packed=true]; repeated uint32 desired_role = 7 [packed=true]; optional uint32 reason = 8; } // ref: bnet.protocol.invitation.Invitation message Invitation { required fixed64 id = 1; required bnet.protocol.Identity inviter_identity = 2; required bnet.protocol.Identity invitee_identity = 3; optional string inviter_name = 4; optional string invitee_name = 5; optional string invitation_message = 6; optional uint64 creation_time = 7; optional uint64 expiration_time = 8; optional bnet.protocol.FriendInvitation friend_invite = 103; optional bnet.protocol.ChannelInvitation channel_invitation = 105; } // ref: bnet.protocol.invitation.InvitationParams message InvitationParams { optional string invitation_message = 1; optional uint64 expiration_time = 2 [default = 0]; optional bnet.protocol.FriendInvitationParams friend_params = 103; optional bnet.protocol.ChannelInvitationParams channel_params = 105; } // ref: bnet.protocol.invitation.InvitationTarget message InvitationTarget { optional bnet.protocol.Identity identity = 1; optional string email = 2; optional string battle_tag = 3; } // ref: bnet.protocol.invitation.SendInvitationRequest message SendInvitationRequest { optional bnet.protocol.Identity agent_identity = 1; required bnet.protocol.EntityId target_id = 2; required InvitationParams params = 3; optional bnet.protocol.AccountInfo agent_info = 4; optional InvitationTarget target = 5; } // ref: bnet.protocol.invitation.SendInvitationResponse message SendInvitationResponse { optional Invitation invitation = 2; } // ref: bnet.protocol.invitation.Suggestion message Suggestion { optional bnet.protocol.EntityId channel_id = 1; required bnet.protocol.EntityId suggester_id = 2; required bnet.protocol.EntityId suggestee_id = 3; optional string suggester_name = 4; optional string suggestee_name = 5; optional bnet.protocol.EntityId suggester_account_id = 6; } // ref: bnet.protocol.invitation.UpdateInvitationRequest message UpdateInvitationRequest { optional bnet.protocol.Identity agent_identity = 1; required fixed64 invitation_id = 2; required InvitationParams params = 3; } // ref: bnet.protocol.game_master.CancelGameEntryRequest message CancelGameEntryRequest { required fixed64 request_id = 1; optional fixed64 factory_id = 2; repeated Player player = 3; } // ref: bnet.protocol.game_master.ChangeGameRequest message ChangeGameRequest { required GameHandle game_handle = 1; optional bool open = 2; repeated bnet.protocol.Attribute attribute = 3; optional bool replace = 4 [default = false]; } // ref: bnet.protocol.game_master.ConnectInfo message ConnectInfo { required bnet.protocol.EntityId member_id = 1; required string host = 2; required int32 port = 3; optional bytes token = 4; repeated bnet.protocol.Attribute attribute = 5; } // ref: bnet.protocol.game_master.FactoryUpdateNotification message FactoryUpdateNotification { // ref: bnet.protocol.game_master.FactoryUpdateNotification/Types/Operation enum Operation { ADD = 1; REMOVE = 2; CHANGE = 3; } required Operation op = 1; required GameFactoryDescription description = 2; optional fixed32 program_id = 3; } // ref: bnet.protocol.game_master.FindGameRequest message FindGameRequest { repeated Player player = 1; optional fixed64 factory_id = 2; optional GameProperties properties = 3; optional uint64 object_id = 4; optional fixed64 request_id = 5; optional bool advanced_notification = 6 [default = false]; } // ref: bnet.protocol.game_master.FindGameResponse message FindGameResponse { optional fixed64 request_id = 1; optional fixed64 factory_id = 2; optional bool queued = 3 [default = false]; } // ref: bnet.protocol.game_master.GameEndedNotification message GameEndedNotification { required GameHandle game_handle = 1; optional uint32 reason = 2 [default = 0]; } // ref: bnet.protocol.game_master.GameFactoryDescription message GameFactoryDescription { required fixed64 id = 1; optional string name = 2; repeated bnet.protocol.Attribute attribute = 3; repeated GameStatsBucket stats_bucket = 4; optional fixed64 unseeded_id = 5 [default = 0]; optional bool allow_queueing = 6 [default = true]; } // ref: bnet.protocol.game_master.GameFoundNotification message GameFoundNotification { required fixed64 request_id = 1; optional uint32 error_code = 2 [default = 0]; optional GameHandle game_handle = 3; repeated ConnectInfo connect_info = 4; } // ref: bnet.protocol.game_master.GameHandle message GameHandle { required fixed64 factory_id = 1; required bnet.protocol.EntityId game_id = 2; } // ref: bnet.protocol.game_master.GameProperties message GameProperties { repeated bnet.protocol.Attribute creation_attributes = 1; optional bnet.protocol.AttributeFilter filter = 2; optional bool create = 3 [default = false]; optional bool open = 4 [default = true]; optional fixed32 program_id = 5; } // ref: bnet.protocol.game_master.GameStatsBucket message GameStatsBucket { optional float bucket_min = 1 [default = 0]; optional float bucket_max = 2 [default = 4.294967E+09]; optional uint32 wait_milliseconds = 3 [default = 0]; optional uint32 games_per_hour = 4 [default = 0]; optional uint32 active_games = 5 [default = 0]; optional uint32 active_players = 6 [default = 0]; optional uint32 forming_games = 7 [default = 0]; optional uint32 waiting_players = 8 [default = 0]; optional uint32 open_joinable_games = 9 [default = 0]; optional uint32 players_in_open_joinable_games = 10 [default = 0]; optional uint32 open_games_total = 11 [default = 0]; optional uint32 players_in_open_games_total = 12 [default = 0]; } // ref: bnet.protocol.game_master.GetFactoryInfoRequest message GetFactoryInfoRequest { required fixed64 factory_id = 1; } // ref: bnet.protocol.game_master.GetFactoryInfoResponse message GetFactoryInfoResponse { repeated bnet.protocol.Attribute attribute = 1; repeated GameStatsBucket stats_bucket = 2; } // ref: bnet.protocol.game_master.GetGameStatsRequest message GetGameStatsRequest { required fixed64 factory_id = 1; required bnet.protocol.AttributeFilter filter = 2; } // ref: bnet.protocol.game_master.GetGameStatsResponse message GetGameStatsResponse { repeated GameStatsBucket stats_bucket = 1; } // ref: bnet.protocol.game_master.JoinGameRequest message JoinGameRequest { required GameHandle game_handle = 1; repeated Player player = 2; optional bool advanced_notification = 3 [default = false]; } // ref: bnet.protocol.game_master.JoinGameResponse message JoinGameResponse { optional fixed64 request_id = 1; optional bool queued = 2 [default = false]; repeated ConnectInfo connect_info = 3; } // ref: bnet.protocol.game_master.ListFactoriesRequest message ListFactoriesRequest { required bnet.protocol.AttributeFilter filter = 1; optional uint32 start_index = 2 [default = 0]; optional uint32 max_results = 3 [default = 100]; } // ref: bnet.protocol.game_master.ListFactoriesResponse message ListFactoriesResponse { repeated GameFactoryDescription description = 1; optional uint32 total_results = 2; } // ref: bnet.protocol.game_master.Player message Player { optional bnet.protocol.Identity identity = 1; repeated bnet.protocol.Attribute attribute = 2; } // ref: bnet.protocol.game_master.PlayerLeftNotification message PlayerLeftNotification { required GameHandle game_handle = 1; required bnet.protocol.EntityId member_id = 2; optional uint32 reason = 3 [default = 1]; } // ref: bnet.protocol.game_master.RegisterServerRequest message RegisterServerRequest { repeated bnet.protocol.Attribute attribute = 1; optional bnet.protocol.ServerState state = 2; required fixed32 program_id = 3; } // ref: bnet.protocol.game_master.RegisterUtilitiesRequest message RegisterUtilitiesRequest { repeated bnet.protocol.Attribute attribute = 1; optional bnet.protocol.ServerState state = 2; required fixed32 program_id = 3; } // ref: bnet.protocol.game_master.SubscribeRequest message MasterSubscribeRequest { required uint64 object_id = 1; } // ref: bnet.protocol.game_master.SubscribeResponse message SubscribeResponse { optional uint64 subscription_id = 1; } // ref: bnet.protocol.game_master.UnregisterServerRequest message UnregisterServerRequest { } // ref: bnet.protocol.game_master.UnregisterUtilitiesRequest message UnregisterUtilitiesRequest { } // ref: bnet.protocol.game_master.UnsubscribeRequest message MasterUnsubscribeRequest { required uint64 subscription_id = 1; } // ref: bnet.protocol.channel.AddMemberRequest message AddMemberRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.Identity member_identity = 2; required MemberState member_state = 3; required uint64 object_id = 4; optional bool subscribe = 5 [default = true]; } // ref: bnet.protocol.channel.AddNotification message AddNotification { optional Member self = 1; repeated Member member = 2; required ChannelState channel_state = 3; } // ref: bnet.protocol.channel.ChannelDescription message ChannelDescription { required bnet.protocol.EntityId channel_id = 1; optional uint32 current_members = 2; optional ChannelState state = 3; } // ref: bnet.protocol.channel.ChannelInfo message ChannelInfo { required ChannelDescription description = 1; repeated Member member = 2; } // ref: bnet.protocol.channel.ChannelState message chanChannelState { // ref: bnet.protocol.channel.ChannelState/Types/PrivacyLevel enum PrivacyLevel { PRIVACY_LEVEL_OPEN = 1; PRIVACY_LEVEL_OPEN_INVITATION_AND_FRIEND = 2; PRIVACY_LEVEL_OPEN_INVITATION = 3; PRIVACY_LEVEL_CLOSED = 4; } optional uint32 max_members = 1; optional uint32 min_members = 2; repeated bnet.protocol.Attribute attribute = 3; repeated bnet.protocol.Invitation invitation = 4; optional uint32 max_invitations = 5; optional uint32 reason = 6; optional PrivacyLevel privacy_level = 7 [default = PRIVACY_LEVEL_OPEN]; optional string name = 8; optional string delegate_name = 9; optional string channel_type = 10 [default = "default"]; optional fixed32 program = 11 [default = 0]; optional bool allow_offline_members = 12 [default = false]; optional bool subscribe_to_presence = 13 [default = true]; optional bnet.protocol.ChannelState chat = 100; // chat optional bnet.protocol.PresenceChannelState presence = 101; // presence } // ref: bnet.protocol.channel.CreateChannelRequest message CreateChannelRequest { optional bnet.protocol.Identity agent_identity = 1; optional MemberState member_state = 2; optional chanChannelState channel_state = 3; optional bnet.protocol.EntityId channel_id = 4; optional uint64 object_id = 5; optional bnet.protocol.EntityId local_agent = 6; optional MemberState local_member_state = 7; } // ref: bnet.protocol.channel.CreateChannelResponse message CreateChannelResponse { required uint64 object_id = 1; optional bnet.protocol.EntityId channel_id = 2; } // ref: bnet.protocol.channel.DissolveRequest message DissolveRequest { optional bnet.protocol.EntityId agent_id = 1; optional uint32 reason = 2; } // ref: bnet.protocol.channel.FindChannelOptions message FindChannelOptions { optional uint32 start_index = 1 [default = 0]; optional uint32 max_results = 2 [default = 16]; optional string name = 3; optional fixed32 program = 4; optional fixed32 locale = 5; optional uint32 capacity_full = 6; required bnet.protocol.AttributeFilter attribute_filter = 7; optional string channel_type = 8; } // ref: bnet.protocol.channel.FindChannelRequest message FindChannelRequest { optional bnet.protocol.Identity agent_identity = 1; required FindChannelOptions options = 2; } // ref: bnet.protocol.channel.FindChannelResponse message FindChannelResponse { repeated ChannelDescription channel = 1; } // ref: bnet.protocol.channel.GetChannelIdRequest message GetChannelIdRequest { } // ref: bnet.protocol.channel.GetChannelIdResponse message GetChannelIdResponse { optional bnet.protocol.EntityId channel_id = 1; } // ref: bnet.protocol.channel.GetChannelInfoRequest message GetChannelInfoRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId channel_id = 2; optional bool fetch_state = 3 [default = false]; optional bool fetch_members = 4 [default = false]; } // ref: bnet.protocol.channel.GetChannelInfoResponse message GetChannelInfoResponse { optional ChannelInfo channel_info = 1; } // ref: bnet.protocol.channel.JoinChannelRequest message JoinChannelRequest { optional bnet.protocol.Identity agent_identity = 1; optional MemberState member_state = 2; required bnet.protocol.EntityId channel_id = 3; required uint64 object_id = 4; repeated bnet.protocol.EntityId friend_account_id = 5; optional bool local_subscriber = 6 [default = true]; } // ref: bnet.protocol.channel.JoinChannelResponse message JoinChannelResponse { optional uint64 object_id = 1; optional bool require_friend_validation = 2 [default = false]; repeated bnet.protocol.EntityId privileged_account = 3; } // ref: bnet.protocol.channel.JoinNotification message JoinNotification { required Member member = 1; } // ref: bnet.protocol.channel.LeaveNotification message LeaveNotification { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId member_id = 2; optional uint32 reason = 3; } // ref: bnet.protocol.channel.Member message Member { required bnet.protocol.Identity identity = 1; required MemberState state = 2; } // ref: bnet.protocol.channel.MemberState message MemberState { repeated bnet.protocol.Attribute attribute = 1; repeated uint32 role = 2 [packed=true]; optional uint64 privileges = 3 [default = 0]; optional bnet.protocol.AccountInfo info = 4; optional bool hidden = 5 [default = false]; } // ref: bnet.protocol.channel.Message message Message { repeated bnet.protocol.Attribute attribute = 1; optional uint32 role = 2; } // ref: bnet.protocol.channel.RemoveMemberRequest message RemoveMemberRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId member_id = 2; optional uint32 reason = 3; } // ref: bnet.protocol.channel.RemoveNotification message RemoveNotification { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId member_id = 2; optional uint32 reason = 3; } // ref: bnet.protocol.channel.SendMessageNotification message SendMessageNotification { optional bnet.protocol.EntityId agent_id = 1; required Message message = 2; optional uint64 required_privileges = 3 [default = 0]; } // ref: bnet.protocol.channel.SendMessageRequest message SendMessageRequest { optional bnet.protocol.EntityId agent_id = 1; required Message message = 2; optional uint64 required_privileges = 3 [default = 0]; } // ref: bnet.protocol.channel.SetRolesRequest message SetRolesRequest { optional bnet.protocol.EntityId agent_id = 1; repeated uint32 role = 2 [packed=true]; repeated bnet.protocol.EntityId member_id = 3; } // ref: bnet.protocol.channel.SubscribeChannelRequest message SubscribeChannelRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId channel_id = 2; required uint64 object_id = 3; } // ref: bnet.protocol.channel.SubscribeChannelResponse message SubscribeChannelResponse { optional uint64 object_id = 1; } // ref: bnet.protocol.channel.UnsubscribeMemberRequest message UnsubscribeMemberRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId member_id = 2; } // ref: bnet.protocol.channel.UpdateChannelStateNotification message UpdateChannelStateNotification { optional bnet.protocol.EntityId agent_id = 1; required chanChannelState state_change = 2; } // ref: bnet.protocol.channel.UpdateChannelStateRequest message UpdateChannelStateRequest { optional bnet.protocol.EntityId agent_id = 1; required chanChannelState state_change = 2; } // ref: bnet.protocol.channel.UpdateMemberStateNotification message UpdateMemberStateNotification { optional bnet.protocol.EntityId agent_id = 1; repeated Member state_change = 2; repeated uint32 removed_role = 3 [packed=true]; } // ref: bnet.protocol.channel.UpdateMemberStateRequest message UpdateMemberStateRequest { optional bnet.protocol.EntityId agent_id = 1; repeated Member state_change = 2; repeated uint32 removed_role = 3 [packed=true]; } // AMBIGOUS // ref: bnet.protocol.channel_invitation.AcceptInvitationRequest message AcceptInvitationRequest { optional bnet.protocol.EntityId agent_id = 1; optional bnet.protocol.MemberState member_state = 2; required fixed64 invitation_id = 3; required uint64 object_id = 4; optional bnet.protocol.EntityId channel_id = 5; optional uint32 service_type = 6; optional bool local_subscriber = 7 [default = true]; } // ref: bnet.protocol.channel_invitation.AcceptInvitationResponse message AcceptInvitationResponse { required uint64 object_id = 1; } // ref: bnet.protocol.channel_invitation.ChannelCount message ChannelCount { optional bnet.protocol.EntityId channel_id = 1; optional string channel_type = 2 [default = "default"]; } // ref: bnet.protocol.channel_invitation.ChannelCountDescription message ChannelCountDescription { required uint32 service_type = 1; required fixed32 program = 2; optional string channel_type = 3 [default = "default"]; optional bnet.protocol.EntityId channel_id = 4; } // ref: bnet.protocol.channel_invitation.ChannelInvitation message ChannelInvitation { required bnet.protocol.ChannelDescription channel_description = 1; optional bool reserved = 2 [default = false]; optional bool rejoin = 3 [default = false]; required uint32 service_type = 4; } // ref: bnet.protocol.channel_invitation.ChannelInvitationParams message ChannelInvitationParams { required bnet.protocol.EntityId channel_id = 1; optional bool reserved = 2; optional bool rejoin = 3; required uint32 service_type = 4; } // ref: bnet.protocol.channel_invitation.DecrementChannelCountRequest message DecrementChannelCountRequest { required bnet.protocol.EntityId agent_id = 1; optional bnet.protocol.EntityId channel_id = 2; optional uint64 reservation_token = 3; } // ref: bnet.protocol.channel_invitation.HasRoomForInvitationRequest message HasRoomForInvitationRequest { required uint32 service_type = 1; optional fixed32 program = 2; optional string channel_type = 3 [default = "default"]; } // ref: bnet.protocol.channel_invitation.IncrementChannelCountRequest message IncrementChannelCountRequest { required bnet.protocol.EntityId agent_id = 1; repeated ChannelCountDescription descriptions = 2; } // ref: bnet.protocol.channel_invitation.IncrementChannelCountResponse message IncrementChannelCountResponse { repeated uint64 reservation_tokens = 1; } // ref: bnet.protocol.channel_invitation.InvitationAddedNotification message InvitationAddedNotification { required bnet.protocol.Invitation invitation = 1; } // ref: bnet.protocol.channel_invitation.InvitationCollection message InvitationCollection { optional uint32 service_type = 1; optional uint32 max_received_invitations = 2; optional uint64 object_id = 3; repeated bnet.protocol.Invitation received_invitation = 4; } // ref: bnet.protocol.channel_invitation.InvitationRemovedNotification message InvitationRemovedNotification { required bnet.protocol.Invitation invitation = 1; optional uint32 reason = 2; } // ref: bnet.protocol.channel_invitation.ListChannelCountRequest message ListChannelCountRequest { required bnet.protocol.EntityId member_id = 1; required uint32 service_type = 2; optional fixed32 program = 3; } // ref: bnet.protocol.channel_invitation.ListChannelCountResponse message ListChannelCountResponse { repeated ChannelCount channel = 1; } // ref: bnet.protocol.channel_invitation.RevokeInvitationRequest message RevokeInvitationRequest { optional bnet.protocol.EntityId agent_id = 1; optional bnet.protocol.EntityId target_id = 2; required fixed64 invitation_id = 3; required bnet.protocol.EntityId channel_id = 4; } // ref: bnet.protocol.channel_invitation.SubscribeRequest message CISubscribeRequest { optional bnet.protocol.EntityId agent_id = 1; required uint64 object_id = 2; } // ref: bnet.protocol.channel_invitation.SubscribeResponse message CISubscribeResponse { repeated InvitationCollection collection = 1; repeated bnet.protocol.Invitation received_invitation = 2; } // ref: bnet.protocol.channel_invitation.SuggestInvitationRequest message SuggestInvitationRequest { optional bnet.protocol.EntityId agent_id = 1; required bnet.protocol.EntityId channel_id = 2; required bnet.protocol.EntityId target_id = 3; optional bnet.protocol.EntityId approval_id = 4; optional bnet.protocol.Identity agent_identity = 5; optional bnet.protocol.AccountInfo agent_info = 6; } // ref: bnet.protocol.channel_invitation.SuggestionAddedNotification message SuggestionAddedNotification { required bnet.protocol.Suggestion suggestion = 1; } // ref: bnet.protocol.channel_invitation.UnsubscribeRequest message CIUnsubscribeRequest { optional bnet.protocol.EntityId agent_id = 1; } // ref: bnet.protocol.channel_invitation.UpdateChannelCountRequest message UpdateChannelCountRequest { required bnet.protocol.EntityId agent_id = 1; optional uint64 reservation_token = 2; required bnet.protocol.EntityId channel_id = 3; } // ref: PegasusUtil.GoldBalance message GoldBalance { // ref: PegasusUtil.GoldBalance/Types/PacketID enum PacketID { ID = 278; } optional int64 capped_balance = 1; optional int64 bonus_balance = 2; optional int64 cap = 3; optional int64 cap_warning = 4; } // ref: PegasusUtil.Subscribe message Subscribe { // ref: PegasusUtil.Subscribe/PacketID enum PacketID { ID = 314; } } // ref: PegasusUtil.SubscribeResponse message UtilSubscribeResponse { // ref: PegasusUtil.SubscribeResponse/PacketID enum PacketID { ID = 315; } // ref: PegasusUtil.SubscribeResponse/ResponseResult enum ResponseResult { SUCCESS = 1; FAILED_UNAVAILABLE = 2; } optional uint64 route = 1; optional uint64 keep_alive_secs = 3; optional uint64 max_resubscribe_attempts = 4 [default = 0]; optional uint64 pending_response_timeout = 5 [default = 0]; optional uint64 pending_subscribe_timeout = 6 [default = 0]; optional ResponseResult result = 7 [default = SUCCESS]; optional uint64 request_max_wait_secs = 8; } // ref: PegasusUtil.GenericData message GenericData { required uint32 type_id = 1; required bytes data = 2; } // ref: PegasusUtil.GenericRequest message UtilGenericRequest { required int32 request_id = 1; optional GenericData generic_data = 2; optional int32 request_sub_id = 3; } // ref: PegasusUtil.GenericRequestList message GenericRequestList { // ref: PegasusUtil.GenericRequestList/PacketID enum PacketID { system = 0; ID = 327; } repeated UtilGenericRequest requests = 1; } // ref: PegasusUtil.GetPurchaseMethod message GetPurchaseMethod { // ref: PegasusUtil.GetPurchaseMethod/PacketID enum PacketID { system = 1; ID = 250; } required string product_id = 1; required int32 quantity = 2; required int32 currency = 3; required string device_id = 4; optional Platform platform = 5; } // ref: PegasusShared.Platform message Platform { required int32 os = 1; required int32 screen = 2; required string name = 3; optional int32 store = 4; } // ref: PegasusUtil.CheckAccountLicenses message CheckAccountLicenses { // ref: PegasusUtil.CheckAccountLicenses/PacketID enum PacketID { system = 0; ID = 267; } } // ref: PegasusUtil.CheckAccountLicensesResponse message CheckAccountLicensesResponse { // ref: PegasusUtil.CheckAccountLicensesResponse/PacketID enum PacketID { ID = 330; } required bool success = 1; } // ref: PegasusUtil.UpdateLogin message UpdateLogin { // ref: PegasusUtil.UpdateLogin/PacketID enum PacketID { system = 0; ID = 205; } optional bool reply_required = 1; optional string referral = 2; optional string device_model_deprecated = 3; } // ref: PegasusUtil.CheckGameLicenses message CheckGameLicenses { // ref: PegasusUtil.CheckGameLicenses/PacketID enum PacketID { system = 1; ID = 276; } } // ref: PegasusUtil.GetAchieves message GetAchieves { // ref: PegasusUtil.GetAchieves/PacketID enum PacketID { system = 0; ID = 253; } optional bool only_active_or_new_complete = 1; optional string device_model = 2; } // ref: PegasusUtil.CheckGameLicensesResponse message CheckGameLicensesResponse { // ref: PegasusUtil.CheckGameLicensesResponse/PacketID enum PacketID { ID = 331; } required bool success = 1; } // ref: PegasusUtil.GetAdventureProgress message GetAdventureProgress { // ref: PegasusUtil.GetAdventureProgress/PacketID enum PacketID { system = 0; ID = 305; } } // ref: PegasusUtil.SetOptions message SetOptions { // ref: PegasusUtil.SetOptions/MaxOptionCount enum MaxOptionCount { LIMIT = 51; } // ref: PegasusUtil.SetOptions/PacketID enum PacketID { system = 0; ID = 239; } repeated ClientOption options = 1; } // ref: PegasusUtil.ClientOption message ClientOption { required int32 index = 1; optional bool as_bool = 2; optional int32 as_int32 = 3; optional int64 as_int64 = 4; optional float as_float = 5; optional uint64 as_uint64 = 6; } // ref: PegasusUtil.GuardianVars message GuardianVars { // ref: PegasusUtil.GuardianVars/PacketID enum PacketID { ID = 264; } optional bool tourney = 1; optional bool practice = 2; optional bool casual = 3; optional bool forge = 4; optional bool friendly = 5; optional bool manager = 6; optional bool crafting = 7; optional bool hunter = 8; optional bool mage = 9; optional bool paladin = 10; optional bool priest = 11; optional bool rogue = 12; optional bool shaman = 13; optional bool warlock = 14; optional bool warrior = 15; optional int32 show_user_ui = 16; optional bool store = 17; optional bool battle_pay = 18; optional bool buy_with_gold = 19; optional bool tavern_brawl = 20; optional int32 client_options_update_interval_seconds = 21; } // ref: PegasusUtil.AssetsVersionResponse message AssetsVersionResponse { // ref: PegasusUtil.AssetsVersionResponse/PacketID enum PacketID { ID = 304; } required int32 version = 1; } // ref: PegasusUtil.GenericResponse message GenericResponse { // ref: PegasusUtil.GenericResponse/PacketID enum PacketID { ID = 326; } // ref: PegasusUtil.GenericResponse/Result enum Result { RESULT_OK = 0; RESULT_REQUEST_IN_PROCESS = 1; RESULT_REQUEST_COMPLETE = 2; RESULT_UNKNOWN_ERROR = 100; RESULT_INTERNAL_ERROR = 101; RESULT_DB_ERROR = 102; RESULT_INVALID_REQUEST = 103; RESULT_LOGIN_LOAD = 104; RESULT_DATA_MIGRATION_ERROR = 105; } required Result result_code = 1; required int32 request_id = 2; optional int32 request_sub_id = 3; optional GenericData generic_data = 4; } // ref: PegasusUtil.UpdateLoginComplete message UpdateLoginComplete { // ref: PegasusUtil.UpdateLoginComplete/PacketID enum PacketID { ID = 307; } } // ref: PegasusUtil.ProfileProgress message ProfileProgress { // ref: PegasusUtil.ProfileProgress/PacketID enum PacketID { ID = 233; } required int64 progress = 1; required int32 best_forge = 2; optional Date last_forge = 3; optional int32 display_banner = 4 [default = 0]; repeated AdventureOptions adventure_options = 5; } // ref: PegasusUtil.AdventureOptions message AdventureOptions { required int32 adventure_id = 1; required uint64 options = 2; } // ref: PegasusShared.Date message Date { required int32 year = 1; required int32 month = 2; required int32 day = 3; required int32 hours = 4; required int32 min = 5; required int32 sec = 6; } // ref: PegasusUtil.DeckList message DeckList { // ref: PegasusUtil.DeckList/PacketID enum PacketID { ID = 202; } repeated DeckInfo decks = 1; } // ref: PegasusShared.DeckInfo message DeckInfo { // ref: PegasusShared.DeckInfo/ValidityFlags enum ValidityFlags { UNLOCKED_HERO_CLASS = 1; OWNS_CARDS = 2; HAS_30_CARDS = 4; OBEYS_MAXES = 8; CLASS_MATCHES = 16; OWNS_CARD_BACK = 32; OWNS_HERO = 64; TAGGED_STANDARD = 128; NEEDS_VALIDATION = 256; NEEDS_NAME = 512; } required int64 id = 1; required string name = 2; required int32 card_back = 3; required int32 hero = 4; required DeckType deck_type = 5; required uint64 validity = 6; required int32 hero_premium = 7; required bool card_back_override = 8; required bool hero_override = 9; optional int64 last_modified = 10; optional int32 season_id = 11; optional int64 sort_order = 12; optional int64 create_date = 13; optional DeckSourceType source_type = 14 [default = DECK_SOURCE_TYPE_UNKNOWN]; } // ref: PegasusShared.DeckSourceType enum DeckSourceType { DECK_SOURCE_TYPE_UNKNOWN = 0; DECK_SOURCE_TYPE_NORMAL = 1; DECK_SOURCE_TYPE_TEMPLATE = 2; DECK_SOURCE_TYPE_BASIC_DECK = 3; } // ref: PegasusShared.DeckType enum DeckType { NORMAL_DECK = 1; AI_DECK = 2; DRAFT_DECK = 4; PRECON_DECK = 5; TAVERN_BRAWL_DECK = 6; HIDDEN_DECK = 1000; } // ref: PegasusUtil.BoosterList message BoosterList { // ref: PegasusUtil.BoosterList/PacketID enum PacketID { ID = 224; } repeated BoosterInfo list = 1; } // ref: PegasusShared.BoosterInfo message BoosterInfo { required int32 type = 2; required int32 count = 3; } // ref: PegasusUtil.Collection message Collection { // ref: PegasusUtil.Collection/PacketID enum PacketID { ID = 207; } repeated CardStack stacks = 1; } // ref: PegasusShared.CardDef message CardDef { required int32 asset = 1; optional int32 premium = 2; } // ref: PegasusShared.CardStack message CardStack { required CardDef card_def = 1; required Date latest_insert_date = 2; required int32 count = 3; required int32 num_seen = 4; } // ref: PegasusUtil.MedalInfo message MedalInfo { // ref: PegasusUtil.MedalInfo/PacketID enum PacketID { ID = 232; } required MedalInfoData standard = 1; required MedalInfoData wild = 2; } // ref: PegasusUtil.MedalInfoData message MedalInfoData { required int32 season_wins = 3; required int32 stars = 6; required int32 streak = 7; required int32 star_level = 8; required int32 level_start = 9; required int32 level_end = 10; required bool can_lose_level = 11; optional int32 legend_rank = 13; optional int32 best_star_level = 14; optional bool can_lose_stars = 15; } // ref: PegasusUtil.SpecialEventTiming message SpecialEventTiming { required string event = 1; optional uint64 start = 2; optional uint64 end = 3; } // ref: PegasusUtil.NotSoMassiveLoginReply message NotSoMassiveLoginReply { // ref: PegasusUtil.NotSoMassiveLoginReply/PacketID enum PacketID { ID = 300; } repeated SpecialEventTiming special_event_timing = 10; optional TavernBrawlInfo tavern_brawls = 11; } // ref: PegasusUtil.TavernBrawlInfo message TavernBrawlInfo { // ref: PegasusUtil.TavernBrawlInfo/PacketID enum PacketID { ID = 316; } optional TavernBrawlSpec current_tavern_brawl = 1; optional uint64 next_start_seconds_from_now = 2; } // ref: PegasusShared.TavernBrawlSpec message TavernBrawlSpec { optional uint64 end_seconds_from_now = 1; required int32 scenario_id = 2; required uint32 scenario_record_byte_size = 3; required bytes scenario_record_hash = 4; required RewardType reward_type = 5; required int64 reward_data1 = 6; required int64 reward_data2 = 7; optional RewardTrigger reward_trigger = 8 [default = REWARD_TRIGGER_UNKNOWN]; required int32 season_id = 11; repeated AssetRecordInfo additional_assets = 100; required TavernBrawlPlayerRecord my_record = 105; } // ref: PegasusShared.RewardType enum RewardType { REWARD_UNKNOWN = 0; REWARD_NONE = 1; REWARD_ADVENTURE_PROGRESS = 2; REWARD_ARCANE_DUST = 3; REWARD_BASIC_CARD = 4; REWARD_BOOSTER_PACKS = 5; REWARD_CARD_BACK = 6; REWARD_CARD_ID = 7; REWARD_CARD_ID_2X = 8; REWARD_CARD_SET = 9; DEPRECATED_REWARD_CRAFTABLE_GOLDEN = 10; REWARD_GOLD = 11; REWARD_GOLD_HERO = 12; REWARD_FORGE_TICKETS = 13; REWARD_HERO = 14; REWARD_EXTERNAL_GAME_MOUNT = 15; } // ref: PegasusShared.RewardTrigger enum RewardTrigger { REWARD_TRIGGER_UNKNOWN = 0; REWARD_TRIGGER_NONE = 1; REWARD_TRIGGER_WIN_GAME = 2; REWARD_TRIGGER_FINISH_GAME = 3; } // ref: PegasusShared.AssetRecordInfo message AssetRecordInfo { required AssetKey asset = 1; required uint32 record_byte_size = 2; required bytes record_hash = 3; } // ref: PegasusShared.TavernBrawlPlayerRecord message TavernBrawlPlayerRecord { required int32 reward_progress = 1; optional int32 games_played = 2; required int32 games_won = 3; optional int32 win_streak = 4; } // ref: PegasusShared.AssetKey message AssetKey { required AssetType type = 1; optional int32 asset_id = 2; } // ref: PegasusShared.AssetType enum AssetType { ASSET_TYPE_SCENARIO = 1; ASSET_TYPE_SUBSET_CARD = 2; ASSET_TYPE_DECK_RULESET = 3; } // ref: PegasusUtil.CardValue message CardValue { required CardDef card = 1; required int32 buy = 2; required int32 sell = 3; required bool nerfed = 4; } // ref: PegasusUtil.CardValues message CardValues { // ref: PegasusUtil.CardValues/PacketID enum PacketID { ID = 260; } repeated CardValue cards = 1; required int32 card_nerf_index = 2; } // ref: PegasusUtil.RewardProgress message RewardProgress { // ref: PegasusUtil.RewardProgress/PacketID enum PacketID { ID = 271; } required Date season_end = 1; required int32 wins_per_gold = 2; required int32 gold_per_reward = 3; required int32 max_gold_per_day = 4; required int32 season_number = 5; optional int32 pack_id = 8; required int32 xp_solo_limit = 9; required int32 max_hero_level = 10; required Date next_quest_cancel = 11; required float event_timing_mod = 12; } // ref: PegasusUtil.PlayerRecord message PlayerRecord { required GameType type = 1; optional int32 data = 2; required int32 wins = 3; required int32 losses = 4; optional int32 ties = 5; } // ref: PegasusShared.GameType enum GameType { GT_UNKNOWN = 0; GT_VS_AI = 1; GT_VS_FRIEND = 2; GT_TUTORIAL = 4; GT_ARENA = 5; GT_TEST = 6; GT_RANKED = 7; GT_CASUAL = 8; GT_TAVERNBRAWL = 16; GT_TB_1P_VS_AI = 17; GT_TB_2P_COOP = 18; GT_LAST = 19; } // ref: PegasusUtil.PlayerRecords message PlayerRecords { // ref: PegasusUtil.PlayerRecords/PacketID enum PacketID { ID = 270; } repeated PlayerRecord records = 1; } // ref: PegasusUtil.ArcaneDustBalance message ArcaneDustBalance { // ref: PegasusUtil.ArcaneDustBalance/PacketID enum PacketID { ID = 262; } required int64 balance = 1; } // ref: PegasusUtil.ClientOptions message ClientOptions { // ref: PegasusUtil.ClientOptions/PacketID enum PacketID { ID = 241; } repeated ClientOption options = 1; optional bool failed = 2; } // ref: PegasusUtil.AdventureProgressResponse message AdventureProgressResponse { // ref: PegasusUtil.AdventureProgressResponse/PacketID enum PacketID { ID = 306; } repeated AdventureProgress list = 1; } // ref: PegasusShared.AdventureProgress message AdventureProgress { // ref: PegasusShared.AdventureProgress/Flags enum Flags { OWNED = 1; DEFEAT_HEROIC_MISSION_1 = 2; DEFEAT_HEROIC_MISSION_2 = 4; DEFEAT_HEROIC_MISSION_3 = 8; DEFEAT_HEROIC_MISSION_4 = 16; DEFEAT_CLASS_CHALLENGE_MISSION_1 = 256; DEFEAT_CLASS_CHALLENGE_MISSION_2 = 512; } required int32 wing_id = 1; required int32 progress = 2; optional int32 ack = 3 [default = 0]; required uint64 flags = 4; } // ref: PegasusUtil.HeroXP message HeroXP { // ref: PegasusUtil.HeroXP/PacketID enum PacketID { ID = 283; } repeated HeroXPInfo xp_infos = 1; } // ref: PegasusUtil.HeroXPInfo message HeroXPInfo { required int32 class_id = 1; required int32 level = 2; required int64 curr_xp = 3; required int64 max_xp = 4; optional NextHeroLevelReward next_reward = 5; } // ref: PegasusUtil.NextHeroLevelReward message NextHeroLevelReward { required int32 level = 1; optional ProfileNoticeRewardBooster reward_booster = 2; optional ProfileNoticeRewardCard reward_card = 3; optional ProfileNoticeRewardDust reward_dust = 4; optional ProfileNoticeRewardGold reward_gold = 5; optional ProfileNoticeRewardMount reward_mount = 6; optional ProfileNoticeRewardForge reward_forge = 7; } // ref: PegasusShared.ProfileNoticeRewardForge message ProfileNoticeRewardForge { // ref: PegasusShared.ProfileNoticeRewardForge/NoticeID enum NoticeID { ID = 8; } required int32 quantity = 1; } // ref: PegasusShared.ProfileNoticeRewardMount message ProfileNoticeRewardMount { // ref: PegasusShared.ProfileNoticeRewardMount/NoticeID enum NoticeID { ID = 7; } required int32 mount_id = 1; } // ref: PegasusShared.ProfileNoticeRewardGold message ProfileNoticeRewardGold { // ref: PegasusShared.ProfileNoticeRewardGold/NoticeID enum NoticeID { ID = 9; } required int32 amount = 1; } // ref: PegasusShared.ProfileNoticeRewardDust message ProfileNoticeRewardDust { // ref: PegasusShared.ProfileNoticeRewardDust/NoticeID enum NoticeID { ID = 6; } required int32 amount = 1; } // ref: PegasusShared.ProfileNoticeRewardCard message ProfileNoticeRewardCard { // ref: PegasusShared.ProfileNoticeRewardCard/NoticeID enum NoticeID { ID = 3; } required CardDef card = 1; optional int32 quantity = 2; } // ref: PegasusShared.ProfileNoticeRewardBooster message ProfileNoticeRewardBooster { // ref: PegasusShared.ProfileNoticeRewardBooster/NoticeID enum NoticeID { ID = 2; } required int32 booster_type = 1; required int32 booster_count = 2; } // ref: PegasusUtil.FavoriteHeroesResponse message FavoriteHeroesResponse { // ref: PegasusUtil.FavoriteHeroesResponse/PacketID enum PacketID { ID = 318; } repeated FavoriteHero favorite_heroes = 1; } // ref: PegasusShared.FavoriteHero message FavoriteHero { required int32 class_id = 1; required CardDef hero = 2; } // ref: PegasusUtil.CardBacks message CardBacks { // ref: PegasusUtil.CardBacks/PacketID enum PacketID { system = 0; ID = 236; } required int32 default_card_back = 1; repeated int32 card_backs = 2; } // ref: PegasusUtil.AccountLicensesInfoResponse message AccountLicensesInfoResponse { // ref: PegasusUtil.AccountLicensesInfoResponse/PacketID enum PacketID { ID = 325; } repeated AccountLicenseInfo list = 1; } // ref: PegasusShared.AccountLicenseInfo message AccountLicenseInfo { // ref: PegasusShared.AccountLicenseInfo/Flags enum Flags { OWNED = 1; } required int64 license = 1; required uint64 flags = 2; required int64 cas_id = 3; } // ref: PegasusUtil.ProfileNotice message ProfileNotice { required int64 entry = 1; optional ProfileNoticeMedal medal = 2; optional ProfileNoticeRewardBooster reward_booster = 3; optional ProfileNoticeRewardCard reward_card = 4; optional ProfileNoticePreconDeck precon_deck = 6; optional ProfileNoticeRewardDust reward_dust = 7; optional ProfileNoticeRewardGold reward_gold = 8; optional ProfileNoticeRewardMount reward_mount = 9; optional ProfileNoticeRewardForge reward_forge = 10; required int32 origin = 11; optional int64 origin_data = 12; required Date when = 13; optional ProfileNoticePurchase purchase = 14; optional ProfileNoticeCardBack reward_card_back = 15; optional ProfileNoticeDisconnectedGameResult dc_game_result = 16; optional ProfileNoticeBonusStars bonus_stars = 17; optional ProfileNoticeAdventureProgress adventure_progress = 18; optional ProfileNoticeLevelUp level_up = 19; optional ProfileNoticeAccountLicense account_license = 20; } // ref: PegasusUtil.ProfileNotices message ProfileNotices { // ref: PegasusUtil.ProfileNotices/PacketID enum PacketID { ID = 212; } repeated ProfileNotice list = 1; } // ref: PegasusShared.ProfileNoticeMedal message ProfileNoticeMedal { // ref: PegasusShared.ProfileNoticeMedal/MedalType enum MedalType { UNKNOWN_MEDAL = 0; STANDARD_MEDAL = 1; WILD_MEDAL = 2; } // ref: PegasusShared.ProfileNoticeMedal/NoticeID enum NoticeID { ID = 1; } required int32 star_level = 1; optional int32 legend_rank = 2; optional int32 best_star_level = 3; optional RewardChest chest = 4; optional MedalType medal_type = 5 [default = UNKNOWN_MEDAL]; } // ref: PegasusShared.ProfileNoticePreconDeck message ProfileNoticePreconDeck { // ref: PegasusShared.ProfileNoticePreconDeck/NoticeID enum NoticeID { ID = 5; } required int64 deck = 1; required int32 hero = 2; } // ref: PegasusShared.ProfileNoticePurchase message ProfileNoticePurchase { // ref: PegasusShared.ProfileNoticePurchase/NoticeID enum NoticeID { ID = 10; } required string product_id = 1; optional int64 data = 2; optional int32 currency = 3; } // ref: PegasusShared.ProfileNoticeCardBack message ProfileNoticeCardBack { // ref: PegasusShared.ProfileNoticeCardBack/NoticeID enum NoticeID { ID = 11; } required int32 card_back = 1; } // ref: PegasusShared.ProfileNoticeDisconnectedGameResult message ProfileNoticeDisconnectedGameResult { // ref: PegasusShared.ProfileNoticeDisconnectedGameResult/GameResult enum GameResult { GR_UNKNOWN = 0; GR_PLAYING = 1; GR_WINNER = 2; GR_TIE = 3; } // ref: PegasusShared.ProfileNoticeDisconnectedGameResult/NoticeID enum NoticeID { ID = 4; } // ref: PegasusShared.ProfileNoticeDisconnectedGameResult/PlayerResult enum PlayerResult { PR_UNKNOWN = 0; PR_WON = 1; PR_LOST = 2; PR_DISCONNECTED = 3; PR_QUIT = 4; } optional GameType game_type = 8 [default = GT_UNKNOWN]; optional int32 mission_id = 9; optional GameResult game_result = 10 [default = GR_UNKNOWN]; optional PlayerResult your_result = 11 [default = PR_UNKNOWN]; optional PlayerResult opponent_result = 12 [default = PR_UNKNOWN]; } // ref: PegasusShared.ProfileNoticeBonusStars message ProfileNoticeBonusStars { // ref: PegasusShared.ProfileNoticeBonusStars/NoticeID enum NoticeID { ID = 12; } required int32 star_level = 1; required int32 stars = 2; } // ref: PegasusShared.ProfileNoticeAdventureProgress message ProfileNoticeAdventureProgress { // ref: PegasusShared.ProfileNoticeAdventureProgress/NoticeID enum NoticeID { ID = 14; } required int32 wing_id = 1; } // ref: PegasusShared.ProfileNoticeLevelUp message ProfileNoticeLevelUp { // ref: PegasusShared.ProfileNoticeLevelUp/NoticeID enum NoticeID { ID = 15; } required int32 hero_class = 1; required int32 new_level = 2; } // ref: PegasusShared.ProfileNoticeAccountLicense message ProfileNoticeAccountLicense { // ref: PegasusShared.ProfileNoticeAccountLicense/NoticeID enum NoticeID { ID = 16; } required int64 license = 1; required int64 cas_id = 2; } // ref: PegasusShared.RewardBag message RewardBag { optional ProfileNoticeRewardBooster reward_booster = 1; optional ProfileNoticeRewardCard reward_card = 2; optional ProfileNoticeRewardDust reward_dust = 3; optional ProfileNoticeRewardGold reward_gold = 4; optional ProfileNoticeCardBack reward_card_back = 5; } // ref: PegasusShared.RewardChest message RewardChest { optional RewardBag bag1 = 1; optional RewardBag bag2 = 2; optional RewardBag bag3 = 3; optional RewardBag bag4 = 4; optional RewardBag bag5 = 5; } // ref: PegasusUtil.BattlePayConfigResponse message BattlePayConfigResponse { // ref: PegasusUtil.BattlePayConfigResponse/PacketID enum PacketID { ID = 238; } repeated Bundle bundles = 1; optional int32 currency = 2; optional bool unavailable = 4; optional int32 secs_before_auto_cancel = 5; repeated GoldCostBooster gold_cost_boosters = 6; optional int64 gold_cost_arena = 7; } // ref: PegasusUtil.GoldCostBooster message GoldCostBooster { required int64 cost = 1; required int32 pack_type = 2; optional string buy_with_gold_event_name = 3; } // ref: PegasusUtil.Bundle message Bundle { required string id = 1; optional double cost = 2; optional string apple_id = 3; optional string google_play_id = 4; repeated BundleItem items = 5; optional int64 gold_cost = 6; optional string amazon_id = 7; optional string product_event_name = 9; repeated BattlePayProvider exclusive_providers = 10; optional string real_money_product_event_name = 11; } // ref: PegasusUtil.BundleItem message BundleItem { required ProductType product_type = 1; required int32 data = 2; required int32 quantity = 3; } // ref: PegasusUtil.ProductType enum ProductType { PRODUCT_TYPE_UNKNOWN = 0; PRODUCT_TYPE_BOOSTER = 1; PRODUCT_TYPE_DRAFT = 2; PRODUCT_TYPE_NAXX = 3; PRODUCT_TYPE_BRM = 4; PRODUCT_TYPE_CARD_BACK = 5; PRODUCT_TYPE_HERO = 6; PRODUCT_TYPE_LOE = 7; } // ref: PegasusShared.BattlePayProvider enum BattlePayProvider { BP_PROVIDER_BLIZZARD = 1; BP_PROVIDER_APPLE = 2; BP_PROVIDER_GOOGLE_PLAY = 3; BP_PROVIDER_AMAZON = 4; } // ref: PegasusUtil.BattlePayStatusResponse message BattlePayStatusResponse { // ref: PegasusUtil.BattlePayStatusResponse/PacketID enum PacketID { ID = 265; } // ref: PegasusUtil.BattlePayStatusResponse/PurchaseState enum PurchaseState { PS_READY = 0; PS_CHECK_RESULTS = 1; PS_ERROR = 2; } required PurchaseState status = 1; optional string product_id = 2; optional PurchaseError purchase_error = 3; required bool battle_pay_available = 4; optional int64 transaction_id = 5; optional string third_party_id = 6; optional int32 currency = 7; optional BattlePayProvider provider = 8 [default = BP_PROVIDER_BLIZZARD]; } // ref: PegasusUtil.PurchaseError message PurchaseError { // ref: PegasusUtil.PurchaseError/Error enum Error { E_UNKNOWN = -1; E_SUCCESS = 0; E_STILL_IN_PROGRESS = 1; E_INVALID_BNET = 2; E_SERVICE_NA = 3; E_PURCHASE_IN_PROGRESS = 4; E_DATABASE = 5; E_INVALID_QUANTITY = 6; E_DUPLICATE_LICENSE = 7; E_REQUEST_NOT_SENT = 8; E_NO_ACTIVE_BPAY = 9; E_FAILED_RISK = 10; E_CANCELED = 11; E_WAIT_MOP = 12; E_WAIT_CLIENT_CONFIRM = 13; E_WAIT_CLIENT_RISK = 14; E_PRODUCT_NA = 15; E_RISK_TIMEOUT = 16; E_PRODUCT_ALREADY_OWNED = 17; E_WAIT_THIRD_PARTY_RECEIPT = 18; E_PRODUCT_EVENT_HAS_ENDED = 19; E_BP_GENERIC_FAIL = 100; E_BP_INVALID_CC_EXPIRY = 101; E_BP_RISK_ERROR = 102; E_BP_NO_VALID_PAYMENT = 103; E_BP_PAYMENT_AUTH = 104; E_BP_PROVIDER_DENIED = 105; E_BP_PURCHASE_BAN = 106; E_BP_SPENDING_LIMIT = 107; E_BP_PARENTAL_CONTROL = 108; E_BP_THROTTLED = 109; E_BP_THIRD_PARTY_BAD_RECEIPT = 110; E_BP_THIRD_PARTY_RECEIPT_USED = 111; E_BP_PRODUCT_UNIQUENESS_VIOLATED = 112; E_BP_REGION_IS_DOWN = 113; E_BP_GENERIC_FAIL_RETRY_CONTACT_CS_IF_PERSISTS = 115; E_BP_CHALLENGE_ID_FAILED_VERIFICATION = 116; } required Error error = 1; optional string purchase_in_progress = 2; optional string error_code = 3; } // ref: PegasusUtil.PlayQueue message PlayQueue { // ref: PegasusUtil.PlayQueue/PacketID enum PacketID { ID = 286; } required PlayQueueInfo queue = 1; } // ref: PegasusShared.PlayQueueInfo message PlayQueueInfo { required BnetGameType game_type = 1; } // ref: PegasusShared.BnetGameType enum BnetGameType { BGT_UNKNOWN = 0; BGT_FRIENDS = 1; BGT_RANKED_STANDARD = 2; BGT_ARENA = 3; BGT_VS_AI = 4; BGT_TUTORIAL = 5; BGT_ASYNC = 6; BGT_NEWBIE = 9; BGT_CASUAL_STANDARD = 10; BGT_TEST1 = 11; BGT_TEST2 = 12; BGT_TEST3 = 13; BGT_TAVERNBRAWL_PVP = 16; BGT_TAVERNBRAWL_1P_VERSUS_AI = 17; BGT_TAVERNBRAWL_2P_COOP = 18; BGT_RANKED_WILD = 30; BGT_CASUAL_WILD = 31; BGT_LAST = 32; } // ref: PegasusUtil.GetDeckContents message GetDeckContents { // ref: PegasusUtil.GetDeckContents/PacketID enum PacketID { system = 0; ID = 214; } repeated int64 deck_id = 1; } // ref: PegasusUtil.GetDeckContentsResponse message GetDeckContentsResponse { // ref: PegasusUtil.GetDeckContentsResponse/PacketID enum PacketID { ID = 215; } optional int64 deprecated_deck_id = 1; repeated DeckCardData deprecated_cards = 2; repeated DeckContents decks = 3; } // ref: PegasusShared.DeckCardData message DeckCardData { required CardDef def = 1; required int32 handle = 2 [default = 0]; optional int32 qty = 3; required int32 prev = 5 [default = 0]; } // ref: PegasusUtil.DeckContents message DeckContents { required bool success = 1; required int64 deck_id = 2; repeated DeckCardData cards = 3; } // ref: PegasusUtil.SetCardBack message SetCardBack { // ref: PegasusUtil.SetCardBack/PacketID enum PacketID { system = 0; ID = 291; } required int32 card_back = 1; optional int64 deck_id = 2; } // ref: PegasusUtil.SetCardBackResponse message SetCardBackResponse { // ref: PegasusUtil.SetCardBackResponse/PacketID enum PacketID { ID = 292; } required bool success = 1; required int32 card_back = 2; } // ref: PegasusUtil.OpenBooster message OpenBooster { // ref: PegasusUtil.OpenBooster/PacketID enum PacketID { system = 0; ID = 225; } required int32 booster_type = 2; } // ref: PegasusUtil.BoosterCard message BoosterCard { required CardDef card_def = 1; required Date insert_date = 2; } // ref: PegasusUtil.BoosterContent message BoosterContent { // ref: PegasusUtil.BoosterContent/PacketID enum PacketID { ID = 226; } repeated BoosterCard list = 1; } // ref: PegasusUtil.AckCardSeen message AckCardSeen { // ref: PegasusUtil.AckCardSeen/PacketID enum PacketID { system = 0; ID = 223; } repeated CardDef card_defs = 1; } // ref: PegasusUtil.PurchaseWithGold message PurchaseWithGold { // ref: PegasusUtil.PurchaseWithGold/PacketID enum PacketID { system = 0; ID = 279; } required int32 quantity = 1; required ProductType product = 2; optional int32 data = 3; } // ref: PegasusUtil.PurchaseWithGoldResponse message PurchaseWithGoldResponse { // ref: PegasusUtil.PurchaseWithGoldResponse/PacketID enum PacketID { ID = 280; } // ref: PegasusUtil.PurchaseWithGoldResponse/PurchaseResult enum PurchaseResult { PR_SUCCESS = 1; PR_INSUFFICIENT_FUNDS = 2; PR_PRODUCT_NA = 3; PR_FEATURE_NA = 4; PR_INVALID_QUANTITY = 5; } required PurchaseResult result = 1; optional int64 gold_used = 2; } // ref: PegasusUtil.BuySellCard message BuySellCard { // ref: PegasusUtil.BuySellCard/PacketID enum PacketID { system = 0; ID = 257; } required CardDef def = 1; optional int32 count = 2; required bool buying = 3; optional int32 unit_sell_price = 4; optional int32 unit_buy_price = 5; } // ref: PegasusUtil.DeckRenamed message DeckRenamed { // ref: PegasusUtil.DeckRenamed/PacketID enum PacketID { ID = 219; } required int64 deck = 1; required string name = 2; } // ref: PegasusUtil.DeckSetData message DeckSetData { // ref: PegasusUtil.DeckSetData/PacketID enum PacketID { system = 0; ID = 222; } required int64 deck = 1; repeated DeckCardData cards = 2; optional CardDef hero = 3; optional int32 card_back = 4; optional bool tagged_standard = 5; } // ref: PegasusUtil.BoughtSoldCard message BoughtSoldCard { // ref: PegasusUtil.BoughtSoldCard/PacketID enum PacketID { ID = 258; } // ref: PegasusUtil.BoughtSoldCard/Result enum Result { GENERIC_FAILURE = 1; SOLD = 2; BOUGHT = 3; SOULBOUND = 4; WRONG_SELL_PRICE = 5; WRONG_BUY_PRICE = 6; NO_PERMISSION = 7; EVENT_NOT_ACTIVE = 8; } required CardDef def = 1; required int32 amount = 2; required Result result = 3; optional int32 count = 4; optional bool nerfed = 5; optional int32 unit_sell_price = 6; optional int32 unit_buy_price = 7; }