syntax = "proto2";

import "google/protobuf/descriptor.proto";

option optimize_for = SPEED;

enum EBanContentCheckResult {
  k_EBanContentCheckResult_NotScanned = 0;
  k_EBanContentCheckResult_Reset = 1;
  k_EBanContentCheckResult_NeedsChecking = 2;
  k_EBanContentCheckResult_VeryUnlikely = 5;
  k_EBanContentCheckResult_Unlikely = 30;
  k_EBanContentCheckResult_Possible = 50;
  k_EBanContentCheckResult_Likely = 75;
  k_EBanContentCheckResult_VeryLikely = 100;
}

enum EProtoClanEventType {
  k_EClanOtherEvent = 1;
  k_EClanGameEvent = 2;
  k_EClanPartyEvent = 3;
  k_EClanMeetingEvent = 4;
  k_EClanSpecialCauseEvent = 5;
  k_EClanMusicAndArtsEvent = 6;
  k_EClanSportsEvent = 7;
  k_EClanTripEvent = 8;
  k_EClanChatEvent = 9;
  k_EClanGameReleaseEvent = 10;
  k_EClanBroadcastEvent = 11;
  k_EClanSmallUpdateEvent = 12;
  k_EClanPreAnnounceMajorUpdateEvent = 13;
  k_EClanMajorUpdateEvent = 14;
  k_EClanDLCReleaseEvent = 15;
  k_EClanFutureReleaseEvent = 16;
  k_EClanESportTournamentStreamEvent = 17;
  k_EClanDevStreamEvent = 18;
  k_EClanFamousStreamEvent = 19;
  k_EClanGameSalesEvent = 20;
  k_EClanGameItemSalesEvent = 21;
  k_EClanInGameBonusXPEvent = 22;
  k_EClanInGameLootEvent = 23;
  k_EClanInGamePerksEvent = 24;
  k_EClanInGameChallengeEvent = 25;
  k_EClanInGameContestEvent = 26;
  k_EClanIRLEvent = 27;
  k_EClanNewsEvent = 28;
  k_EClanBetaReleaseEvent = 29;
  k_EClanInGameContentReleaseEvent = 30;
  k_EClanFreeTrial = 31;
  k_EClanSeasonRelease = 32;
  k_EClanSeasonUpdate = 33;
  k_EClanCrosspostEvent = 34;
  k_EClanInGameEventGeneral = 35;
  k_EClanCreatorHome = 36;
}

enum PartnerEventNotificationType {
  k_EEventStart = 0;
  k_EEventBroadcastStart = 1;
  k_EEventMatchStart = 2;
  k_EEventPartnerMaxType = 3;
}

message CMsgIPAddress {
  oneof ip {
    fixed32 v4 = 1;
    bytes v6 = 2;
  }
}

message CMsgIPAddressBucket {
  optional CMsgIPAddress original_ip_address = 1;
  optional fixed64 bucket = 2;
}

message CMsgGCRoutingProtoBufHeader {
  optional uint64 dst_gcid_queue = 1;
  optional uint32 dst_gc_dir_index = 2;
}

message CMsgProtoBufHeader {
  enum ESessionDisposition {
    k_ESessionDispositionNormal = 0;
    k_ESessionDispositionDisconnect = 1;
  }
  optional fixed64 steamid = 1;
  optional int32 client_sessionid = 2;
  optional uint32 routing_appid = 3;
  optional fixed64 jobid_source = 10 [default = 18446744073709551615];
  optional fixed64 jobid_target = 11 [default = 18446744073709551615];
  optional string target_job_name = 12;
  optional int32 seq_num = 24;
  optional int32 eresult = 13 [default = 2];
  optional string error_message = 14;
  oneof ip_addr {
    uint32 ip = 15;
    bytes ip_v6 = 29;
  }
  optional uint32 auth_account_flags = 16;
  optional uint32 token_source = 22;
  optional bool admin_spoofing_user = 23;
  optional int32 transport_error = 17 [default = 1];
  optional uint64 messageid = 18 [default = 18446744073709551615];
  optional uint32 publisher_group_id = 19;
  optional uint32 sysid = 20;
  optional uint32 webapi_key_id = 25;
  optional bool is_from_external_source = 26;
  repeated uint32 forward_to_sysid = 27;
  optional uint32 cm_sysid = 28;
  optional uint32 launcher_type = 31 [default = 0];
  optional uint32 realm = 32 [default = 0];
  optional int32 timeout_ms = 33 [default = -1];
  optional string debug_source = 34;
  optional uint32 debug_source_string_index = 35;
  optional uint64 token_id = 36;
  optional CMsgGCRoutingProtoBufHeader routing_gc = 37;
  optional CMsgProtoBufHeader.ESessionDisposition session_disposition = 38 [default = k_ESessionDispositionNormal];
  optional string wg_token = 39;
  optional string webui_auth_key = 40;
  repeated int32 exclude_client_sessionids = 41;
  optional fixed64 admin_request_spoofing_steamid = 43;
  optional bool is_valveds = 44;
  optional fixed64 trace_tag = 45;
}

