/*
  Сервис реализует функционал взаимодействия с Умным домом Sber
*/
syntax = "proto3";

import "google/api/annotations.proto";

package keyapis.iot_connect.sber.v1;

option java_package = "ru.keyapis.iot_connect.v1";
option java_outer_classname = "KeyapisIotConnectV1Proto";
option java_multiple_files = false;
option java_string_check_utf8 = true;
option go_package = "/keyapis_iot_connect_v1";
option cc_enable_arenas = true;
option csharp_namespace = "Keyapis.IotConnect.V1";
option objc_class_prefix = "KEYAPISIOTCONNECTV1";
option php_namespace = "Keyapis\\IotConnect\\V1";
option ruby_package = "Keyapis::IotConnect::V1";
option optimize_for = LITE_RUNTIME;

// Сервис для выдачи устройств Умному дому Sber
service DevicesService{
  // Метод получения устройств, доступных пользователю.
  // Идентификатор пользователя - это subject из токена.
  // Метод доступен для: TokenACF: Scope: sber_iot
  rpc GetV1Devices(GetV1DevicesRequest) returns (GetV1DevicesResponse)
  {
    option (google.api.http) = {
      get: "/iot_connect/api/sber/v1/devices"
    };
  }
}

// Объект Модель устройства
message Model {
  // Список функций устройства
  enum FeatureType {
    // Значение не указано
    feature_type_unknown = 0;
    // Сигнализация о поступившем звонке
    incoming_call = 1;
    // Сигнализация о доступности устройства
    online = 2;
    // Отклонение звонка
    reject_call = 3;
    // Открытие замка
    unlock = 4;
  }
  // Идентификатор модели
  string id = 1;
  // Производитель
  string manufacturer = 2;
  // Название модели
  string model = 3;
  // Версия оборудования
  string hw_version = 4 [json_name = "hw_version"];
  // Версия прошивки
  string sw_version = 5 [json_name = "sw_version"];
  // Описание
  string description = 6;
  // Категория устройства
  string category = 7;
  // Список функций
  repeated FeatureType feature_types = 8 [json_name = "features"];
}

// Объект устройства
message Device {
  // Идентификатор устройства на платформе Ключ.
  // Конкатенация user_id и device_id плафтормы Ключ
  string id = 1;
  // Название устройства на платформе Ключ
  string name = 2;
  // Название устройства от производителя
  string default_name = 3 [json_name = "default_name"];
  // Адрес дома, где установлено устройство
  string home = 4;
  // Название или номер подъезда
  string room = 5;
  // Тип устройства
  Model model = 6;
  // HW версия устройства
  string hw_version = 7 [json_name = "hw_version"];
  // SW версия устройства
  string sw_version = 8 [json_name = "sw_version"];
}

// Запрос метода получения устройств, доступных пользователю
message GetV1DevicesRequest {
}

// Ответ на запрос метода получения устройств, доступных пользователю
message GetV1DevicesResponse {
  // Домофоны, доступные пользователю
  repeated Device data = 1 [json_name = "devices"];
}

