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

syntax = "proto3";

package activeregionpackage;

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

service ActiveRegionManager {
  // GetDocumentsUpdatedBetweenDates (Server Stream)
  //
  rpc GetDocumentsUpdatedBetweenDates(GetDocumentsUpdatedBetweenDatesRequest) returns (stream ActiveRegion) {}

  // CFeedsSyncDocuments (Server Stream)
  //
  rpc CFeedsSyncDocuments(CFeedsSyncDocumentsRequest) returns (stream ActiveRegion) {}

  // CFeedsSyncAllIds (Server Stream)
  //
  rpc CFeedsSyncAllIds(CFeedsSyncAllIdsRequest) returns (stream Id) {}

  // GetByCode (Unary)
  //
  rpc GetByCode(GetByCodeRequest) returns (GetByCodeResponse) {}
}

message CFeedsSyncAllIdsRequest {}

message Id {
  string id = 1;
}

message CFeedsSyncDocumentsRequest {
  // Expressed as a valid javascript Date, https://en.wikipedia.org/wiki/ISO_8601
  string last_run_at = 1;
}

message GetDocumentsUpdatedBetweenDatesRequest {
  // Expressed as a valid javascript Date, https://en.wikipedia.org/wiki/ISO_8601
  string updated_at_min = 1;
  // Expressed as a valid javascript Date, https://en.wikipedia.org/wiki/ISO_8601
  string updated_at_max = 2;
}

message ActiveRegion {
  string id = 1;
  string name = 2;
  string code = 3;
  repeated string territories = 4;
  string created_at = 5;
  string updated_at = 6;
}

message GetByCodeRequest {
  string code = 1;
}

message GetByCodeResponse {
  ActiveRegion document = 1;
}
