Cloud IoT API . projects . locations . registries . devices

Instance Methods

configVersions()

Returns the configVersions Resource.

states()

Returns the states Resource.

create(parent, body=None, x__xgafv=None)

Creates a device in a device registry.

delete(name, x__xgafv=None)

Deletes a device.

get(name, fieldMask=None, x__xgafv=None)

Gets details about a device.

list(parent, deviceIds=None, deviceNumIds=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None, gatewayListOptions_associationsGatewayId=None, pageToken=None, fieldMask=None, pageSize=None, x__xgafv=None)

List devices in a device registry.

list_next(previous_request, previous_response)

Retrieves the next page of results.

modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)

Modifies the configuration for the device, which is eventually sent from

patch(name, body=None, updateMask=None, x__xgafv=None)

Updates a device.

sendCommandToDevice(name, body=None, x__xgafv=None)

Sends a command to the specified device. In order for a device to be able

Method Details

create(parent, body=None, x__xgafv=None)
Creates a device in a device registry.

Args:
  parent: string, Required. The name of the device registry where this device should be created.
For example,
`projects/example-project/locations/us-central1/registries/my-registry`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The device resource.
    "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
        # was received from the device. This field is only for configurations
        # sent through MQTT.
    "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
      "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
          # gateway.
      "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
          # specified in `last_accessed_gateway`.
      "gatewayType": "A String", # Indicates whether the device is a gateway.
      "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
    },
    "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
        # more compact way to identify devices, and it is globally unique.
    "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
        # Can be used to temporarily prevent the device from connecting if, for
        # example, the sensor is generating bad data and needs maintenance.
    "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
        # applies only to devices connecting through MQTT. MQTT clients usually only
        # send `PINGREQ` messages if the connection is idle, and no other messages
        # have been sent. Timestamps are periodically collected and written to
        # storage; they may be stale by a few minutes.
    "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
        # periodically collected and written to storage; they may be stale by a few
        # minutes.
    "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
        # the device.
    "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
        # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
        # field. If no errors have occurred, this field has an empty message
        # and the status code 0 == OK. Otherwise, this field is expected to have a
        # status code other than OK.
        # different programming environments, including REST APIs and RPC APIs. It is
        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
        # three pieces of data: error code, error message, and error details.
        #
        # You can find out more about this error model and how to work with it in the
        # [API Design Guide](https://cloud.google.com/apis/design/errors).
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "message": "A String", # A developer-facing error message, which should be in English. Any
          # user-facing error message should be localized and sent in the
          # google.rpc.Status.details field, or localized by the client.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
        # periodically collected and written to storage; they may be stale by a few
        # minutes.
    "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
        # has been reported, this field is not present.
      "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
          # IoT Core.
      "binaryData": "A String", # The device state data.
    },
    "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
        # Cloud IoT Core to the device. If not present on creation, the
        # configuration will be initialized with an empty payload and version value
        # of `1`. To update this field after creation, use the
        # `DeviceManager.ModifyCloudToDeviceConfig` method.
      "version": "A String", # [Output only] The version of this update. The version number is assigned by
          # the server, and is always greater than 0 after device creation. The
          # version must be 0 on the `CreateDevice` request if a `config` is
          # specified; the response of `CreateDevice` will always have a value of 1.
      "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
          # Cloud IoT Core. This timestamp is set by the server.
      "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
          # acknowledgment from the device, indicating that the device has received
          # this configuration version. If this field is not present, the device has
          # not yet acknowledged that it received this version. Note that when
          # the config was sent to the device, many config versions may have been
          # available in Cloud IoT Core while the device was disconnected, and on
          # connection, only the latest version is sent to the device. Some
          # versions may never be sent to the device, and therefore are never
          # acknowledged. This timestamp is set by Cloud IoT Core.
      "binaryData": "A String", # The device configuration data.
    },
    "credentials": [ # The credentials used to authenticate this device. To allow credential
        # rotation without interruption, multiple device credentials can be bound to
        # this device. No more than 3 credentials can be bound to a single device at
        # a time. When new credentials are added to a device, they are verified
        # against the registry credentials. For details, see the description of the
        # `DeviceRegistry.credentials` field.
      { # A server-stored device credential used for authentication.
        "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
            # credential will be ignored for new client authentication requests after
            # this timestamp; however, it will not be automatically deleted.
        "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
            # When adding a new device credential, either via device creation or via
            # modifications, this public key credential may be required to be signed by
            # one of the registry level certificates. More specifically, if the
            # registry contains at least one certificate, any new device credential
            # must be signed by one of the registry certificates. As a result,
            # when the registry contains certificates, only X.509 certificates are
            # accepted as device credentials. However, if the registry does
            # not contain a certificate, self-signed certificates and public keys will
            # be accepted. New device credentials must be different from every
            # registry-level certificate.
          "key": "A String", # The key data.
          "format": "A String", # The format of the key.
        },
      },
    ],
    "name": "A String", # The resource path name. For example,
        # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
        # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
        # When `name` is populated as a response from the service, it always ends
        # in the device numeric ID.
    "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
        # publish to Cloud Pub/Sub. This field is the timestamp of
        # 'last_error_status'.
    "logLevel": "A String", # **Beta Feature**
        # 
        # The logging verbosity for device activity. If unspecified,
        # DeviceRegistry.log_level will be used.
    "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
        # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
        # information for the device.
        # 
        # Keys must conform to the regular expression a-zA-Z+ and
        # be less than 128 bytes in length.
        # 
        # Values are free-form strings. Each value must be less than or equal to 32
        # KB in size.
        # 
        # The total size of all keys and values must be less than 256 KB, and the
        # maximum number of key-value pairs is 500.
      "a_key": "A String",
    },
    "id": "A String", # The user-defined device identifier. The device ID must be unique
        # within a device registry.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The device resource.
      "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
          # was received from the device. This field is only for configurations
          # sent through MQTT.
      "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
        "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
            # gateway.
        "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
            # specified in `last_accessed_gateway`.
        "gatewayType": "A String", # Indicates whether the device is a gateway.
        "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
      },
      "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
          # more compact way to identify devices, and it is globally unique.
      "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
          # Can be used to temporarily prevent the device from connecting if, for
          # example, the sensor is generating bad data and needs maintenance.
      "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
          # applies only to devices connecting through MQTT. MQTT clients usually only
          # send `PINGREQ` messages if the connection is idle, and no other messages
          # have been sent. Timestamps are periodically collected and written to
          # storage; they may be stale by a few minutes.
      "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
          # the device.
      "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
          # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
          # field. If no errors have occurred, this field has an empty message
          # and the status code 0 == OK. Otherwise, this field is expected to have a
          # status code other than OK.
          # different programming environments, including REST APIs and RPC APIs. It is
          # used by [gRPC](https://github.com/grpc). Each `Status` message contains
          # three pieces of data: error code, error message, and error details.
          #
          # You can find out more about this error model and how to work with it in the
          # [API Design Guide](https://cloud.google.com/apis/design/errors).
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "message": "A String", # A developer-facing error message, which should be in English. Any
            # user-facing error message should be localized and sent in the
            # google.rpc.Status.details field, or localized by the client.
        "details": [ # A list of messages that carry the error details.  There is a common set of
            # message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
      },
      "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
          # has been reported, this field is not present.
        "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
            # IoT Core.
        "binaryData": "A String", # The device state data.
      },
      "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
          # Cloud IoT Core to the device. If not present on creation, the
          # configuration will be initialized with an empty payload and version value
          # of `1`. To update this field after creation, use the
          # `DeviceManager.ModifyCloudToDeviceConfig` method.
        "version": "A String", # [Output only] The version of this update. The version number is assigned by
            # the server, and is always greater than 0 after device creation. The
            # version must be 0 on the `CreateDevice` request if a `config` is
            # specified; the response of `CreateDevice` will always have a value of 1.
        "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
            # Cloud IoT Core. This timestamp is set by the server.
        "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
            # acknowledgment from the device, indicating that the device has received
            # this configuration version. If this field is not present, the device has
            # not yet acknowledged that it received this version. Note that when
            # the config was sent to the device, many config versions may have been
            # available in Cloud IoT Core while the device was disconnected, and on
            # connection, only the latest version is sent to the device. Some
            # versions may never be sent to the device, and therefore are never
            # acknowledged. This timestamp is set by Cloud IoT Core.
        "binaryData": "A String", # The device configuration data.
      },
      "credentials": [ # The credentials used to authenticate this device. To allow credential
          # rotation without interruption, multiple device credentials can be bound to
          # this device. No more than 3 credentials can be bound to a single device at
          # a time. When new credentials are added to a device, they are verified
          # against the registry credentials. For details, see the description of the
          # `DeviceRegistry.credentials` field.
        { # A server-stored device credential used for authentication.
          "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
              # credential will be ignored for new client authentication requests after
              # this timestamp; however, it will not be automatically deleted.
          "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
              # When adding a new device credential, either via device creation or via
              # modifications, this public key credential may be required to be signed by
              # one of the registry level certificates. More specifically, if the
              # registry contains at least one certificate, any new device credential
              # must be signed by one of the registry certificates. As a result,
              # when the registry contains certificates, only X.509 certificates are
              # accepted as device credentials. However, if the registry does
              # not contain a certificate, self-signed certificates and public keys will
              # be accepted. New device credentials must be different from every
              # registry-level certificate.
            "key": "A String", # The key data.
            "format": "A String", # The format of the key.
          },
        },
      ],
      "name": "A String", # The resource path name. For example,
          # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
          # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
          # When `name` is populated as a response from the service, it always ends
          # in the device numeric ID.
      "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
          # publish to Cloud Pub/Sub. This field is the timestamp of
          # 'last_error_status'.
      "logLevel": "A String", # **Beta Feature**
          #
          # The logging verbosity for device activity. If unspecified,
          # DeviceRegistry.log_level will be used.
      "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
          # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
          # information for the device.
          #
          # Keys must conform to the regular expression a-zA-Z+ and
          # be less than 128 bytes in length.
          #
          # Values are free-form strings. Each value must be less than or equal to 32
          # KB in size.
          #
          # The total size of all keys and values must be less than 256 KB, and the
          # maximum number of key-value pairs is 500.
        "a_key": "A String",
      },
      "id": "A String", # The user-defined device identifier. The device ID must be unique
          # within a device registry.
    }
