# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: google/cloud/iot/v1/device_manager.proto for package 'google.cloud.iot.v1'
# Original file comments:
# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

require 'grpc'
require 'google/cloud/iot/v1/device_manager_pb'

module Google
  module Cloud
    module Iot
      module V1
        module DeviceManager
          # Internet of Things (IoT) service. Securely connect and manage IoT devices.
          class Service

            include ::GRPC::GenericService

            self.marshal_class_method = :encode
            self.unmarshal_class_method = :decode
            self.service_name = 'google.cloud.iot.v1.DeviceManager'

            # Creates a device registry that contains devices.
            rpc :CreateDeviceRegistry, ::Google::Cloud::Iot::V1::CreateDeviceRegistryRequest, ::Google::Cloud::Iot::V1::DeviceRegistry
            # Gets a device registry configuration.
            rpc :GetDeviceRegistry, ::Google::Cloud::Iot::V1::GetDeviceRegistryRequest, ::Google::Cloud::Iot::V1::DeviceRegistry
            # Updates a device registry configuration.
            rpc :UpdateDeviceRegistry, ::Google::Cloud::Iot::V1::UpdateDeviceRegistryRequest, ::Google::Cloud::Iot::V1::DeviceRegistry
            # Deletes a device registry configuration.
            rpc :DeleteDeviceRegistry, ::Google::Cloud::Iot::V1::DeleteDeviceRegistryRequest, ::Google::Protobuf::Empty
            # Lists device registries.
            rpc :ListDeviceRegistries, ::Google::Cloud::Iot::V1::ListDeviceRegistriesRequest, ::Google::Cloud::Iot::V1::ListDeviceRegistriesResponse
            # Creates a device in a device registry.
            rpc :CreateDevice, ::Google::Cloud::Iot::V1::CreateDeviceRequest, ::Google::Cloud::Iot::V1::Device
            # Gets details about a device.
            rpc :GetDevice, ::Google::Cloud::Iot::V1::GetDeviceRequest, ::Google::Cloud::Iot::V1::Device
            # Updates a device.
            rpc :UpdateDevice, ::Google::Cloud::Iot::V1::UpdateDeviceRequest, ::Google::Cloud::Iot::V1::Device
            # Deletes a device.
            rpc :DeleteDevice, ::Google::Cloud::Iot::V1::DeleteDeviceRequest, ::Google::Protobuf::Empty
            # List devices in a device registry.
            rpc :ListDevices, ::Google::Cloud::Iot::V1::ListDevicesRequest, ::Google::Cloud::Iot::V1::ListDevicesResponse
            # Modifies the configuration for the device, which is eventually sent from
            # the Cloud IoT Core servers. Returns the modified configuration version and
            # its metadata.
            rpc :ModifyCloudToDeviceConfig, ::Google::Cloud::Iot::V1::ModifyCloudToDeviceConfigRequest, ::Google::Cloud::Iot::V1::DeviceConfig
            # Lists the last few versions of the device configuration in descending
            # order (i.e.: newest first).
            rpc :ListDeviceConfigVersions, ::Google::Cloud::Iot::V1::ListDeviceConfigVersionsRequest, ::Google::Cloud::Iot::V1::ListDeviceConfigVersionsResponse
            # Lists the last few versions of the device state in descending order (i.e.:
            # newest first).
            rpc :ListDeviceStates, ::Google::Cloud::Iot::V1::ListDeviceStatesRequest, ::Google::Cloud::Iot::V1::ListDeviceStatesResponse
            # Sets the access control policy on the specified resource. Replaces any
            # existing policy.
            rpc :SetIamPolicy, ::Google::Iam::V1::SetIamPolicyRequest, ::Google::Iam::V1::Policy
            # Gets the access control policy for a resource.
            # Returns an empty policy if the resource exists and does not have a policy
            # set.
            rpc :GetIamPolicy, ::Google::Iam::V1::GetIamPolicyRequest, ::Google::Iam::V1::Policy
            # Returns permissions that a caller has on the specified resource.
            # If the resource does not exist, this will return an empty set of
            # permissions, not a NOT_FOUND error.
            rpc :TestIamPermissions, ::Google::Iam::V1::TestIamPermissionsRequest, ::Google::Iam::V1::TestIamPermissionsResponse
            # Sends a command to the specified device. In order for a device to be able
            # to receive commands, it must:
            # 1) be connected to Cloud IoT Core using the MQTT protocol, and
            # 2) be subscribed to the group of MQTT topics specified by
            #    /devices/{device-id}/commands/#. This subscription will receive commands
            #    at the top-level topic /devices/{device-id}/commands as well as commands
            #    for subfolders, like /devices/{device-id}/commands/subfolder.
            #    Note that subscribing to specific subfolders is not supported.
            # If the command could not be delivered to the device, this method will
            # return an error; in particular, if the device is not subscribed, this
            # method will return FAILED_PRECONDITION. Otherwise, this method will
            # return OK. If the subscription is QoS 1, at least once delivery will be
            # guaranteed; for QoS 0, no acknowledgment will be expected from the device.
            rpc :SendCommandToDevice, ::Google::Cloud::Iot::V1::SendCommandToDeviceRequest, ::Google::Cloud::Iot::V1::SendCommandToDeviceResponse
            # Associates the device with the gateway.
            rpc :BindDeviceToGateway, ::Google::Cloud::Iot::V1::BindDeviceToGatewayRequest, ::Google::Cloud::Iot::V1::BindDeviceToGatewayResponse
            # Deletes the association between the device and the gateway.
            rpc :UnbindDeviceFromGateway, ::Google::Cloud::Iot::V1::UnbindDeviceFromGatewayRequest, ::Google::Cloud::Iot::V1::UnbindDeviceFromGatewayResponse
          end

          Stub = Service.rpc_stub_class
        end
      end
    end
  end
end
