/*
 * Created by jonathan.jesperson@pluto.tv on 11/18/2021
 * Copyright (c) PlutoTV Inc 2021.
 */

syntax = "proto3";

package recommendationpackage;

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

service RecommendationManager {
  // StreamDataForAvailableVodContentRecommendations (Server Stream)
  //
  rpc StreamDataForAvailableVodContentRecommendations(StreamDataForAvailableVodContentRecommendationsRequest) returns (stream StreamDataForAvailableVodContentRecommendationsResponse) {}
}

message StreamDataForAvailableVodContentRecommendationsRequest {}

message StreamDataForAvailableVodContentRecommendationsResponse {
  string name = 1;
  string programming_type = 2;
  repeated string actors = 3;
  repeated string directors = 4;
  repeated string producers = 5;
  repeated string writers = 6;
  repeated string authors = 7;
  repeated Cc cc = 8;
  string tmsid = 9;
  double duration = 10;
  string summary = 11;
  string thumbnail = 12;
  string created_at = 13;
  repeated Episode episodes = 14;
  repeated Series series = 15;
}

message Episode {
  string id = 1;
  string season = 2;
  string genre = 3;
  string sub_genre = 4;
  string category = 5;
  string sub_category = 6;
  string tmsid = 7;
  DistributeAs distribute_as = 8;
}

message Series {
  string id = 1;
  string name = 2;
  string genre = 3;
  string tmsid = 4;
  string type = 5;
  DistributeAs distribute_as = 6;
}

message DistributeAs {
  bool _t_v_o_d = 1 [json_name = "TVOD"];
  bool _a_v_o_d = 2 [json_name = "AVOD"];
  bool _s_v_o_d = 3 [json_name = "SVOD"];
  bool linear = 4;
}

message Cc {
  string uri = 1;
  string language = 2;
  bool added_to_video = 3;
  string updated_at = 4;
  string id = 5;
}