delete(name, x__xgafv=None)
Deletes a device.

Args:
  name: string, Required. The name of the device. For example,
`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated
      # empty messages in your APIs. A typical example is to use it as the request
      # or the response type of an API method. For instance:
      #
      #     service Foo {
      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
      #     }
      #
      # The JSON representation for `Empty` is empty JSON object `{}`.
  }
get(name, fieldMask=None, x__xgafv=None)
Gets details about a device.

Args:
  name: string, Required. The name of the device. For example,
`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
  fieldMask: string, The fields of the `Device` resource to be returned in the response. If the
field mask is unset or empty, all fields are returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The device resource.
      "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
          # was received from the device. This field is only for configurations
          # sent through MQTT.
      "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
        "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
            # gateway.
        "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
            # specified in `last_accessed_gateway`.
        "gatewayType": "A String", # Indicates whether the device is a gateway.
        "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
      },
      "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
          # more compact way to identify devices, and it is globally unique.
      "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
          # Can be used to temporarily prevent the device from connecting if, for
          # example, the sensor is generating bad data and needs maintenance.
      "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
          # applies only to devices connecting through MQTT. MQTT clients usually only
          # send `PINGREQ` messages if the connection is idle, and no other messages
          # have been sent. Timestamps are periodically collected and written to
          # storage; they may be stale by a few minutes.
      "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
          # the device.
      "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
          # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
          # field. If no errors have occurred, this field has an empty message
          # and the status code 0 == OK. Otherwise, this field is expected to have a
          # status code other than OK.
          # different programming environments, including REST APIs and RPC APIs. It is
          # used by [gRPC](https://github.com/grpc). Each `Status` message contains
          # three pieces of data: error code, error message, and error details.
          #
          # You can find out more about this error model and how to work with it in the
          # [API Design Guide](https://cloud.google.com/apis/design/errors).
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "message": "A String", # A developer-facing error message, which should be in English. Any
            # user-facing error message should be localized and sent in the
            # google.rpc.Status.details field, or localized by the client.
        "details": [ # A list of messages that carry the error details.  There is a common set of
            # message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
      },
      "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
          # has been reported, this field is not present.
        "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
            # IoT Core.
        "binaryData": "A String", # The device state data.
      },
      "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
          # Cloud IoT Core to the device. If not present on creation, the
          # configuration will be initialized with an empty payload and version value
          # of `1`. To update this field after creation, use the
          # `DeviceManager.ModifyCloudToDeviceConfig` method.
        "version": "A String", # [Output only] The version of this update. The version number is assigned by
            # the server, and is always greater than 0 after device creation. The
            # version must be 0 on the `CreateDevice` request if a `config` is
            # specified; the response of `CreateDevice` will always have a value of 1.
        "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
            # Cloud IoT Core. This timestamp is set by the server.
        "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
            # acknowledgment from the device, indicating that the device has received
            # this configuration version. If this field is not present, the device has
            # not yet acknowledged that it received this version. Note that when
            # the config was sent to the device, many config versions may have been
            # available in Cloud IoT Core while the device was disconnected, and on
            # connection, only the latest version is sent to the device. Some
            # versions may never be sent to the device, and therefore are never
            # acknowledged. This timestamp is set by Cloud IoT Core.
        "binaryData": "A String", # The device configuration data.
      },
      "credentials": [ # The credentials used to authenticate this device. To allow credential
          # rotation without interruption, multiple device credentials can be bound to
          # this device. No more than 3 credentials can be bound to a single device at
          # a time. When new credentials are added to a device, they are verified
          # against the registry credentials. For details, see the description of the
          # `DeviceRegistry.credentials` field.
        { # A server-stored device credential used for authentication.
          "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
              # credential will be ignored for new client authentication requests after
              # this timestamp; however, it will not be automatically deleted.
          "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
              # When adding a new device credential, either via device creation or via
              # modifications, this public key credential may be required to be signed by
              # one of the registry level certificates. More specifically, if the
              # registry contains at least one certificate, any new device credential
              # must be signed by one of the registry certificates. As a result,
              # when the registry contains certificates, only X.509 certificates are
              # accepted as device credentials. However, if the registry does
              # not contain a certificate, self-signed certificates and public keys will
              # be accepted. New device credentials must be different from every
              # registry-level certificate.
            "key": "A String", # The key data.
            "format": "A String", # The format of the key.
          },
        },
      ],
      "name": "A String", # The resource path name. For example,
          # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
          # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
          # When `name` is populated as a response from the service, it always ends
          # in the device numeric ID.
      "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
          # publish to Cloud Pub/Sub. This field is the timestamp of
          # 'last_error_status'.
      "logLevel": "A String", # **Beta Feature**
          #
          # The logging verbosity for device activity. If unspecified,
          # DeviceRegistry.log_level will be used.
      "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
          # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
          # information for the device.
          #
          # Keys must conform to the regular expression a-zA-Z+ and
          # be less than 128 bytes in length.
          #
          # Values are free-form strings. Each value must be less than or equal to 32
          # KB in size.
          #
          # The total size of all keys and values must be less than 256 KB, and the
          # maximum number of key-value pairs is 500.
        "a_key": "A String",
      },
      "id": "A String", # The user-defined device identifier. The device ID must be unique
          # within a device registry.
    }
