import "common.proto";

message CVideo_BeginGameRecordingSegmentsUpload_Request {
	optional uint64 recording_id = 1;
	optional string component_name = 2;
	optional string representation_name = 3;
	repeated .CVideo_GameRecordingSegmentInfo segments_to_store = 4;
}

message CVideo_BeginGameRecordingSegmentsUpload_Response {
	repeated .CVideo_GameRecordingSegmentUploadInfo segments_needed = 1;
	optional bool call_again = 2;
}

message CVideo_CommitGameRecordingSegmentsUpload_Request {
	optional uint64 recording_id = 1;
	optional string component_name = 2;
	optional string representation_name = 3;
	optional uint32 first_segment_number = 4;
	optional uint32 num_segments = 5;
	optional uint32 upload_result = 6;
}

message CVideo_CommitGameRecordingSegmentsUpload_Response {
}

message CVideo_GameRecordingCommitSegmentUploads_Request {
	optional uint64 recording_id = 1;
	repeated .CVideo_GameRecordingSegmentInfo segments_uploaded = 2;
}

message CVideo_GameRecordingCommitSegmentUploads_Response {
}

message CVideo_GameRecordingGetNextBatchOfSegmentsToUpload_Request {
	optional uint64 recording_id = 1;
}

message CVideo_GameRecordingGetNextBatchOfSegmentsToUpload_Response {
	repeated .CVideo_GameRecordingSegmentUploadInfo segments_needed = 1;
}

message CVideo_GameRecordingSegmentUploadInfo {
	optional .CVideo_GameRecordingSegmentInfo segment_info = 1;
	optional string url_host = 2;
	optional string url_path = 3;
	optional bool use_https = 4;
	repeated .CVideo_GameRecordingSegmentUploadInfo_HTTPHeaders request_headers = 5;
}

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

service VideoClip {
	rpc BeginGameRecordingSegmentsUpload (.CVideo_BeginGameRecordingSegmentsUpload_Request) returns (.CVideo_BeginGameRecordingSegmentsUpload_Response);
	rpc CommitGameRecordingSegmentsUpload (.CVideo_CommitGameRecordingSegmentsUpload_Request) returns (.CVideo_CommitGameRecordingSegmentsUpload_Response);
	rpc CommitSegmentUploads (.CVideo_GameRecordingCommitSegmentUploads_Request) returns (.CVideo_GameRecordingCommitSegmentUploads_Response);
	rpc GetNextBatchOfSegmentsToUpload (.CVideo_GameRecordingGetNextBatchOfSegmentsToUpload_Request) returns (.CVideo_GameRecordingGetNextBatchOfSegmentsToUpload_Response);
}

