/*
 * Created by pkalmykov@pluto.tv on 05/25/2021.
 * Copyright (c) PlutoTV Inc 2021.
 */

syntax = "proto3";

package transcodejobspackage;

option go_package = "github.com/Pluto-tv/service-dal/golang_client";
option java_package = "tv.pluto.ip.dal.transcodejobs";

service TranscodeJobsManager {
  // UpdateTranscodeStatusAndReturnUpdated (Unary)
  //
  rpc UpdateTranscodeStatusAndReturnUpdated(UpdateTranscodeStatusAndReturnUpdatedRequest) returns (UpdateTranscodeStatusAndReturnUpdatedResponse) {}
}

message UpdateTranscodeStatusAndReturnUpdatedRequest {
  string query_external_i_d = 1;
  string query_transcoder_name = 2;
  string query_gte_lib_version = 3;
  string set_status = 4;
  string set_error = 5;
  int32 set_progress = 6;
}

message UpdateTranscodeStatusAndReturnUpdatedResponse {
  TranscodeJob document = 1;
}

message TranscodeJob {
  string id = 1;
  string created_at = 2;
  string updated_at = 3;
  string status = 4;
  int32 progress = 5;
  string external_i_d = 6;
  string transcode_mode = 7;
  string transcoder_name = 8;
  string transcoder_version = 9;
  string item = 10;
  string model = 11;
  string environment = 12;
  string db_type = 13;
  string error = 14;
  repeated Transcode transcodes = 15;
  string lib_version = 16;
  EncryptionParams encryption_params = 17;
  repeated Caption captions = 18;
}

message Transcode {
  string transcode_mode = 1;
  repeated Output output = 2;
  bool set_as_source = 3;
  Fragments fragments = 4;
}

message Fragments {
  repeated int32 breakpoints = 1;
  map<string, string> sub_clips = 2;
}

message Output {
  string url = 1;
  string type = 2;
  Dimensions dimensions = 3;
  repeated Thumbnail thumbnails = 4;
}

message Dimensions {
  int32 width = 1;
  int32 height = 2;
}

message Thumbnail {
  string base_url = 1;
  int32 interval_in_frames = 2;
  string format = 3;
  int32 height = 4;
  int32 width = 5;
  string prefix = 6;
  int32 interval = 7;
}

message Caption {
  string uri = 1;
  string language = 2;
  bool added_to_video = 3;
  string updated_at = 4;
}

message EncryptionParams {
  string schema = 1;
  int32 rotation_interval = 2;
  string key_file_name = 3;
}