list(parent, deviceIds=None, deviceNumIds=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None, gatewayListOptions_associationsGatewayId=None, pageToken=None, fieldMask=None, pageSize=None, x__xgafv=None)
List devices in a device registry.

Args:
  parent: string, Required. The device registry path. Required. For example,
`projects/my-project/locations/us-central1/registries/my-registry`. (required)
  deviceIds: string, A list of device string IDs. For example, `['device0', 'device12']`.
If empty, this field is ignored. Maximum IDs: 10,000 (repeated)
  deviceNumIds: string, A list of device numeric IDs. If empty, this field is ignored. Maximum
IDs: 10,000. (repeated)
  gatewayListOptions_associationsDeviceId: string, If set, returns only the gateways with which the specified device is
associated. The device ID can be numeric (`num_id`) or the user-defined
string (`id`). For example, if `456` is specified, returns only the
gateways to which the device with `num_id` 456 is bound.
  gatewayListOptions_gatewayType: string, If `GATEWAY` is specified, only gateways are returned. If `NON_GATEWAY`
is specified, only non-gateway devices are returned. If
`GATEWAY_TYPE_UNSPECIFIED` is specified, all devices are returned.
  gatewayListOptions_associationsGatewayId: string, If set, only devices associated with the specified gateway are returned.