message CMsgKubeRPCPacket {
  message Hdr {
    optional fixed64 jobid_source = 10 [default = 18446744073709551615];
    optional fixed64 jobid_target = 11 [default = 18446744073709551615];
    optional int32 eresult = 13 [default = 2];
    optional string target_job_name = 12;
    optional string error_message = 14;
    optional string reply_address = 42;
  }
  optional CMsgKubeRPCPacket.Hdr hdr = 1;
  optional bytes payload = 2;
}

message CMsgMulti {
  optional uint32 size_unzipped = 1;
  optional bytes message_body = 2;
}

message CMsgProtobufWrapped {
  optional bytes message_body = 1;
}

message CMsgAuthTicket {
  optional uint32 estate = 1;
  optional uint32 eresult = 2 [default = 2];
  optional fixed64 steamid = 3;
  optional fixed64 gameid = 4;
  optional uint32 h_steam_pipe = 5;
  optional uint32 ticket_crc = 6;
  optional bytes ticket = 7;
  optional bytes server_secret = 8;
  optional uint32 ticket_type = 9;
}

message CCDDBAppDetailCommon {
  optional uint32 appid = 1;
  optional string name = 2;
  optional string icon = 3;
  optional bool tool = 6;
  optional bool demo = 7;
  optional bool media = 8;
  optional bool community_visible_stats = 9;
  optional string friendly_name = 10;
  optional string propagation = 11;
  optional bool has_adult_content = 12;
  optional bool is_visible_in_steam_china = 13;
  optional uint32 app_type = 14;
  optional bool has_adult_content_sex = 15;
  optional bool has_adult_content_violence = 16;
  repeated uint32 content_descriptorids = 17;
  repeated uint32 content_descriptorids_including_dlc = 18;
}

message CMsgAppRights {
  optional bool edit_info = 1;
  optional bool publish = 2;
  optional bool view_error_data = 3;
  optional bool download = 4;
  optional bool upload_cdkeys = 5;
  optional bool generate_cdkeys = 6;
  optional bool view_financials = 7;
  optional bool manage_ceg = 8;
  optional bool manage_signing = 9;
  optional bool manage_cdkeys = 10;
  optional bool edit_marketing = 11;
  optional bool economy_support = 12;
  optional bool economy_support_supervisor = 13;
  optional bool manage_pricing = 14;
  optional bool broadcast_live = 15;
  optional bool view_marketing_traffic = 16;
  optional bool edit_store_display_content = 17;
}

message CCuratorPreferences {
  optional uint32 supported_languages = 1;
  optional bool platform_windows = 2;
  optional bool platform_mac = 3;
  optional bool platform_linux = 4;
  optional bool vr_content = 5;
  optional bool adult_content_violence = 6;
  optional bool adult_content_sex = 7;
  optional uint32 timestamp_updated = 8;
  repeated uint32 tagids_curated = 9;
  repeated uint32 tagids_filtered = 10;
  optional string website_title = 11;
  optional string website_url = 12;
  optional string discussion_url = 13;
  optional bool show_broadcast = 14;
}

message CLocalizationToken {
  optional uint32 language = 1;
  optional string localized_string = 2;
}

message CClanEventUserNewsTuple {
  optional uint32 clanid = 1;
  optional fixed64 event_gid = 2;
  optional fixed64 announcement_gid = 3;
  optional uint32 rtime_start = 4;
  optional uint32 rtime_end = 5;
  optional uint32 priority_score = 6;
  optional uint32 type = 7;
  optional uint32 clamp_range_slot = 8;
  optional uint32 appid = 9;
  optional uint32 rtime32_last_modified = 10;
}

message CClanMatchEventByRange {
  optional uint32 rtime_before = 1;
  optional uint32 rtime_after = 2;
  optional uint32 qualified = 3;
  repeated CClanEventUserNewsTuple events = 4;
}

