import "steammessages_base.proto"; option optimize_for = SPEED; option cc_generic_services = false; message CMsgClientAppInfoUpdate { optional uint32 last_changenumber = 1; optional bool send_changelist = 2; } message CMsgClientAppInfoChanges { optional uint32 current_change_number = 1; optional bool force_full_update = 2; repeated uint32 appIDs = 3; } message CMsgClientAppInfoRequest { message App { optional uint32 app_id = 1; optional uint32 section_flags = 2; repeated uint32 section_CRC = 3; } repeated .CMsgClientAppInfoRequest.App apps = 1; optional bool supports_batches = 2 [default = false]; } message CMsgClientPICSChangesSinceRequest { optional uint32 since_change_number = 1; optional bool send_app_info_changes = 2; optional bool send_package_info_changes = 3; optional uint32 num_app_info_cached = 4; optional uint32 num_package_info_cached = 5; } message CMsgClientPICSChangesSinceResponse { message PackageChange { optional uint32 packageid = 1; optional uint32 change_number = 2; optional bool needs_token = 3; } message AppChange { optional uint32 appid = 1; optional uint32 change_number = 2; optional bool needs_token = 3; } optional uint32 current_change_number = 1; optional uint32 since_change_number = 2; optional bool force_full_update = 3; repeated .CMsgClientPICSChangesSinceResponse.PackageChange package_changes = 4; repeated .CMsgClientPICSChangesSinceResponse.AppChange app_changes = 5; optional bool force_full_app_update = 6; optional bool force_full_package_update = 7; } message CMsgClientPICSProductInfoRequest { message AppInfo { optional uint32 appid = 1; optional uint64 access_token = 2; optional bool only_public_obsolete = 3; } message PackageInfo { optional uint32 packageid = 1; optional uint64 access_token = 2; } repeated .CMsgClientPICSProductInfoRequest.PackageInfo packages = 1; repeated .CMsgClientPICSProductInfoRequest.AppInfo apps = 2; optional bool meta_data_only = 3; optional uint32 num_prev_failed = 4; optional uint32 OBSOLETE_supports_package_tokens = 5; optional uint32 sequence_number = 6; optional bool single_response = 7; } message CMsgClientPICSProductInfoResponse { option (msgpool_hard_limit) = 0; message AppInfo { optional uint32 appid = 1; optional uint32 change_number = 2; optional bool missing_token = 3; optional bytes sha = 4; optional bytes buffer = 5; optional bool only_public = 6; optional uint32 size = 7; } message PackageInfo { optional uint32 packageid = 1; optional uint32 change_number = 2; optional bool missing_token = 3; optional bytes sha = 4; optional bytes buffer = 5; optional uint32 size = 6; } repeated .CMsgClientPICSProductInfoResponse.AppInfo apps = 1; repeated uint32 unknown_appids = 2; repeated .CMsgClientPICSProductInfoResponse.PackageInfo packages = 3; repeated uint32 unknown_packageids = 4; optional bool meta_data_only = 5; optional bool response_pending = 6; optional uint32 http_min_size = 7; optional string http_host = 8; } message CMsgClientPICSAccessTokenRequest { repeated uint32 packageids = 1; repeated uint32 appids = 2; } message CMsgClientPICSAccessTokenResponse { message PackageToken { optional uint32 packageid = 1; optional uint64 access_token = 2; } message AppToken { optional uint32 appid = 1; optional uint64 access_token = 2; } repeated .CMsgClientPICSAccessTokenResponse.PackageToken package_access_tokens = 1; repeated uint32 package_denied_tokens = 2; repeated .CMsgClientPICSAccessTokenResponse.AppToken app_access_tokens = 3; repeated uint32 app_denied_tokens = 4; }