2024-06-20 02:50:44 +03:00

3451 lines
88 KiB
Protocol Buffer

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.Achieve
message Achieve {
required int32 id = 1;
required int32 progress = 2;
required int32 ack_progress = 3;
optional int32 completion_count = 4;
optional bool active = 5;
optional int32 started_count = 6;
optional Date date_given = 7;
optional Date date_completed = 8;
optional bool do_not_ack = 9;
}
// ref: PegasusUtil.Achieves
message Achieves {
// ref: PegasusUtil.Achieves/PacketID
enum PacketID {
ID = 252;
}
repeated Achieve list = 1;
}
// 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;
}
// ref: PegasusUtil.RenameDeck
message RenameDeck {
// ref: PegasusUtil.RenameDeck/PacketID
enum PacketID {
system = 0;
ID = 211;
}
required int64 deck = 1;
required string name = 2;
}