The gateway ID can be numeric (`num_id`) or the user-defined string
(`id`). For example, if `123` is specified, only devices bound to the
gateway with `num_id` 123 are returned.
  pageToken: string, The value returned by the last `ListDevicesResponse`; indicates
that this is a continuation of a prior `ListDevices` call and
the system should return the next page of data.
  fieldMask: string, The fields of the `Device` resource to be returned in the response. The
fields `id` and `num_id` are always returned, along with any
other fields specified.
  pageSize: integer, The maximum number of devices to return in the response. If this value
is zero, the service will select a default size. A call may return fewer
objects than requested. A non-empty `next_page_token` in the response
indicates that more data is available.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for `ListDevices`.
    "devices": [ # The devices that match the request.
      { # The device resource.
          "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
              # was received from the device. This field is only for configurations
              # sent through MQTT.
          "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
            "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
                # gateway.
            "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
                # specified in `last_accessed_gateway`.
            "gatewayType": "A String", # Indicates whether the device is a gateway.
            "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
          },
          "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
              # more compact way to identify devices, and it is globally unique.
          "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
              # Can be used to temporarily prevent the device from connecting if, for
              # example, the sensor is generating bad data and needs maintenance.
          "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
              # applies only to devices connecting through MQTT. MQTT clients usually only
              # send `PINGREQ` messages if the connection is idle, and no other messages
              # have been sent. Timestamps are periodically collected and written to
              # storage; they may be stale by a few minutes.
          "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
              # periodically collected and written to storage; they may be stale by a few
              # minutes.
          "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
              # the device.
          "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
              # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
              # field. If no errors have occurred, this field has an empty message
              # and the status code 0 == OK. Otherwise, this field is expected to have a
              # status code other than OK.
              # different programming environments, including REST APIs and RPC APIs. It is
              # used by [gRPC](https://github.com/grpc). Each `Status` message contains
              # three pieces of data: error code, error message, and error details.
              #
              # You can find out more about this error model and how to work with it in the
              # [API Design Guide](https://cloud.google.com/apis/design/errors).
            "code": 42, # The status code, which should be an enum value of google.rpc.Code.
            "message": "A String", # A developer-facing error message, which should be in English. Any
                # user-facing error message should be localized and sent in the
                # google.rpc.Status.details field, or localized by the client.
            "details": [ # A list of messages that carry the error details.  There is a common set of
                # message types for APIs to use.
              {
                "a_key": "", # Properties of the object. Contains field @type with type URL.
              },
            ],
          },
          "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
              # periodically collected and written to storage; they may be stale by a few
              # minutes.
          "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
              # has been reported, this field is not present.
            "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
                # IoT Core.
            "binaryData": "A String", # The device state data.
          },
          "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
              # Cloud IoT Core to the device. If not present on creation, the
              # configuration will be initialized with an empty payload and version value
              # of `1`. To update this field after creation, use the
              # `DeviceManager.ModifyCloudToDeviceConfig` method.
            "version": "A String", # [Output only] The version of this update. The version number is assigned by
                # the server, and is always greater than 0 after device creation. The
                # version must be 0 on the `CreateDevice` request if a `config` is
                # specified; the response of `CreateDevice` will always have a value of 1.
            "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
                # Cloud IoT Core. This timestamp is set by the server.
            "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
                # acknowledgment from the device, indicating that the device has received
                # this configuration version. If this field is not present, the device has
                # not yet acknowledged that it received this version. Note that when
                # the config was sent to the device, many config versions may have been
                # available in Cloud IoT Core while the device was disconnected, and on
                # connection, only the latest version is sent to the device. Some
                # versions may never be sent to the device, and therefore are never
                # acknowledged. This timestamp is set by Cloud IoT Core.
            "binaryData": "A String", # The device configuration data.
          },
          "credentials": [ # The credentials used to authenticate this device. To allow credential
              # rotation without interruption, multiple device credentials can be bound to
              # this device. No more than 3 credentials can be bound to a single device at
              # a time. When new credentials are added to a device, they are verified
              # against the registry credentials. For details, see the description of the
              # `DeviceRegistry.credentials` field.
            { # A server-stored device credential used for authentication.
              "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
                  # credential will be ignored for new client authentication requests after
                  # this timestamp; however, it will not be automatically deleted.
              "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
                  # When adding a new device credential, either via device creation or via
                  # modifications, this public key credential may be required to be signed by
                  # one of the registry level certificates. More specifically, if the
                  # registry contains at least one certificate, any new device credential
                  # must be signed by one of the registry certificates. As a result,
                  # when the registry contains certificates, only X.509 certificates are
                  # accepted as device credentials. However, if the registry does
                  # not contain a certificate, self-signed certificates and public keys will
                  # be accepted. New device credentials must be different from every
                  # registry-level certificate.
                "key": "A String", # The key data.
                "format": "A String", # The format of the key.
              },
            },
          ],
          "name": "A String", # The resource path name. For example,
              # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
              # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
              # When `name` is populated as a response from the service, it always ends
              # in the device numeric ID.
          "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
              # publish to Cloud Pub/Sub. This field is the timestamp of
              # 'last_error_status'.
          "logLevel": "A String", # **Beta Feature**
              #
              # The logging verbosity for device activity. If unspecified,
              # DeviceRegistry.log_level will be used.
          "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
              # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
              # information for the device.
              #
              # Keys must conform to the regular expression a-zA-Z+ and
              # be less than 128 bytes in length.
              #
              # Values are free-form strings. Each value must be less than or equal to 32
              # KB in size.
              #
              # The total size of all keys and values must be less than 256 KB, and the
              # maximum number of key-value pairs is 500.
            "a_key": "A String",
          },
          "id": "A String", # The user-defined device identifier. The device ID must be unique
              # within a device registry.
        },
    ],
    "nextPageToken": "A String", # If not empty, indicates that there may be more devices that match the
        # request; this value should be passed in a new `ListDevicesRequest`.
  }
