# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1.proto for package 'Keyapis.TelemetryControl.V1'
# Original file comments:
#
# Сервис реализует функционал управления приборами учёта(ПУ)

require 'grpc'
require 'keyapis/telemetry_control/v1/keyapis_telemetry_control_device_v1_pb'

module Keyapis
  module TelemetryControl
    module V1
      module DeviceService
        # Сервис приборов учёта (ПУ).
        # Авторизация:
        #   - Authorization: Bearer token.
        #   - X-Api-Key: apiKey
        class Service

          include ::GRPC::GenericService

          self.marshal_class_method = :encode
          self.unmarshal_class_method = :decode
          self.service_name = 'keyapis.telemetry_control.v1.DeviceService'

          # Полнодуплексный метод отправки команд на сервер и получения изменения со стороны сервера.
          # Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
          # Метод доступен для: ApiKey: Без учета разрешений
          rpc :PostDeviceFullDuplex, stream(::Keyapis::TelemetryControl::V1::PostDeviceFullDuplexRequest), stream(::Keyapis::TelemetryControl::V1::PostDeviceFullDuplexResponse)
          # Метод получения ПУ.
          # Разрешения: telemetry_control:device:card, telemetry_control:device:card:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDevice, ::Keyapis::TelemetryControl::V1::GetDeviceRequest, ::Keyapis::TelemetryControl::V1::GetDeviceResponse
          # Метод получения списка приборов учета.
          # Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceList, ::Keyapis::TelemetryControl::V1::GetDeviceListRequest, stream(::Keyapis::TelemetryControl::V1::GetDeviceListResponse)
          # Метод получения количества приборов учета.
          # Разрешения: telemetry_control:device:list, telemetry_control:device:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee, master. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceCount, ::Keyapis::TelemetryControl::V1::GetDeviceCountRequest, ::Keyapis::TelemetryControl::V1::GetDeviceCountResponse
          # Метод замены прибора учета.
          # Создает ПУ и привязывает его индикаторы к ТУ исходного ПУ.
          # Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
          rpc :PostDeviceReplace, ::Keyapis::TelemetryControl::V1::PostDeviceReplaceRequest, ::Keyapis::TelemetryControl::V1::PostDeviceReplaceResponse
          # Метод сохранения прибора учета.
          # Поддерживает создание и обновление.
          # Разрешения: telemetry_control:device:save, telemetry_control:device:save:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
          rpc :PostDevice, ::Keyapis::TelemetryControl::V1::PostDeviceRequest, ::Keyapis::TelemetryControl::V1::PostDeviceResponse
          # Метод удаления прибора учета.
          # Разрешения: telemetry_control:device:remove, telemetry_control:device:remove:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
          rpc :DeleteDevice, ::Keyapis::TelemetryControl::V1::DeleteDeviceRequest, ::Keyapis::TelemetryControl::V1::DeleteDeviceResponse
          # Метод сохранения индикатора.
          # Поддерживает создание и обновление.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
          rpc :PostDeviceIndicator, ::Keyapis::TelemetryControl::V1::PostDeviceIndicatorRequest, ::Keyapis::TelemetryControl::V1::PostDeviceIndicatorResponse
          # Метод получения индикатора.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceIndicator, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorRequest, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorResponse
          # Метод получения списка индикаторов.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceIndicatorList, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorListRequest, stream(::Keyapis::TelemetryControl::V1::GetDeviceIndicatorListResponse)
          # Метод получения количества индикаторов.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceIndicatorCount, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorCountRequest, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorCountResponse
          # Метод удаления индикаторa.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
          rpc :DeleteDeviceIndicator, ::Keyapis::TelemetryControl::V1::DeleteDeviceIndicatorRequest, ::Keyapis::TelemetryControl::V1::DeleteDeviceIndicatorResponse
          # Метод получения списка связей индикаторов и ТУ.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceIndicatorMetricPointList, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorMetricPointListRequest, stream(::Keyapis::TelemetryControl::V1::GetDeviceIndicatorMetricPointListResponse)
          # Метод получения количества связей индикаторов и ТУ.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetDeviceIndicatorMetricPointCount, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorMetricPointCountRequest, ::Keyapis::TelemetryControl::V1::GetDeviceIndicatorMetricPointCountResponse
          # Метод сохранения связи индикаторов и ТУ.
          # Поддерживает только создание связи.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
          rpc :PutDeviceIndicatorMetricPointAttach, ::Keyapis::TelemetryControl::V1::PutDeviceIndicatorMetricPointAttachRequest, ::Keyapis::TelemetryControl::V1::PutDeviceIndicatorMetricPointAttachResponse
          # Метод удаления связи индикаторов и ТУ.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. Без учета разрешений
          rpc :PutDeviceIndicatorMetricPointDetach, ::Keyapis::TelemetryControl::V1::PutDeviceIndicatorMetricPointDetachRequest, ::Keyapis::TelemetryControl::V1::PutDeviceIndicatorMetricPointDetachResponse
          # Метод получения списка связей ПУ и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :GetDeviceGroupList, ::Keyapis::TelemetryControl::V1::GetDeviceGroupListRequest, stream(::Keyapis::TelemetryControl::V1::GetDeviceGroupListResponse)
          # Метод получения количества связей ПУ и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :GetDeviceGroupCount, ::Keyapis::TelemetryControl::V1::GetDeviceGroupCountRequest, ::Keyapis::TelemetryControl::V1::GetDeviceGroupCountResponse
          # Метод сохранения связей ПУ и группы пользователя.
          # Поддерживает только создание.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :PutDeviceGroupAttach, ::Keyapis::TelemetryControl::V1::PutDeviceGroupAttachRequest, ::Keyapis::TelemetryControl::V1::PutDeviceGroupAttachResponse
          # Метод удаления связей ПУ и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :PutDeviceGroupDetach, ::Keyapis::TelemetryControl::V1::PutDeviceGroupDetachRequest, ::Keyapis::TelemetryControl::V1::PutDeviceGroupDetachResponse
        end

        Stub = Service.rpc_stub_class
      end
    end
  end
end
