blob: fc3d0178c7a4d0774eb112b6e291c865fed58e36 [file] [log] [blame]
Bu Sun Kim715bd7f2019-06-14 16:50:42 -07001<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">
Dmitry Frenkel3e17f892020-10-06 16:46:05 -070088 <code><a href="#close">close()</a></code></p>
89<p class="firstline">Close httplib2 connections.</p>
90<p class="toc_element">
Dan O'Mearadd494642020-05-01 07:42:23 -070091 <code><a href="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -070092<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">
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800100 <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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700101<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">
Dan O'Mearadd494642020-05-01 07:42:23 -0700106 <code><a href="#modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)</a></code></p>
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700107<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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700108<p class="toc_element">
Dan O'Mearadd494642020-05-01 07:42:23 -0700109 <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700110<p class="firstline">Updates a device.</p>
111<p class="toc_element">
Dan O'Mearadd494642020-05-01 07:42:23 -0700112 <code><a href="#sendCommandToDevice">sendCommandToDevice(name, body=None, x__xgafv=None)</a></code></p>
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700113<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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700114<h3>Method Details</h3>
115<div class="method">
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700116 <code class="details" id="close">close()</code>
117 <pre>Close httplib2 connections.</pre>
118</div>
119
120<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -0700121 <code class="details" id="create">create(parent, body=None, x__xgafv=None)</code>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700122 <pre>Creates a device in a device registry.
123
124Args:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700125 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)
Dan O'Mearadd494642020-05-01 07:42:23 -0700126 body: object, The request body.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700127 The object takes the form of:
128
129{ # The device resource.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800130 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800131 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800136 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800137 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800139 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800140 &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 },
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800144 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800145 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800146 &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`.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800151 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800152 &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800153 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800154 &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800155 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800156 &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800157 &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.
Bu Sun Kimd059ad82020-07-22 17:02:09 -0700160 },
161 ],
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800162 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800163 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800164 &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;,
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800171 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800172 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800174 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800178}
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700179
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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800189 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800203 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800204 ],
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.
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800219 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800220 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800221 &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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700238</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:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700245 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)
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700246 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
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700254 { # 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 `{}`.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800255}</pre>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700256</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:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700263 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)
yoshi-code-bot69706592021-03-03 03:54:02 -0800264 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`.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700265 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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800274 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800288 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800289 ],
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.
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800304 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800305 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800306 &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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700323</div>
324
325<div class="method">
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800326 <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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700327 <pre>List devices in a device registry.
328
329Args:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700330 parent: string, Required. The device registry path. Required. For example, `projects/my-project/locations/us-central1/registries/my-registry`. (required)
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800331 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)
Yoshi Automation Bot0d561ef2020-11-25 07:50:41 -0800332 deviceNumIds: string, A list of device numeric IDs. If empty, this field is ignored. Maximum IDs: 10,000. (repeated)
yoshi-code-bot69706592021-03-03 03:54:02 -0800333 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`.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800334 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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800335 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.
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700336 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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800341 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.
Bu Sun Kim65020912020-05-20 12:08:20 -0700343 x__xgafv: string, V1 error format.
344 Allowed values
345 1 - v1 error format
346 2 - v2 error format
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700347
348Returns:
349 An object of the form:
350
351 { # Response for `ListDevices`.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800352 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800368 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800369 ],
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.
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800384 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800385 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800386 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800387 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800388 &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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700406</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:
Bu Sun Kim65020912020-05-20 12:08:20 -0700417 A request object that you can call &#x27;execute()&#x27; on to request the next
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700418 page. Returns None if there are no more items in the collection.
419 </pre>
420</div>
421
422<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -0700423 <code class="details" id="modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body=None, x__xgafv=None)</code>
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700424 <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.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700425
426Args:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700427 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)
Dan O'Mearadd494642020-05-01 07:42:23 -0700428 body: object, The request body.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700429 The object takes the form of:
430
431{ # Request for `ModifyCloudToDeviceConfig`.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800432 &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}
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700435
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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800445 &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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700450</div>
451
452<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -0700453 <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700454 <pre>Updates a device.
455
456Args:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700457 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)
Dan O'Mearadd494642020-05-01 07:42:23 -0700458 body: object, The request body.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700459 The object takes the form of:
460
461{ # The device resource.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800462 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800463 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800468 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800469 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800471 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800472 &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 },
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800476 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800477 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800478 &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`.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800483 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800484 &quot;id&quot;: &quot;A String&quot;, # The user-defined device identifier. The device ID must be unique within a device registry.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800485 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800486 &quot;lastConfigSendTime&quot;: &quot;A String&quot;, # [Output only] The last time a cloud-to-device config version was sent to the device.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800487 &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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800488 &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800489 &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.
Bu Sun Kimd059ad82020-07-22 17:02:09 -0700492 },
493 ],
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800494 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800495 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800496 &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;,
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800503 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800504 &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.
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800506 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800510}
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700511
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700512 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`
Bu Sun Kim4ed7d3f2020-05-27 12:20:54 -0700513 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.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800522 &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 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800536 },
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800537 ],
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.
Yoshi Automation Botb6971b02020-11-26 17:16:03 -0800552 },
Yoshi Automation Bot0bf565c2020-12-09 08:56:03 -0800553 ],
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800554 &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>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700571</div>
572
573<div class="method">
Dan O'Mearadd494642020-05-01 07:42:23 -0700574 <code class="details" id="sendCommandToDevice">sendCommandToDevice(name, body=None, x__xgafv=None)</code>
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700575 <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.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700576
577Args:
Dmitry Frenkel3e17f892020-10-06 16:46:05 -0700578 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)
Dan O'Mearadd494642020-05-01 07:42:23 -0700579 body: object, The request body.
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700580 The object takes the form of:
581
582{ # Request for `SendCommandToDevice`.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800583 &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}
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700586
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`.
Yoshi Automation Botcc94ec82021-01-15 07:10:04 -0800596}</pre>
Bu Sun Kim715bd7f2019-06-14 16:50:42 -0700597</div>
598
599</body></html>