import "google/protobuf/descriptor.proto";

option optimize_for = SPEED;
option cc_generic_services = true;
option (force_php_generation) = true;

extend .google.protobuf.MessageOptions {
	optional int32 msgpool_soft_limit = 50000 [default = 32];
	optional int32 msgpool_hard_limit = 50001 [default = 384];
}

extend .google.protobuf.FileOptions {
	optional bool force_php_generation = 50000 [default = false];
}

extend .google.protobuf.FieldOptions {
	optional bool php_output_always_number = 50020 [default = false];
}

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;
}

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 CMsgProtoBufHeader {
	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;
	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 uint64 trace_tag = 21;
	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 string wg_token = 30;
	optional uint32 launcher_type = 31 [default = 0];

	oneof ip_addr {
		uint32 ip = 15;
		bytes ip_v6 = 29;
	}
}

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;
}

message CCDDBAppDetailCommon {
	optional uint32 appid = 1;
	optional string name = 2;
	optional string icon = 3;
	optional string logo = 4;
	optional string logo_small = 5;
	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;
}

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;
}

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;
}

message CClanEventData {
	optional fixed64 gid = 1;
	optional fixed64 clan_steamid = 2;
	optional string event_name = 3;
	optional .EProtoClanEventType event_type = 4 [default = k_EClanOtherEvent];
	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;
}