list_next(previous_request, previous_response)
Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    
modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)
Modifies the configuration for the device, which is eventually sent from
the Cloud IoT Core servers. Returns the modified configuration version and
its metadata.

Args:
  name: string, Required. The name of the device. For example,
`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for `ModifyCloudToDeviceConfig`.
    "versionToUpdate": "A String", # The version number to update. If this value is zero, it will not check the
        # version number of the server and will always update the current version;
        # otherwise, this update will fail if the version number found on the server
        # does not match this version number. This is used to support multiple
        # simultaneous updates without losing data.
    "binaryData": "A String", # Required. The configuration data for the device.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The device configuration. Eventually delivered to devices.
    "version": "A String", # [Output only] The version of this update. The version number is assigned by
        # the server, and is always greater than 0 after device creation. The
        # version must be 0 on the `CreateDevice` request if a `config` is
        # specified; the response of `CreateDevice` will always have a value of 1.
    "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
        # Cloud IoT Core. This timestamp is set by the server.
    "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
        # acknowledgment from the device, indicating that the device has received
        # this configuration version. If this field is not present, the device has
        # not yet acknowledged that it received this version. Note that when
        # the config was sent to the device, many config versions may have been
        # available in Cloud IoT Core while the device was disconnected, and on
        # connection, only the latest version is sent to the device. Some
        # versions may never be sent to the device, and therefore are never
        # acknowledged. This timestamp is set by Cloud IoT Core.
    "binaryData": "A String", # The device configuration data.
  }
patch(name, body=None, updateMask=None, x__xgafv=None)
Updates a device.

Args:
  name: string, The resource path name. For example,
`projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
`projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
When `name` is populated as a response from the service, it always ends
in the device numeric ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # The device resource.
    "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
        # was received from the device. This field is only for configurations
        # sent through MQTT.
    "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
      "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
          # gateway.
      "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
          # specified in `last_accessed_gateway`.
      "gatewayType": "A String", # Indicates whether the device is a gateway.
      "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
    },
    "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
        # more compact way to identify devices, and it is globally unique.
    "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
        # Can be used to temporarily prevent the device from connecting if, for
        # example, the sensor is generating bad data and needs maintenance.
    "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
        # applies only to devices connecting through MQTT. MQTT clients usually only
        # send `PINGREQ` messages if the connection is idle, and no other messages
        # have been sent. Timestamps are periodically collected and written to
        # storage; they may be stale by a few minutes.
    "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
        # periodically collected and written to storage; they may be stale by a few
        # minutes.
    "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
        # the device.
    "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
        # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
        # field. If no errors have occurred, this field has an empty message
        # and the status code 0 == OK. Otherwise, this field is expected to have a
        # status code other than OK.
        # different programming environments, including REST APIs and RPC APIs. It is
        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
        # three pieces of data: error code, error message, and error details.
        #
        # You can find out more about this error model and how to work with it in the
        # [API Design Guide](https://cloud.google.com/apis/design/errors).
      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
      "message": "A String", # A developer-facing error message, which should be in English. Any
          # user-facing error message should be localized and sent in the
          # google.rpc.Status.details field, or localized by the client.
      "details": [ # A list of messages that carry the error details.  There is a common set of
          # message types for APIs to use.
        {
          "a_key": "", # Properties of the object. Contains field @type with type URL.
        },
      ],
    },
    "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
        # periodically collected and written to storage; they may be stale by a few
        # minutes.
    "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
        # has been reported, this field is not present.
      "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
          # IoT Core.
      "binaryData": "A String", # The device state data.
    },
    "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
        # Cloud IoT Core to the device. If not present on creation, the
        # configuration will be initialized with an empty payload and version value
        # of `1`. To update this field after creation, use the
        # `DeviceManager.ModifyCloudToDeviceConfig` method.
      "version": "A String", # [Output only] The version of this update. The version number is assigned by
          # the server, and is always greater than 0 after device creation. The
          # version must be 0 on the `CreateDevice` request if a `config` is
          # specified; the response of `CreateDevice` will always have a value of 1.
      "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
          # Cloud IoT Core. This timestamp is set by the server.
      "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
          # acknowledgment from the device, indicating that the device has received
          # this configuration version. If this field is not present, the device has
          # not yet acknowledged that it received this version. Note that when
          # the config was sent to the device, many config versions may have been
          # available in Cloud IoT Core while the device was disconnected, and on
          # connection, only the latest version is sent to the device. Some
          # versions may never be sent to the device, and therefore are never
          # acknowledged. This timestamp is set by Cloud IoT Core.
      "binaryData": "A String", # The device configuration data.
    },
    "credentials": [ # The credentials used to authenticate this device. To allow credential
        # rotation without interruption, multiple device credentials can be bound to
        # this device. No more than 3 credentials can be bound to a single device at
        # a time. When new credentials are added to a device, they are verified
        # against the registry credentials. For details, see the description of the
        # `DeviceRegistry.credentials` field.
      { # A server-stored device credential used for authentication.
        "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
            # credential will be ignored for new client authentication requests after
            # this timestamp; however, it will not be automatically deleted.
        "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
            # When adding a new device credential, either via device creation or via
            # modifications, this public key credential may be required to be signed by
            # one of the registry level certificates. More specifically, if the
            # registry contains at least one certificate, any new device credential
            # must be signed by one of the registry certificates. As a result,
            # when the registry contains certificates, only X.509 certificates are
            # accepted as device credentials. However, if the registry does
            # not contain a certificate, self-signed certificates and public keys will
            # be accepted. New device credentials must be different from every
            # registry-level certificate.
          "key": "A String", # The key data.
          "format": "A String", # The format of the key.
        },
      },
    ],
    "name": "A String", # The resource path name. For example,
        # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
        # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
        # When `name` is populated as a response from the service, it always ends
        # in the device numeric ID.
    "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
        # publish to Cloud Pub/Sub. This field is the timestamp of
        # 'last_error_status'.
    "logLevel": "A String", # **Beta Feature**
        # 
        # The logging verbosity for device activity. If unspecified,
        # DeviceRegistry.log_level will be used.
    "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
        # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
        # information for the device.
        # 
        # Keys must conform to the regular expression a-zA-Z+ and
        # be less than 128 bytes in length.
        # 
        # Values are free-form strings. Each value must be less than or equal to 32
        # KB in size.
        # 
        # The total size of all keys and values must be less than 256 KB, and the
        # maximum number of key-value pairs is 500.
      "a_key": "A String",
    },
    "id": "A String", # The user-defined device identifier. The device ID must be unique
        # within a device registry.
  }

  updateMask: string, Required. Only updates the `device` fields indicated by this mask.
The field mask must not be empty, and it must not contain fields that
are immutable or only set by the server.
Mutable top-level fields: `credentials`, `blocked`, and `metadata`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The device resource.
      "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
          # was received from the device. This field is only for configurations
          # sent through MQTT.
      "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
        "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
            # gateway.
        "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
            # specified in `last_accessed_gateway`.
        "gatewayType": "A String", # Indicates whether the device is a gateway.
        "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
      },
      "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
          # more compact way to identify devices, and it is globally unique.
      "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
          # Can be used to temporarily prevent the device from connecting if, for
          # example, the sensor is generating bad data and needs maintenance.
      "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
          # applies only to devices connecting through MQTT. MQTT clients usually only
          # send `PINGREQ` messages if the connection is idle, and no other messages
          # have been sent. Timestamps are periodically collected and written to
          # storage; they may be stale by a few minutes.
      "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
          # the device.
      "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
          # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
          # field. If no errors have occurred, this field has an empty message
          # and the status code 0 == OK. Otherwise, this field is expected to have a
          # status code other than OK.
          # different programming environments, including REST APIs and RPC APIs. It is
          # used by [gRPC](https://github.com/grpc). Each `Status` message contains
          # three pieces of data: error code, error message, and error details.
          #
          # You can find out more about this error model and how to work with it in the
          # [API Design Guide](https://cloud.google.com/apis/design/errors).
        "code": 42, # The status code, which should be an enum value of google.rpc.Code.
        "message": "A String", # A developer-facing error message, which should be in English. Any
            # user-facing error message should be localized and sent in the
            # google.rpc.Status.details field, or localized by the client.
        "details": [ # A list of messages that carry the error details.  There is a common set of
            # message types for APIs to use.
          {
            "a_key": "", # Properties of the object. Contains field @type with type URL.
          },
        ],
      },
      "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
          # periodically collected and written to storage; they may be stale by a few
          # minutes.
      "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
          # has been reported, this field is not present.
        "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
            # IoT Core.
        "binaryData": "A String", # The device state data.
      },
      "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
          # Cloud IoT Core to the device. If not present on creation, the
          # configuration will be initialized with an empty payload and version value
          # of `1`. To update this field after creation, use the
          # `DeviceManager.ModifyCloudToDeviceConfig` method.
        "version": "A String", # [Output only] The version of this update. The version number is assigned by
            # the server, and is always greater than 0 after device creation. The
            # version must be 0 on the `CreateDevice` request if a `config` is
            # specified; the response of `CreateDevice` will always have a value of 1.
        "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
            # Cloud IoT Core. This timestamp is set by the server.
        "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
            # acknowledgment from the device, indicating that the device has received
            # this configuration version. If this field is not present, the device has
            # not yet acknowledged that it received this version. Note that when
            # the config was sent to the device, many config versions may have been
            # available in Cloud IoT Core while the device was disconnected, and on
            # connection, only the latest version is sent to the device. Some
            # versions may never be sent to the device, and therefore are never
            # acknowledged. This timestamp is set by Cloud IoT Core.
        "binaryData": "A String", # The device configuration data.
      },
      "credentials": [ # The credentials used to authenticate this device. To allow credential
          # rotation without interruption, multiple device credentials can be bound to
          # this device. No more than 3 credentials can be bound to a single device at
          # a time. When new credentials are added to a device, they are verified
          # against the registry credentials. For details, see the description of the
          # `DeviceRegistry.credentials` field.
        { # A server-stored device credential used for authentication.
          "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
              # credential will be ignored for new client authentication requests after
              # this timestamp; however, it will not be automatically deleted.
          "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
              # When adding a new device credential, either via device creation or via
              # modifications, this public key credential may be required to be signed by
              # one of the registry level certificates. More specifically, if the
              # registry contains at least one certificate, any new device credential
              # must be signed by one of the registry certificates. As a result,
              # when the registry contains certificates, only X.509 certificates are
              # accepted as device credentials. However, if the registry does
              # not contain a certificate, self-signed certificates and public keys will
              # be accepted. New device credentials must be different from every
              # registry-level certificate.
            "key": "A String", # The key data.
            "format": "A String", # The format of the key.
          },
        },
      ],
      "name": "A String", # The resource path name. For example,
          # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
          # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
          # When `name` is populated as a response from the service, it always ends
          # in the device numeric ID.
      "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
          # publish to Cloud Pub/Sub. This field is the timestamp of
          # 'last_error_status'.
      "logLevel": "A String", # **Beta Feature**
          #
          # The logging verbosity for device activity. If unspecified,
          # DeviceRegistry.log_level will be used.
      "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
          # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
          # information for the device.
          #
          # Keys must conform to the regular expression a-zA-Z+ and
          # be less than 128 bytes in length.
          #
          # Values are free-form strings. Each value must be less than or equal to 32
          # KB in size.
          #
          # The total size of all keys and values must be less than 256 KB, and the
          # maximum number of key-value pairs is 500.
        "a_key": "A String",
      },
      "id": "A String", # The user-defined device identifier. The device ID must be unique
          # within a device registry.
    }
sendCommandToDevice(name, body=None, x__xgafv=None)
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.

Args:
  name: string, Required. The name of the device. For example,
`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request for `SendCommandToDevice`.
    "subfolder": "A String", # Optional subfolder for the command. If empty, the command will be delivered
        # to the /devices/{device-id}/commands topic, otherwise it will be delivered
        # to the /devices/{device-id}/commands/{subfolder} topic. Multi-level
        # subfolders are allowed. This field must not have more than 256 characters,
        # and must not contain any MQTT wildcards ("+" or "#") or null characters.
    "binaryData": "A String", # Required. The command data to send to the device.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for `SendCommandToDevice`.
  }