import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CDataPublisher_ClientContentCorruptionReport_Notification {
	optional uint32 appid = 1;
	optional uint32 depotid = 2;
	optional string download_source = 3 [(description) = "host name of download source"];
	optional string objectid = 4 [(description) = "Chunk SHA or Manifest ID"];
	optional uint32 cellid = 5 [(description) = "Client Cell ID"];
	optional bool is_manifest = 6 [(description) = "The object is a manifest, not a chunk"];
	optional uint64 object_size = 7 [(description) = "object size in bytes"];
	optional uint32 corruption_type = 8 [(description) = "See EContentCorruptionType"];
	optional bool used_https = 9 [(description) = "the request was HTTPS"];
	optional bool oc_proxy_detected = 10 [(description) = "detected an OpenCache proxy"];
}

message CDataPublisher_ClientUpdateAppJob_Notification {
	optional uint32 app_id = 1;
	repeated uint32 depot_ids = 2;
	optional uint32 app_state = 3;
	optional uint32 job_app_error = 4;
	optional string error_details = 5;
	optional uint32 job_duration = 6;
	optional uint32 files_validation_failed = 7;
	optional uint64 job_bytes_downloaded = 8;
	optional uint64 job_bytes_staged = 9;
	optional uint64 bytes_comitted = 10;
	optional uint32 start_app_state = 11;
	optional fixed64 stats_machine_id = 12;
	optional string branch_name = 13;
	optional uint64 total_bytes_downloaded = 14;
	optional uint64 total_bytes_staged = 15;
	optional uint64 total_bytes_restored = 16;
	optional bool is_borrowed = 17;
	optional bool is_free_weekend = 18;
	optional uint64 total_bytes_legacy = 19;
	optional uint64 total_bytes_patched = 20;
	optional uint64 total_bytes_saved = 21;
	optional uint32 cell_id = 22;
}

message CValveHWSurvey_GetSurveySchedule_Request {
	optional string surveydatetoken = 1;
	optional fixed64 surveydatetokenversion = 2;
}

message CValveHWSurvey_GetSurveySchedule_Response {
	optional uint32 surveydatetoken = 1;
	optional fixed64 surveydatetokenversion = 2;
}

service DataPublisher {
	option (service_description) = "Data Publisher (DP) server services";

	rpc ClientContentCorruptionReport (.CDataPublisher_ClientContentCorruptionReport_Notification) returns (.NoResponse);
	rpc ClientUpdateAppJobReport (.CDataPublisher_ClientUpdateAppJob_Notification) returns (.NoResponse);
}

service ValveHWSurvey {
	option (service_description) = "ValveHWSurvey";

	rpc GetSurveySchedule (.CValveHWSurvey_GetSurveySchedule_Request) returns (.CValveHWSurvey_GetSurveySchedule_Response) {
		option (method_description) = "Should I run the survey";
	}
}
