/*
  Спецификация для получения данных мониторинга
*/
syntax = "proto3";

package keyapis.vc.v1;

import "google/api/annotations.proto";
import "google/api/field_behavior.proto";
import "keyapis/vc/v1/keyapis_vc_camera_v1.proto";

option cc_enable_arenas = true;
option csharp_namespace = "Keyapis.Vc.V1";
option go_package = "/keyapis_vc_v1";
option java_multiple_files = false;
option java_outer_classname = "KeyapisVcV1Proto";
option java_package = "ru.keyapis.vc.v1";
option java_string_check_utf8 = true;
option objc_class_prefix = "KEYAPISVCV1";
option optimize_for = LITE_RUNTIME;
option php_namespace = "Keyapis\\Vc\\V1";
option ruby_package = "Keyapis::Vc::V1";

// Сервис получения данных мониторинга
service MonitoringService {
  // Метод получения данных мониторинга камеры.
  // Метод доступен для: admin, service, bti
  rpc GetMonitoringCompanyCamera (GetMonitoringCompanyCameraRequest) returns (GetMonitoringCompanyCameraResponse) {
    option (google.api.http) = {
        get: "/vc/api/v1/monitoring/company/{company_id}/camera/{camera_uid}"
    };
  }
}

// Бейдж данных мониторинга камеры
message CameraMonitoringBadge {
    // Цвет
    string color = 1;
    // Наименование
    string title = 2;
    // Дополнительные данные
    map<string, string> additional_data = 3;
}

// Мониторинг камеры
message MonitoringData {
    // uid видеопотока камеры
    string camera_uid = 1;
    // Идентификатор компании
    int32 company_id = 2;
    // Флаг наличия каналов
    bool is_channel_presence = 3;
    // Название дата-центра
    string data_center_name = 4;
    // Бейдж состояния vuf
    CameraMonitoringBadge vuf_status_badge = 5;
    // Бейдж состояния фиалки
    CameraMonitoringBadge violet_status_badge = 6;
    // Бейдж кол-ва камер фиалки
    CameraMonitoringBadge violet_cameras_count_badge = 7;
    // Бейдж кол-ва камер розы
    CameraMonitoringBadge rose_status_badge = 8;
    // Бейдж состояния RabbitMQ
    CameraMonitoringBadge rabbit_status_badge = 9;
    // Бейдж состояния камеры vuf
    CameraMonitoringBadge vuf_camera_status_badge = 10;
    // Бейдж приёма данных камеры
    CameraMonitoringBadge camera_receiving_status_badge = 11;
    // Бейдж трансляции данных камеры
    CameraMonitoringBadge camera_streaming_status_badge = 12;
    // Бейдж активного времени камеры
    CameraMonitoringBadge camera_uptime_status_badge = 13;
    // Бейдж состояния камеры пользователя
    CameraMonitoringBadge camera_uuc_status_badge = 14;
    // Бейдж состояния pg
    CameraMonitoringBadge pg_status_badge = 15;
    // Бейдж состояния redis
    CameraMonitoringBadge redis_status_badge = 16;
    // Бейдж онлайн состояния камеры
    CameraMonitoringBadge camera_online_badge = 17;
    // Бейдж состояния канала камеры
    CameraMonitoringBadge channel_status_badge = 18;
}

// Запрос на получение данных мониторинга камеры
message GetMonitoringCompanyCameraRequest {
  // uid видеопотока камеры
  string camera_uid = 1 [(google.api.field_behavior) = REQUIRED];
  // Идентификатор компании.
  // # Диапазон: 1..2147483647
  int32 company_id = 2 [(google.api.field_behavior) = REQUIRED];
}

// Ответ на запрос на получение данных мониторинга камеры
message GetMonitoringCompanyCameraResponse {
  // Ошибка запроса
  message Error {
    // Причина ошибки
    oneof reason {
      // Ошибка валидации
      ValidationError validation = 1;
    }
  }
  // Тип ответа
  oneof type {
    // Мониторинг камеры
    MonitoringData data = 1;
    // Ошибка
    Error error = 2;
  }
}