message CCommunity_ClanAnnouncementInfo {
  optional uint64 gid = 1;
  optional uint64 clanid = 2;
  optional uint64 posterid = 3;
  optional string headline = 4;
  optional uint32 posttime = 5;
  optional uint32 updatetime = 6;
  optional string body = 7;
  optional int32 commentcount = 8;
  repeated string tags = 9;
  optional int32 language = 10;
  optional bool hidden = 11;
  optional fixed64 forum_topic_id = 12;
  optional fixed64 event_gid = 13;
  optional int32 voteupcount = 14;
  optional int32 votedowncount = 15;
  optional EBanContentCheckResult ban_check_result = 16;
  optional bool banned = 17;
}

message CClanEventData {
  optional fixed64 gid = 1;
  optional fixed64 clan_steamid = 2;
  optional string event_name = 3;
  optional EProtoClanEventType event_type = 4;
  optional uint32 appid = 5;
  optional string server_address = 6;
  optional string server_password = 7;
  optional uint32 rtime32_start_time = 8;
  optional uint32 rtime32_end_time = 9;
  optional int32 comment_count = 10;
  optional fixed64 creator_steamid = 11;
  optional fixed64 last_update_steamid = 12;
  optional string event_notes = 13;
  optional string jsondata = 14;
  optional CCommunity_ClanAnnouncementInfo announcement_body = 15;
  optional bool published = 16;
  optional bool hidden = 17;
  optional uint32 rtime32_visibility_start = 18;
  optional uint32 rtime32_visibility_end = 19;
  optional uint32 broadcaster_accountid = 20;
  optional uint32 follower_count = 21;
  optional uint32 ignore_count = 22;
  optional fixed64 forum_topic_id = 23;
  optional uint32 rtime32_last_modified = 24;
  optional fixed64 news_post_gid = 25;
  optional uint32 rtime_mod_reviewed = 26;
  optional uint32 featured_app_tagid = 27;
  repeated uint32 referenced_appids = 28;
  optional uint32 build_id = 29;
  optional string build_branch = 30;
  optional bool unlisted = 31;
}

message CBilling_Address {
  optional string first_name = 1;
  optional string last_name = 2;
  optional string address1 = 3;
  optional string address2 = 4;
  optional string city = 5;
  optional string us_state = 6;
  optional string country_code = 7;
  optional string postcode = 8;
  optional int32 zip_plus4 = 9;
  optional string phone = 10;
}

message CPackageReservationStatus {
  optional uint32 packageid = 1;
  optional int32 reservation_state = 2;
  optional int32 queue_position = 3;
  optional int32 total_queue_size = 4;
  optional string reservation_country_code = 5;
  optional bool expired = 6;
  optional uint32 time_expires = 7;
  optional uint32 time_reserved = 8;
  optional uint32 rtime_estimated_notification = 9;
  optional string notificaton_token = 10;
  optional int32 queue_head_position_at_reservation = 11;
  optional int32 queue_head_position_now = 12;
}

message CMsgKeyValuePair {
  optional string name = 1;
  optional string value = 2;
}

message CMsgKeyValueSet {
  repeated CMsgKeyValuePair pairs = 1;
}

message UserContentDescriptorPreferences {
  message ContentDescriptor {
    optional uint32 content_descriptorid = 1;
    optional uint32 timestamp_added = 2;
  }
  repeated UserContentDescriptorPreferences.ContentDescriptor content_descriptors_to_exclude = 1;
}

message UserSystemInformation {
  optional string manufacturer = 1;
  optional string model = 2;
  optional string dx_video_card = 3;
  optional int32 dx_vendorid = 4;
  optional int32 dx_deviceid = 5;
  optional uint32 num_gpu = 6;
  optional uint64 system_ram = 7;
  optional string os = 8;
  optional string cpu_vendor = 9;
  optional string cpu_name = 10;
  optional uint32 gaming_device_type = 11;
  optional string dx_driver_version = 12;
  optional string adapter_description = 14;
  optional string driver_version = 15;
  optional string driver_date = 16;
  optional uint32 vram_size = 17;
}

extend .google.protobuf.MessageOptions {
  optional int32 msgpool_soft_limit = 50000 [default = 32];
}
extend .google.protobuf.MessageOptions {
  optional int32 msgpool_hard_limit = 50001 [default = 384];
}
extend .google.protobuf.FieldOptions {
  optional bool php_output_always_number = 50020 [default = false];
}
extend .google.protobuf.FieldOptions {
  optional bool allow_field_named_steam_id = 50024 [default = false];
}

