1<html><body>
2<style>
3
4body, h1, h2, h3, div, span, p, pre, a {
5  margin: 0;
6  padding: 0;
7  border: 0;
8  font-weight: inherit;
9  font-style: inherit;
10  font-size: 100%;
11  font-family: inherit;
12  vertical-align: baseline;
13}
14
15body {
16  font-size: 13px;
17  padding: 1em;
18}
19
20h1 {
21  font-size: 26px;
22  margin-bottom: 1em;
23}
24
25h2 {
26  font-size: 24px;
27  margin-bottom: 1em;
28}
29
30h3 {
31  font-size: 20px;
32  margin-bottom: 1em;
33  margin-top: 1em;
34}
35
36pre, code {
37  line-height: 1.5;
38  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
39}
40
41pre {
42  margin-top: 0.5em;
43}
44
45h1, h2, h3, p {
46  font-family: Arial, sans serif;
47}
48
49h1, h2, h3 {
50  border-bottom: solid #CCC 1px;
51}
52
53.toc_element {
54  margin-top: 0.5em;
55}
56
57.firstline {
58  margin-left: 2 em;
59}
60
61.method  {
62  margin-top: 1em;
63  border: solid 1px #CCC;
64  padding: 1em;
65  background: #EEE;
66}
67
68.details {
69  font-weight: bold;
70  font-size: 14px;
71}
72
73</style>
74
75<h1><a href="cloudiot_v1.html">Cloud IoT API</a> . <a href="cloudiot_v1.projects.html">projects</a> . <a href="cloudiot_v1.projects.locations.html">locations</a> . <a href="cloudiot_v1.projects.locations.registries.html">registries</a> . <a href="cloudiot_v1.projects.locations.registries.devices.html">devices</a></h1>
76<h2>Instance Methods</h2>
77<p class="toc_element">
78  <code><a href="cloudiot_v1.projects.locations.registries.devices.configVersions.html">configVersions()</a></code>
79</p>
80<p class="firstline">Returns the configVersions Resource.</p>
81
82<p class="toc_element">
83  <code><a href="cloudiot_v1.projects.locations.registries.devices.states.html">states()</a></code>
84</p>
85<p class="firstline">Returns the states Resource.</p>
86
87<p class="toc_element">
88  <code><a href="#close">close()</a></code></p>
89<p class="firstline">Close httplib2 connections.</p>
90<p class="toc_element">
91  <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
92<p class="firstline">Creates a device in a device registry.</p>
93<p class="toc_element">
94  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
95<p class="firstline">Deletes a device.</p>
96<p class="toc_element">
97  <code><a href="#get">get(name, fieldMask=None, x__xgafv=None)</a></code></p>
98<p class="firstline">Gets details about a device.</p>
99<p class="toc_element">
100  <code><a href="#list">list(parent, deviceIds=None, deviceNumIds=None, fieldMask=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_gatewayType=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
101<p class="firstline">List devices in a device registry.</p>
102<p class="toc_element">
103  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
104<p class="firstline">Retrieves the next page of results.</p>
105<p class="toc_element">
106  <code><a href="#modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)</a></code></p>
107<p class="firstline">Modifies the configuration for the device, which is eventually sent from the Cloud IoT Core servers. Returns the modified configuration version and its metadata.</p>
108<p class="toc_element">
109  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
110<p class="firstline">Updates a device.</p>
111<p class="toc_element">
112  <code><a href="#sendCommandToDevice">sendCommandToDevice(name, body=None, x__xgafv=None)</a></code></p>
113<p class="firstline">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.</p>
114<h3>Method Details</h3>
115<div class="method">
116    <code class="details" id="close">close()</code>
117  <pre>Close httplib2 connections.</pre>
118</div>
119
120<div class="method">
121    <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
122  <pre>Creates a device in a device registry.
123
124Args:
125  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)
126  body: object, The request body.
127    The object takes the form of:
128
129{ # The device resource.
130  &quot;blocked&quot;: 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.
131  &quot;config&quot;: { # 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.
132    &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
133    &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
134    &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
135    &quot;version&quot;: &quot;A String&quot;, # [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.
136  },
137  &quot;credentials&quot;: [ # 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.
138    { # A server-stored device credential used for authentication.
139      &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
140      &quot;publicKey&quot;: { # 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.
141        &quot;format&quot;: &quot;A String&quot;, # The format of the key.
142        &quot;key&quot;: &quot;A String&quot;, # The key data.
143      },
144    },
145  ],
146  &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
147    &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
148    &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
149    &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
150    &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
151  },
152  &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
153  &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
154  &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
155  &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
156    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
157    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
158      {
159        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
160      },
161    ],
162    &quot;message&quot;: &quot;A String&quot;, # 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.
163  },
164  &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
165  &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
166  &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
167  &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
168  &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
169  &quot;metadata&quot;: { # 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.
170    &quot;a_key&quot;: &quot;A String&quot;,
171  },
172  &quot;name&quot;: &quot;A String&quot;, # 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.
173  &quot;numId&quot;: &quot;A String&quot;, # [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.
174  &quot;state&quot;: { # 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.
175    &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
176    &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
177  },
178}
179
180  x__xgafv: string, V1 error format.
181    Allowed values
182      1 - v1 error format
183      2 - v2 error format
184
185Returns:
186  An object of the form:
187
188    { # The device resource.
189  &quot;blocked&quot;: 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.
190  &quot;config&quot;: { # 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.
191    &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
192    &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
193    &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
194    &quot;version&quot;: &quot;A String&quot;, # [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.
195  },
196  &quot;credentials&quot;: [ # 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.
197    { # A server-stored device credential used for authentication.
198      &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
199      &quot;publicKey&quot;: { # 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.
200        &quot;format&quot;: &quot;A String&quot;, # The format of the key.
201        &quot;key&quot;: &quot;A String&quot;, # The key data.
202      },
203    },
204  ],
205  &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
206    &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
207    &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
208    &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
209    &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
210  },
211  &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
212  &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
213  &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
214  &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
215    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
216    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
217      {
218        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
219      },
220    ],
221    &quot;message&quot;: &quot;A String&quot;, # 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.
222  },
223  &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
224  &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
225  &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
226  &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
227  &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
228  &quot;metadata&quot;: { # 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.
229    &quot;a_key&quot;: &quot;A String&quot;,
230  },
231  &quot;name&quot;: &quot;A String&quot;, # 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.
232  &quot;numId&quot;: &quot;A String&quot;, # [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.
233  &quot;state&quot;: { # 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.
234    &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
235    &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
236  },
237}</pre>
238</div>
239
240<div class="method">
241    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
242  <pre>Deletes a device.
243
244Args:
245  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)
246  x__xgafv: string, V1 error format.
247    Allowed values
248      1 - v1 error format
249      2 - v2 error format
250
251Returns:
252  An object of the form:
253
254    { # 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 `{}`.
255}</pre>
256</div>
257
258<div class="method">
259    <code class="details" id="get">get(name, fieldMask=None, x__xgafv=None)</code>
260  <pre>Gets details about a device.
261
262Args:
263  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)
264  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. Fields have to be provided in snake_case format, for example: `last_heartbeat_time`.
265  x__xgafv: string, V1 error format.
266    Allowed values
267      1 - v1 error format
268      2 - v2 error format
269
270Returns:
271  An object of the form:
272
273    { # The device resource.
274  &quot;blocked&quot;: 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.
275  &quot;config&quot;: { # 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.
276    &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
277    &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
278    &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
279    &quot;version&quot;: &quot;A String&quot;, # [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.
280  },
281  &quot;credentials&quot;: [ # 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.
282    { # A server-stored device credential used for authentication.
283      &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
284      &quot;publicKey&quot;: { # 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.
285        &quot;format&quot;: &quot;A String&quot;, # The format of the key.
286        &quot;key&quot;: &quot;A String&quot;, # The key data.
287      },
288    },
289  ],
290  &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
291    &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
292    &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
293    &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
294    &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
295  },
296  &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
297  &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
298  &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
299  &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
300    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
301    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
302      {
303        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
304      },
305    ],
306    &quot;message&quot;: &quot;A String&quot;, # 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.
307  },
308  &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
309  &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
310  &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
311  &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
312  &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
313  &quot;metadata&quot;: { # 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.
314    &quot;a_key&quot;: &quot;A String&quot;,
315  },
316  &quot;name&quot;: &quot;A String&quot;, # 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.
317  &quot;numId&quot;: &quot;A String&quot;, # [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.
318  &quot;state&quot;: { # 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.
319    &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
320    &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
321  },
322}</pre>
323</div>
324
325<div class="method">
326    <code class="details" id="list">list(parent, deviceIds=None, deviceNumIds=None, fieldMask=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_gatewayType=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
327  <pre>List devices in a device registry.
328
329Args:
330  parent: string, Required. The device registry path. Required. For example, `projects/my-project/locations/us-central1/registries/my-registry`. (required)
331  deviceIds: string, A list of device string IDs. For example, `[&#x27;device0&#x27;, &#x27;device12&#x27;]`. If empty, this field is ignored. Maximum IDs: 10,000 (repeated)
332  deviceNumIds: string, A list of device numeric IDs. If empty, this field is ignored. Maximum IDs: 10,000. (repeated)
333  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 in snake_case format, for example: `last_heartbeat_time`.
334  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.
335  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.
336  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.
337    Allowed values
338      GATEWAY_TYPE_UNSPECIFIED - If unspecified, the device is considered a non-gateway device.
339      GATEWAY - The device is a gateway.
340      NON_GATEWAY - The device is not a gateway.
341  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.
342  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.
343  x__xgafv: string, V1 error format.
344    Allowed values
345      1 - v1 error format
346      2 - v2 error format
347
348Returns:
349  An object of the form:
350
351    { # Response for `ListDevices`.
352  &quot;devices&quot;: [ # The devices that match the request.
353    { # The device resource.
354      &quot;blocked&quot;: 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.
355      &quot;config&quot;: { # 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.
356        &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
357        &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
358        &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
359        &quot;version&quot;: &quot;A String&quot;, # [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.
360      },
361      &quot;credentials&quot;: [ # 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.
362        { # A server-stored device credential used for authentication.
363          &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
364          &quot;publicKey&quot;: { # 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.
365            &quot;format&quot;: &quot;A String&quot;, # The format of the key.
366            &quot;key&quot;: &quot;A String&quot;, # The key data.
367          },
368        },
369      ],
370      &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
371        &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
372        &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
373        &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
374        &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
375      },
376      &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
377      &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
378      &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
379      &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
380        &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
381        &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
382          {
383            &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
384          },
385        ],
386        &quot;message&quot;: &quot;A String&quot;, # 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.
387      },
388      &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
389      &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
390      &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
391      &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
392      &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
393      &quot;metadata&quot;: { # 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.
394        &quot;a_key&quot;: &quot;A String&quot;,
395      },
396      &quot;name&quot;: &quot;A String&quot;, # 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.
397      &quot;numId&quot;: &quot;A String&quot;, # [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.
398      &quot;state&quot;: { # 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.
399        &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
400        &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
401      },
402    },
403  ],
404  &quot;nextPageToken&quot;: &quot;A String&quot;, # If not empty, indicates that there may be more devices that match the request; this value should be passed in a new `ListDevicesRequest`.
405}</pre>
406</div>
407
408<div class="method">
409    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
410  <pre>Retrieves the next page of results.
411
412Args:
413  previous_request: The request for the previous page. (required)
414  previous_response: The response from the request for the previous page. (required)
415
416Returns:
417  A request object that you can call &#x27;execute()&#x27; on to request the next
418  page. Returns None if there are no more items in the collection.
419    </pre>
420</div>
421
422<div class="method">
423    <code class="details" id="modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)</code>
424  <pre>Modifies the configuration for the device, which is eventually sent from the Cloud IoT Core servers. Returns the modified configuration version and its metadata.
425
426Args:
427  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)
428  body: object, The request body.
429    The object takes the form of:
430
431{ # Request for `ModifyCloudToDeviceConfig`.
432  &quot;binaryData&quot;: &quot;A String&quot;, # Required. The configuration data for the device.
433  &quot;versionToUpdate&quot;: &quot;A String&quot;, # 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.
434}
435
436  x__xgafv: string, V1 error format.
437    Allowed values
438      1 - v1 error format
439      2 - v2 error format
440
441Returns:
442  An object of the form:
443
444    { # The device configuration. Eventually delivered to devices.
445  &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
446  &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
447  &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
448  &quot;version&quot;: &quot;A String&quot;, # [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.
449}</pre>
450</div>
451
452<div class="method">
453    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
454  <pre>Updates a device.
455
456Args:
457  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)
458  body: object, The request body.
459    The object takes the form of:
460
461{ # The device resource.
462  &quot;blocked&quot;: 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.
463  &quot;config&quot;: { # 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.
464    &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
465    &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
466    &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
467    &quot;version&quot;: &quot;A String&quot;, # [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.
468  },
469  &quot;credentials&quot;: [ # 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.
470    { # A server-stored device credential used for authentication.
471      &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
472      &quot;publicKey&quot;: { # 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.
473        &quot;format&quot;: &quot;A String&quot;, # The format of the key.
474        &quot;key&quot;: &quot;A String&quot;, # The key data.
475      },
476    },
477  ],
478  &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
479    &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
480    &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
481    &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
482    &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
483  },
484  &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
485  &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
486  &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
487  &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
488    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
489    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
490      {
491        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
492      },
493    ],
494    &quot;message&quot;: &quot;A String&quot;, # 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.
495  },
496  &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
497  &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
498  &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
499  &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
500  &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
501  &quot;metadata&quot;: { # 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.
502    &quot;a_key&quot;: &quot;A String&quot;,
503  },
504  &quot;name&quot;: &quot;A String&quot;, # 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.
505  &quot;numId&quot;: &quot;A String&quot;, # [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.
506  &quot;state&quot;: { # 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.
507    &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
508    &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
509  },
510}
511
512  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`
513  x__xgafv: string, V1 error format.
514    Allowed values
515      1 - v1 error format
516      2 - v2 error format
517
518Returns:
519  An object of the form:
520
521    { # The device resource.
522  &quot;blocked&quot;: 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.
523  &quot;config&quot;: { # 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.
524    &quot;binaryData&quot;: &quot;A String&quot;, # The device configuration data.
525    &quot;cloudUpdateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this configuration version was updated in Cloud IoT Core. This timestamp is set by the server.
526    &quot;deviceAckTime&quot;: &quot;A String&quot;, # [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.
527    &quot;version&quot;: &quot;A String&quot;, # [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.
528  },
529  &quot;credentials&quot;: [ # 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.
530    { # A server-stored device credential used for authentication.
531      &quot;expirationTime&quot;: &quot;A String&quot;, # [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.
532      &quot;publicKey&quot;: { # 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.
533        &quot;format&quot;: &quot;A String&quot;, # The format of the key.
534        &quot;key&quot;: &quot;A String&quot;, # The key data.
535      },
536    },
537  ],
538  &quot;gatewayConfig&quot;: { # Gateway-related configuration and state. # Gateway-related configuration and state.
539    &quot;gatewayAuthMethod&quot;: &quot;A String&quot;, # Indicates how to authorize and/or authenticate devices to access the gateway.
540    &quot;gatewayType&quot;: &quot;A String&quot;, # Indicates whether the device is a gateway.
541    &quot;lastAccessedGatewayId&quot;: &quot;A String&quot;, # [Output only] The ID of the gateway the device accessed most recently.
542    &quot;lastAccessedGatewayTime&quot;: &quot;A String&quot;, # [Output only] The most recent time at which the device accessed the gateway specified in `last_accessed_gateway`.
543  },
544  &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
545  &quot;lastConfigAckTime&quot;: &quot;A String&quot;, # [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.
546  &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
547  &quot;lastErrorStatus&quot;: { # The `Status` type defines a logical error model that is suitable for 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). # [Output only] The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub. &#x27;last_error_time&#x27; 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.
548    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
549    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
550      {
551        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
552      },
553    ],
554    &quot;message&quot;: &quot;A String&quot;, # 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.
555  },
556  &quot;lastErrorTime&quot;: &quot;A String&quot;, # [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 &#x27;last_error_status&#x27;.
557  &quot;lastEventTime&quot;: &quot;A String&quot;, # [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.
558  &quot;lastHeartbeatTime&quot;: &quot;A String&quot;, # [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.
559  &quot;lastStateTime&quot;: &quot;A String&quot;, # [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.
560  &quot;logLevel&quot;: &quot;A String&quot;, # **Beta Feature** The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.
561  &quot;metadata&quot;: { # 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.
562    &quot;a_key&quot;: &quot;A String&quot;,
563  },
564  &quot;name&quot;: &quot;A String&quot;, # 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.
565  &quot;numId&quot;: &quot;A String&quot;, # [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.
566  &quot;state&quot;: { # 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.
567    &quot;binaryData&quot;: &quot;A String&quot;, # The device state data.
568    &quot;updateTime&quot;: &quot;A String&quot;, # [Output only] The time at which this state version was updated in Cloud IoT Core.
569  },
570}</pre>
571</div>
572
573<div class="method">
574    <code class="details" id="sendCommandToDevice">sendCommandToDevice(name, body=None, x__xgafv=None)</code>
575  <pre>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.
576
577Args:
578  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)
579  body: object, The request body.
580    The object takes the form of:
581
582{ # Request for `SendCommandToDevice`.
583  &quot;binaryData&quot;: &quot;A String&quot;, # Required. The command data to send to the device.
584  &quot;subfolder&quot;: &quot;A String&quot;, # 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 (&quot;+&quot; or &quot;#&quot;) or null characters.
585}
586
587  x__xgafv: string, V1 error format.
588    Allowed values
589      1 - v1 error format
590      2 - v2 error format
591
592Returns:
593  An object of the form:
594
595    { # Response for `SendCommandToDevice`.
596}</pre>
597</div>
598
599</body></html>