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

require 'grpc'
require 'keyapis/telemetry_control/v1/keyapis_telemetry_control_building_v1_pb'

module Keyapis
  module TelemetryControl
    module V1
      module BuildingService
        # Сервис управления объектами строительства телеметрии.
        # Авторизация:
        #   - 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.BuildingService'

          # Метод получения объекта строительства.
          # Разрешения: telemetry_control:building:card, telemetry_control:building:card:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetBuilding, ::Keyapis::TelemetryControl::V1::GetBuildingRequest, ::Keyapis::TelemetryControl::V1::GetBuildingResponse
          # Метод получения списка объектов строительства.
          # Разрешения: telemetry_control:building:list, telemetry_control:building:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetBuildingList, ::Keyapis::TelemetryControl::V1::GetBuildingListRequest, stream(::Keyapis::TelemetryControl::V1::GetBuildingListResponse)
          # Метод получения количества объектов строительства.
          # Разрешения: telemetry_control:building:list, telemetry_control:building:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
          # Метод доступен для: ApiKey: При наличии разрешений
          rpc :GetBuildingCount, ::Keyapis::TelemetryControl::V1::GetBuildingCountRequest, ::Keyapis::TelemetryControl::V1::GetBuildingCountResponse
          # Метод сохранения объекта строительства.
          # Поддерживает создание и обновление.
          # Разрешения: telemetry_control:building:save, telemetry_control:building:save:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений
          rpc :PostBuilding, ::Keyapis::TelemetryControl::V1::PostBuildingRequest, ::Keyapis::TelemetryControl::V1::PostBuildingResponse
          # Полнодуплексный метод отправки статусов на сервер и получения изменения со стороны сервера.
          # Разрешения: telemetry_control:building:list, telemetry_control:building:list:own.
          # Метод доступен для: Token: admin, service, bti, seller, application, owner, employee. При наличии разрешений.
          # Метод доступен для: ApiKey: Без учета разрешений
          rpc :PostBuildingFullDuplex, stream(::Keyapis::TelemetryControl::V1::PostBuildingFullDuplexRequest), stream(::Keyapis::TelemetryControl::V1::PostBuildingFullDuplexResponse)
          # Метод удаления объекта строительства.
          # Разрешения: telemetry_control:building:remove, telemetry_control:building:remove:own.
          # Метод доступен для: admin, service, bti, seller, application, owner, employee. При наличии разрешений
          rpc :DeleteBuilding, ::Keyapis::TelemetryControl::V1::DeleteBuildingRequest, ::Keyapis::TelemetryControl::V1::DeleteBuildingResponse
          # Метод получения списка связей объектов строительства и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :GetBuildingGroupList, ::Keyapis::TelemetryControl::V1::GetBuildingGroupListRequest, stream(::Keyapis::TelemetryControl::V1::GetBuildingGroupListResponse)
          # Метод получения количества связей объектов строительства и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :GetBuildingGroupCount, ::Keyapis::TelemetryControl::V1::GetBuildingGroupCountRequest, ::Keyapis::TelemetryControl::V1::GetBuildingGroupCountResponse
          # Метод сохранения связей объектов строительства и группы пользователя.
          # Поддерживает только создание.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :PutBuildingGroupAttach, ::Keyapis::TelemetryControl::V1::PutBuildingGroupAttachRequest, ::Keyapis::TelemetryControl::V1::PutBuildingGroupAttachResponse
          # Метод удаления связей объектов строительства и группы пользователя.
          # Метод доступен для: Token: admin, service, bti, seller. Без учета разрешений
          rpc :PutBuildingGroupDetach, ::Keyapis::TelemetryControl::V1::PutBuildingGroupDetachRequest, ::Keyapis::TelemetryControl::V1::PutBuildingGroupDetachResponse
        end

        Stub = Service.rpc_stub_class
      end
    end
  end
end
