• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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="#create">create(parent, body, x__xgafv=None)</a></code></p>
89<p class="firstline">Creates a device in a device registry.</p>
90<p class="toc_element">
91  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
92<p class="firstline">Deletes a device.</p>
93<p class="toc_element">
94  <code><a href="#get">get(name, fieldMask=None, x__xgafv=None)</a></code></p>
95<p class="firstline">Gets details about a device.</p>
96<p class="toc_element">
97  <code><a href="#list">list(parent, pageSize=None, fieldMask=None, deviceNumIds=None, x__xgafv=None, deviceIds=None, pageToken=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None)</a></code></p>
98<p class="firstline">List devices in a device registry.</p>
99<p class="toc_element">
100  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
101<p class="firstline">Retrieves the next page of results.</p>
102<p class="toc_element">
103  <code><a href="#modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body, x__xgafv=None)</a></code></p>
104<p class="firstline">Modifies the configuration for the device, which is eventually sent from</p>
105<p class="toc_element">
106  <code><a href="#patch">patch(name, body, updateMask=None, x__xgafv=None)</a></code></p>
107<p class="firstline">Updates a device.</p>
108<p class="toc_element">
109  <code><a href="#sendCommandToDevice">sendCommandToDevice(name, body, x__xgafv=None)</a></code></p>
110<p class="firstline">Sends a command to the specified device. In order for a device to be able</p>
111<h3>Method Details</h3>
112<div class="method">
113    <code class="details" id="create">create(parent, body, x__xgafv=None)</code>
114  <pre>Creates a device in a device registry.
115
116Args:
117  parent: string, The name of the device registry where this device should be created.
118For example,
119`projects/example-project/locations/us-central1/registries/my-registry`. (required)
120  body: object, The request body. (required)
121    The object takes the form of:
122
123{ # The device resource.
124  "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
125      # periodically collected and written to storage; they may be stale by a few
126      # minutes.
127  "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
128    "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
129        # specified in `last_accessed_gateway`.
130    "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
131    "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
132        # gateway.
133    "gatewayType": "A String", # Indicates whether the device is a gateway.
134  },
135  "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
136      # the device.
137  "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
138      # periodically collected and written to storage; they may be stale by a few
139      # minutes.
140  "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
141      # publish to Cloud Pub/Sub. This field is the timestamp of
142      # 'last_error_status'.
143  "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
144      # more compact way to identify devices, and it is globally unique.
145  "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
146      # applies only to devices connecting through MQTT. MQTT clients usually only
147      # send `PINGREQ` messages if the connection is idle, and no other messages
148      # have been sent. Timestamps are periodically collected and written to
149      # storage; they may be stale by a few minutes.
150  "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
151      # was received from the device. This field is only for configurations
152      # sent through MQTT.
153  "logLevel": "A String", # **Beta Feature**
154      #
155      # The logging verbosity for device activity. If unspecified,
156      # DeviceRegistry.log_level will be used.
157  "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
158      # has been reported, this field is not present.
159    "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
160        # IoT Core.
161    "binaryData": "A String", # The device state data.
162  },
163  "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
164      # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
165      # field. If no errors have occurred, this field has an empty message
166      # and the status code 0 == OK. Otherwise, this field is expected to have a
167      # status code other than OK.
168      # different programming environments, including REST APIs and RPC APIs. It is
169      # used by [gRPC](https://github.com/grpc). Each `Status` message contains
170      # three pieces of data: error code, error message, and error details.
171      #
172      # You can find out more about this error model and how to work with it in the
173      # [API Design Guide](https://cloud.google.com/apis/design/errors).
174    "message": "A String", # A developer-facing error message, which should be in English. Any
175        # user-facing error message should be localized and sent in the
176        # google.rpc.Status.details field, or localized by the client.
177    "code": 42, # The status code, which should be an enum value of google.rpc.Code.
178    "details": [ # A list of messages that carry the error details.  There is a common set of
179        # message types for APIs to use.
180      {
181        "a_key": "", # Properties of the object. Contains field @type with type URL.
182      },
183    ],
184  },
185  "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
186      # Can be used to temporarily prevent the device from connecting if, for
187      # example, the sensor is generating bad data and needs maintenance.
188  "credentials": [ # The credentials used to authenticate this device. To allow credential
189      # rotation without interruption, multiple device credentials can be bound to
190      # this device. No more than 3 credentials can be bound to a single device at
191      # a time. When new credentials are added to a device, they are verified
192      # against the registry credentials. For details, see the description of the
193      # `DeviceRegistry.credentials` field.
194    { # A server-stored device credential used for authentication.
195      "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
196          # When adding a new device credential, either via device creation or via
197          # modifications, this public key credential may be required to be signed by
198          # one of the registry level certificates. More specifically, if the
199          # registry contains at least one certificate, any new device credential
200          # must be signed by one of the registry certificates. As a result,
201          # when the registry contains certificates, only X.509 certificates are
202          # accepted as device credentials. However, if the registry does
203          # not contain a certificate, self-signed certificates and public keys will
204          # be accepted. New device credentials must be different from every
205          # registry-level certificate.
206        "key": "A String", # The key data.
207        "format": "A String", # The format of the key.
208      },
209      "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
210          # credential will be ignored for new client authentication requests after
211          # this timestamp; however, it will not be automatically deleted.
212    },
213  ],
214  "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
215      # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
216      # information for the device.
217      #
218      # Keys must conform to the regular expression a-zA-Z+ and
219      # be less than 128 bytes in length.
220      #
221      # Values are free-form strings. Each value must be less than or equal to 32
222      # KB in size.
223      #
224      # The total size of all keys and values must be less than 256 KB, and the
225      # maximum number of key-value pairs is 500.
226    "a_key": "A String",
227  },
228  "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
229      # Cloud IoT Core to the device. If not present on creation, the
230      # configuration will be initialized with an empty payload and version value
231      # of `1`. To update this field after creation, use the
232      # `DeviceManager.ModifyCloudToDeviceConfig` method.
233    "version": "A String", # [Output only] The version of this update. The version number is assigned by
234        # the server, and is always greater than 0 after device creation. The
235        # version must be 0 on the `CreateDevice` request if a `config` is
236        # specified; the response of `CreateDevice` will always have a value of 1.
237    "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
238        # Cloud IoT Core. This timestamp is set by the server.
239    "binaryData": "A String", # The device configuration data.
240    "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
241        # acknowledgment from the device, indicating that the device has received
242        # this configuration version. If this field is not present, the device has
243        # not yet acknowledged that it received this version. Note that when
244        # the config was sent to the device, many config versions may have been
245        # available in Cloud IoT Core while the device was disconnected, and on
246        # connection, only the latest version is sent to the device. Some
247        # versions may never be sent to the device, and therefore are never
248        # acknowledged. This timestamp is set by Cloud IoT Core.
249  },
250  "id": "A String", # The user-defined device identifier. The device ID must be unique
251      # within a device registry.
252  "name": "A String", # The resource path name. For example,
253      # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
254      # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
255      # When `name` is populated as a response from the service, it always ends
256      # in the device numeric ID.
257}
258
259  x__xgafv: string, V1 error format.
260    Allowed values
261      1 - v1 error format
262      2 - v2 error format
263
264Returns:
265  An object of the form:
266
267    { # The device resource.
268    "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
269        # periodically collected and written to storage; they may be stale by a few
270        # minutes.
271    "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
272      "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
273          # specified in `last_accessed_gateway`.
274      "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
275      "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
276          # gateway.
277      "gatewayType": "A String", # Indicates whether the device is a gateway.
278    },
279    "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
280        # the device.
281    "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
282        # periodically collected and written to storage; they may be stale by a few
283        # minutes.
284    "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
285        # publish to Cloud Pub/Sub. This field is the timestamp of
286        # 'last_error_status'.
287    "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
288        # more compact way to identify devices, and it is globally unique.
289    "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
290        # applies only to devices connecting through MQTT. MQTT clients usually only
291        # send `PINGREQ` messages if the connection is idle, and no other messages
292        # have been sent. Timestamps are periodically collected and written to
293        # storage; they may be stale by a few minutes.
294    "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
295        # was received from the device. This field is only for configurations
296        # sent through MQTT.
297    "logLevel": "A String", # **Beta Feature**
298        #
299        # The logging verbosity for device activity. If unspecified,
300        # DeviceRegistry.log_level will be used.
301    "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
302        # has been reported, this field is not present.
303      "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
304          # IoT Core.
305      "binaryData": "A String", # The device state data.
306    },
307    "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
308        # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
309        # field. If no errors have occurred, this field has an empty message
310        # and the status code 0 == OK. Otherwise, this field is expected to have a
311        # status code other than OK.
312        # different programming environments, including REST APIs and RPC APIs. It is
313        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
314        # three pieces of data: error code, error message, and error details.
315        #
316        # You can find out more about this error model and how to work with it in the
317        # [API Design Guide](https://cloud.google.com/apis/design/errors).
318      "message": "A String", # A developer-facing error message, which should be in English. Any
319          # user-facing error message should be localized and sent in the
320          # google.rpc.Status.details field, or localized by the client.
321      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
322      "details": [ # A list of messages that carry the error details.  There is a common set of
323          # message types for APIs to use.
324        {
325          "a_key": "", # Properties of the object. Contains field @type with type URL.
326        },
327      ],
328    },
329    "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
330        # Can be used to temporarily prevent the device from connecting if, for
331        # example, the sensor is generating bad data and needs maintenance.
332    "credentials": [ # The credentials used to authenticate this device. To allow credential
333        # rotation without interruption, multiple device credentials can be bound to
334        # this device. No more than 3 credentials can be bound to a single device at
335        # a time. When new credentials are added to a device, they are verified
336        # against the registry credentials. For details, see the description of the
337        # `DeviceRegistry.credentials` field.
338      { # A server-stored device credential used for authentication.
339        "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
340            # When adding a new device credential, either via device creation or via
341            # modifications, this public key credential may be required to be signed by
342            # one of the registry level certificates. More specifically, if the
343            # registry contains at least one certificate, any new device credential
344            # must be signed by one of the registry certificates. As a result,
345            # when the registry contains certificates, only X.509 certificates are
346            # accepted as device credentials. However, if the registry does
347            # not contain a certificate, self-signed certificates and public keys will
348            # be accepted. New device credentials must be different from every
349            # registry-level certificate.
350          "key": "A String", # The key data.
351          "format": "A String", # The format of the key.
352        },
353        "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
354            # credential will be ignored for new client authentication requests after
355            # this timestamp; however, it will not be automatically deleted.
356      },
357    ],
358    "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
359        # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
360        # information for the device.
361        #
362        # Keys must conform to the regular expression a-zA-Z+ and
363        # be less than 128 bytes in length.
364        #
365        # Values are free-form strings. Each value must be less than or equal to 32
366        # KB in size.
367        #
368        # The total size of all keys and values must be less than 256 KB, and the
369        # maximum number of key-value pairs is 500.
370      "a_key": "A String",
371    },
372    "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
373        # Cloud IoT Core to the device. If not present on creation, the
374        # configuration will be initialized with an empty payload and version value
375        # of `1`. To update this field after creation, use the
376        # `DeviceManager.ModifyCloudToDeviceConfig` method.
377      "version": "A String", # [Output only] The version of this update. The version number is assigned by
378          # the server, and is always greater than 0 after device creation. The
379          # version must be 0 on the `CreateDevice` request if a `config` is
380          # specified; the response of `CreateDevice` will always have a value of 1.
381      "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
382          # Cloud IoT Core. This timestamp is set by the server.
383      "binaryData": "A String", # The device configuration data.
384      "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
385          # acknowledgment from the device, indicating that the device has received
386          # this configuration version. If this field is not present, the device has
387          # not yet acknowledged that it received this version. Note that when
388          # the config was sent to the device, many config versions may have been
389          # available in Cloud IoT Core while the device was disconnected, and on
390          # connection, only the latest version is sent to the device. Some
391          # versions may never be sent to the device, and therefore are never
392          # acknowledged. This timestamp is set by Cloud IoT Core.
393    },
394    "id": "A String", # The user-defined device identifier. The device ID must be unique
395        # within a device registry.
396    "name": "A String", # The resource path name. For example,
397        # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
398        # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
399        # When `name` is populated as a response from the service, it always ends
400        # in the device numeric ID.
401  }</pre>
402</div>
403
404<div class="method">
405    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
406  <pre>Deletes a device.
407
408Args:
409  name: string, The name of the device. For example,
410`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
411`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
412  x__xgafv: string, V1 error format.
413    Allowed values
414      1 - v1 error format
415      2 - v2 error format
416
417Returns:
418  An object of the form:
419
420    { # A generic empty message that you can re-use to avoid defining duplicated
421      # empty messages in your APIs. A typical example is to use it as the request
422      # or the response type of an API method. For instance:
423      #
424      #     service Foo {
425      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
426      #     }
427      #
428      # The JSON representation for `Empty` is empty JSON object `{}`.
429  }</pre>
430</div>
431
432<div class="method">
433    <code class="details" id="get">get(name, fieldMask=None, x__xgafv=None)</code>
434  <pre>Gets details about a device.
435
436Args:
437  name: string, The name of the device. For example,
438`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
439`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
440  fieldMask: string, The fields of the `Device` resource to be returned in the response. If the
441field mask is unset or empty, all fields are returned.
442  x__xgafv: string, V1 error format.
443    Allowed values
444      1 - v1 error format
445      2 - v2 error format
446
447Returns:
448  An object of the form:
449
450    { # The device resource.
451    "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
452        # periodically collected and written to storage; they may be stale by a few
453        # minutes.
454    "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
455      "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
456          # specified in `last_accessed_gateway`.
457      "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
458      "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
459          # gateway.
460      "gatewayType": "A String", # Indicates whether the device is a gateway.
461    },
462    "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
463        # the device.
464    "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
465        # periodically collected and written to storage; they may be stale by a few
466        # minutes.
467    "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
468        # publish to Cloud Pub/Sub. This field is the timestamp of
469        # 'last_error_status'.
470    "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
471        # more compact way to identify devices, and it is globally unique.
472    "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
473        # applies only to devices connecting through MQTT. MQTT clients usually only
474        # send `PINGREQ` messages if the connection is idle, and no other messages
475        # have been sent. Timestamps are periodically collected and written to
476        # storage; they may be stale by a few minutes.
477    "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
478        # was received from the device. This field is only for configurations
479        # sent through MQTT.
480    "logLevel": "A String", # **Beta Feature**
481        #
482        # The logging verbosity for device activity. If unspecified,
483        # DeviceRegistry.log_level will be used.
484    "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
485        # has been reported, this field is not present.
486      "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
487          # IoT Core.
488      "binaryData": "A String", # The device state data.
489    },
490    "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
491        # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
492        # field. If no errors have occurred, this field has an empty message
493        # and the status code 0 == OK. Otherwise, this field is expected to have a
494        # status code other than OK.
495        # different programming environments, including REST APIs and RPC APIs. It is
496        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
497        # three pieces of data: error code, error message, and error details.
498        #
499        # You can find out more about this error model and how to work with it in the
500        # [API Design Guide](https://cloud.google.com/apis/design/errors).
501      "message": "A String", # A developer-facing error message, which should be in English. Any
502          # user-facing error message should be localized and sent in the
503          # google.rpc.Status.details field, or localized by the client.
504      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
505      "details": [ # A list of messages that carry the error details.  There is a common set of
506          # message types for APIs to use.
507        {
508          "a_key": "", # Properties of the object. Contains field @type with type URL.
509        },
510      ],
511    },
512    "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
513        # Can be used to temporarily prevent the device from connecting if, for
514        # example, the sensor is generating bad data and needs maintenance.
515    "credentials": [ # The credentials used to authenticate this device. To allow credential
516        # rotation without interruption, multiple device credentials can be bound to
517        # this device. No more than 3 credentials can be bound to a single device at
518        # a time. When new credentials are added to a device, they are verified
519        # against the registry credentials. For details, see the description of the
520        # `DeviceRegistry.credentials` field.
521      { # A server-stored device credential used for authentication.
522        "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
523            # When adding a new device credential, either via device creation or via
524            # modifications, this public key credential may be required to be signed by
525            # one of the registry level certificates. More specifically, if the
526            # registry contains at least one certificate, any new device credential
527            # must be signed by one of the registry certificates. As a result,
528            # when the registry contains certificates, only X.509 certificates are
529            # accepted as device credentials. However, if the registry does
530            # not contain a certificate, self-signed certificates and public keys will
531            # be accepted. New device credentials must be different from every
532            # registry-level certificate.
533          "key": "A String", # The key data.
534          "format": "A String", # The format of the key.
535        },
536        "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
537            # credential will be ignored for new client authentication requests after
538            # this timestamp; however, it will not be automatically deleted.
539      },
540    ],
541    "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
542        # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
543        # information for the device.
544        #
545        # Keys must conform to the regular expression a-zA-Z+ and
546        # be less than 128 bytes in length.
547        #
548        # Values are free-form strings. Each value must be less than or equal to 32
549        # KB in size.
550        #
551        # The total size of all keys and values must be less than 256 KB, and the
552        # maximum number of key-value pairs is 500.
553      "a_key": "A String",
554    },
555    "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
556        # Cloud IoT Core to the device. If not present on creation, the
557        # configuration will be initialized with an empty payload and version value
558        # of `1`. To update this field after creation, use the
559        # `DeviceManager.ModifyCloudToDeviceConfig` method.
560      "version": "A String", # [Output only] The version of this update. The version number is assigned by
561          # the server, and is always greater than 0 after device creation. The
562          # version must be 0 on the `CreateDevice` request if a `config` is
563          # specified; the response of `CreateDevice` will always have a value of 1.
564      "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
565          # Cloud IoT Core. This timestamp is set by the server.
566      "binaryData": "A String", # The device configuration data.
567      "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
568          # acknowledgment from the device, indicating that the device has received
569          # this configuration version. If this field is not present, the device has
570          # not yet acknowledged that it received this version. Note that when
571          # the config was sent to the device, many config versions may have been
572          # available in Cloud IoT Core while the device was disconnected, and on
573          # connection, only the latest version is sent to the device. Some
574          # versions may never be sent to the device, and therefore are never
575          # acknowledged. This timestamp is set by Cloud IoT Core.
576    },
577    "id": "A String", # The user-defined device identifier. The device ID must be unique
578        # within a device registry.
579    "name": "A String", # The resource path name. For example,
580        # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
581        # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
582        # When `name` is populated as a response from the service, it always ends
583        # in the device numeric ID.
584  }</pre>
585</div>
586
587<div class="method">
588    <code class="details" id="list">list(parent, pageSize=None, fieldMask=None, deviceNumIds=None, x__xgafv=None, deviceIds=None, pageToken=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None)</code>
589  <pre>List devices in a device registry.
590
591Args:
592  parent: string, The device registry path. Required. For example,
593`projects/my-project/locations/us-central1/registries/my-registry`. (required)
594  pageSize: integer, The maximum number of devices to return in the response. If this value
595is zero, the service will select a default size. A call may return fewer
596objects than requested. A non-empty `next_page_token` in the response
597indicates that more data is available.
598  fieldMask: string, The fields of the `Device` resource to be returned in the response. The
599fields `id` and `num_id` are always returned, along with any
600other fields specified.
601  deviceNumIds: string, A list of device numeric IDs. If empty, this field is ignored. Maximum
602IDs: 10,000. (repeated)
603  x__xgafv: string, V1 error format.
604    Allowed values
605      1 - v1 error format
606      2 - v2 error format
607  deviceIds: string, A list of device string IDs. For example, `['device0', 'device12']`.
608If empty, this field is ignored. Maximum IDs: 10,000 (repeated)
609  pageToken: string, The value returned by the last `ListDevicesResponse`; indicates
610that this is a continuation of a prior `ListDevices` call and
611the system should return the next page of data.
612  gatewayListOptions_associationsGatewayId: string, If set, only devices associated with the specified gateway are returned.
613The gateway ID can be numeric (`num_id`) or the user-defined string
614(`id`). For example, if `123` is specified, only devices bound to the
615gateway with `num_id` 123 are returned.
616  gatewayListOptions_associationsDeviceId: string, If set, returns only the gateways with which the specified device is
617associated. The device ID can be numeric (`num_id`) or the user-defined
618string (`id`). For example, if `456` is specified, returns only the
619gateways to which the device with `num_id` 456 is bound.
620  gatewayListOptions_gatewayType: string, If `GATEWAY` is specified, only gateways are returned. If `NON_GATEWAY`
621is specified, only non-gateway devices are returned. If
622`GATEWAY_TYPE_UNSPECIFIED` is specified, all devices are returned.
623
624Returns:
625  An object of the form:
626
627    { # Response for `ListDevices`.
628    "nextPageToken": "A String", # If not empty, indicates that there may be more devices that match the
629        # request; this value should be passed in a new `ListDevicesRequest`.
630    "devices": [ # The devices that match the request.
631      { # The device resource.
632        "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
633            # periodically collected and written to storage; they may be stale by a few
634            # minutes.
635        "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
636          "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
637              # specified in `last_accessed_gateway`.
638          "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
639          "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
640              # gateway.
641          "gatewayType": "A String", # Indicates whether the device is a gateway.
642        },
643        "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
644            # the device.
645        "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
646            # periodically collected and written to storage; they may be stale by a few
647            # minutes.
648        "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
649            # publish to Cloud Pub/Sub. This field is the timestamp of
650            # 'last_error_status'.
651        "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
652            # more compact way to identify devices, and it is globally unique.
653        "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
654            # applies only to devices connecting through MQTT. MQTT clients usually only
655            # send `PINGREQ` messages if the connection is idle, and no other messages
656            # have been sent. Timestamps are periodically collected and written to
657            # storage; they may be stale by a few minutes.
658        "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
659            # was received from the device. This field is only for configurations
660            # sent through MQTT.
661        "logLevel": "A String", # **Beta Feature**
662            #
663            # The logging verbosity for device activity. If unspecified,
664            # DeviceRegistry.log_level will be used.
665        "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
666            # has been reported, this field is not present.
667          "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
668              # IoT Core.
669          "binaryData": "A String", # The device state data.
670        },
671        "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
672            # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
673            # field. If no errors have occurred, this field has an empty message
674            # and the status code 0 == OK. Otherwise, this field is expected to have a
675            # status code other than OK.
676            # different programming environments, including REST APIs and RPC APIs. It is
677            # used by [gRPC](https://github.com/grpc). Each `Status` message contains
678            # three pieces of data: error code, error message, and error details.
679            #
680            # You can find out more about this error model and how to work with it in the
681            # [API Design Guide](https://cloud.google.com/apis/design/errors).
682          "message": "A String", # A developer-facing error message, which should be in English. Any
683              # user-facing error message should be localized and sent in the
684              # google.rpc.Status.details field, or localized by the client.
685          "code": 42, # The status code, which should be an enum value of google.rpc.Code.
686          "details": [ # A list of messages that carry the error details.  There is a common set of
687              # message types for APIs to use.
688            {
689              "a_key": "", # Properties of the object. Contains field @type with type URL.
690            },
691          ],
692        },
693        "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
694            # Can be used to temporarily prevent the device from connecting if, for
695            # example, the sensor is generating bad data and needs maintenance.
696        "credentials": [ # The credentials used to authenticate this device. To allow credential
697            # rotation without interruption, multiple device credentials can be bound to
698            # this device. No more than 3 credentials can be bound to a single device at
699            # a time. When new credentials are added to a device, they are verified
700            # against the registry credentials. For details, see the description of the
701            # `DeviceRegistry.credentials` field.
702          { # A server-stored device credential used for authentication.
703            "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
704                # When adding a new device credential, either via device creation or via
705                # modifications, this public key credential may be required to be signed by
706                # one of the registry level certificates. More specifically, if the
707                # registry contains at least one certificate, any new device credential
708                # must be signed by one of the registry certificates. As a result,
709                # when the registry contains certificates, only X.509 certificates are
710                # accepted as device credentials. However, if the registry does
711                # not contain a certificate, self-signed certificates and public keys will
712                # be accepted. New device credentials must be different from every
713                # registry-level certificate.
714              "key": "A String", # The key data.
715              "format": "A String", # The format of the key.
716            },
717            "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
718                # credential will be ignored for new client authentication requests after
719                # this timestamp; however, it will not be automatically deleted.
720          },
721        ],
722        "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
723            # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
724            # information for the device.
725            #
726            # Keys must conform to the regular expression a-zA-Z+ and
727            # be less than 128 bytes in length.
728            #
729            # Values are free-form strings. Each value must be less than or equal to 32
730            # KB in size.
731            #
732            # The total size of all keys and values must be less than 256 KB, and the
733            # maximum number of key-value pairs is 500.
734          "a_key": "A String",
735        },
736        "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
737            # Cloud IoT Core to the device. If not present on creation, the
738            # configuration will be initialized with an empty payload and version value
739            # of `1`. To update this field after creation, use the
740            # `DeviceManager.ModifyCloudToDeviceConfig` method.
741          "version": "A String", # [Output only] The version of this update. The version number is assigned by
742              # the server, and is always greater than 0 after device creation. The
743              # version must be 0 on the `CreateDevice` request if a `config` is
744              # specified; the response of `CreateDevice` will always have a value of 1.
745          "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
746              # Cloud IoT Core. This timestamp is set by the server.
747          "binaryData": "A String", # The device configuration data.
748          "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
749              # acknowledgment from the device, indicating that the device has received
750              # this configuration version. If this field is not present, the device has
751              # not yet acknowledged that it received this version. Note that when
752              # the config was sent to the device, many config versions may have been
753              # available in Cloud IoT Core while the device was disconnected, and on
754              # connection, only the latest version is sent to the device. Some
755              # versions may never be sent to the device, and therefore are never
756              # acknowledged. This timestamp is set by Cloud IoT Core.
757        },
758        "id": "A String", # The user-defined device identifier. The device ID must be unique
759            # within a device registry.
760        "name": "A String", # The resource path name. For example,
761            # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
762            # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
763            # When `name` is populated as a response from the service, it always ends
764            # in the device numeric ID.
765      },
766    ],
767  }</pre>
768</div>
769
770<div class="method">
771    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
772  <pre>Retrieves the next page of results.
773
774Args:
775  previous_request: The request for the previous page. (required)
776  previous_response: The response from the request for the previous page. (required)
777
778Returns:
779  A request object that you can call 'execute()' on to request the next
780  page. Returns None if there are no more items in the collection.
781    </pre>
782</div>
783
784<div class="method">
785    <code class="details" id="modifyCloudToDeviceConfig">modifyCloudToDeviceConfig(name, body, x__xgafv=None)</code>
786  <pre>Modifies the configuration for the device, which is eventually sent from
787the Cloud IoT Core servers. Returns the modified configuration version and
788its metadata.
789
790Args:
791  name: string, The name of the device. For example,
792`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
793`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
794  body: object, The request body. (required)
795    The object takes the form of:
796
797{ # Request for `ModifyCloudToDeviceConfig`.
798    "versionToUpdate": "A String", # The version number to update. If this value is zero, it will not check the
799        # version number of the server and will always update the current version;
800        # otherwise, this update will fail if the version number found on the server
801        # does not match this version number. This is used to support multiple
802        # simultaneous updates without losing data.
803    "binaryData": "A String", # The configuration data for the device.
804  }
805
806  x__xgafv: string, V1 error format.
807    Allowed values
808      1 - v1 error format
809      2 - v2 error format
810
811Returns:
812  An object of the form:
813
814    { # The device configuration. Eventually delivered to devices.
815    "version": "A String", # [Output only] The version of this update. The version number is assigned by
816        # the server, and is always greater than 0 after device creation. The
817        # version must be 0 on the `CreateDevice` request if a `config` is
818        # specified; the response of `CreateDevice` will always have a value of 1.
819    "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
820        # Cloud IoT Core. This timestamp is set by the server.
821    "binaryData": "A String", # The device configuration data.
822    "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
823        # acknowledgment from the device, indicating that the device has received
824        # this configuration version. If this field is not present, the device has
825        # not yet acknowledged that it received this version. Note that when
826        # the config was sent to the device, many config versions may have been
827        # available in Cloud IoT Core while the device was disconnected, and on
828        # connection, only the latest version is sent to the device. Some
829        # versions may never be sent to the device, and therefore are never
830        # acknowledged. This timestamp is set by Cloud IoT Core.
831  }</pre>
832</div>
833
834<div class="method">
835    <code class="details" id="patch">patch(name, body, updateMask=None, x__xgafv=None)</code>
836  <pre>Updates a device.
837
838Args:
839  name: string, The resource path name. For example,
840`projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
841`projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
842When `name` is populated as a response from the service, it always ends
843in the device numeric ID. (required)
844  body: object, The request body. (required)
845    The object takes the form of:
846
847{ # The device resource.
848  "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
849      # periodically collected and written to storage; they may be stale by a few
850      # minutes.
851  "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
852    "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
853        # specified in `last_accessed_gateway`.
854    "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
855    "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
856        # gateway.
857    "gatewayType": "A String", # Indicates whether the device is a gateway.
858  },
859  "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
860      # the device.
861  "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
862      # periodically collected and written to storage; they may be stale by a few
863      # minutes.
864  "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
865      # publish to Cloud Pub/Sub. This field is the timestamp of
866      # 'last_error_status'.
867  "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
868      # more compact way to identify devices, and it is globally unique.
869  "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
870      # applies only to devices connecting through MQTT. MQTT clients usually only
871      # send `PINGREQ` messages if the connection is idle, and no other messages
872      # have been sent. Timestamps are periodically collected and written to
873      # storage; they may be stale by a few minutes.
874  "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
875      # was received from the device. This field is only for configurations
876      # sent through MQTT.
877  "logLevel": "A String", # **Beta Feature**
878      #
879      # The logging verbosity for device activity. If unspecified,
880      # DeviceRegistry.log_level will be used.
881  "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
882      # has been reported, this field is not present.
883    "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
884        # IoT Core.
885    "binaryData": "A String", # The device state data.
886  },
887  "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
888      # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
889      # field. If no errors have occurred, this field has an empty message
890      # and the status code 0 == OK. Otherwise, this field is expected to have a
891      # status code other than OK.
892      # different programming environments, including REST APIs and RPC APIs. It is
893      # used by [gRPC](https://github.com/grpc). Each `Status` message contains
894      # three pieces of data: error code, error message, and error details.
895      #
896      # You can find out more about this error model and how to work with it in the
897      # [API Design Guide](https://cloud.google.com/apis/design/errors).
898    "message": "A String", # A developer-facing error message, which should be in English. Any
899        # user-facing error message should be localized and sent in the
900        # google.rpc.Status.details field, or localized by the client.
901    "code": 42, # The status code, which should be an enum value of google.rpc.Code.
902    "details": [ # A list of messages that carry the error details.  There is a common set of
903        # message types for APIs to use.
904      {
905        "a_key": "", # Properties of the object. Contains field @type with type URL.
906      },
907    ],
908  },
909  "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
910      # Can be used to temporarily prevent the device from connecting if, for
911      # example, the sensor is generating bad data and needs maintenance.
912  "credentials": [ # The credentials used to authenticate this device. To allow credential
913      # rotation without interruption, multiple device credentials can be bound to
914      # this device. No more than 3 credentials can be bound to a single device at
915      # a time. When new credentials are added to a device, they are verified
916      # against the registry credentials. For details, see the description of the
917      # `DeviceRegistry.credentials` field.
918    { # A server-stored device credential used for authentication.
919      "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
920          # When adding a new device credential, either via device creation or via
921          # modifications, this public key credential may be required to be signed by
922          # one of the registry level certificates. More specifically, if the
923          # registry contains at least one certificate, any new device credential
924          # must be signed by one of the registry certificates. As a result,
925          # when the registry contains certificates, only X.509 certificates are
926          # accepted as device credentials. However, if the registry does
927          # not contain a certificate, self-signed certificates and public keys will
928          # be accepted. New device credentials must be different from every
929          # registry-level certificate.
930        "key": "A String", # The key data.
931        "format": "A String", # The format of the key.
932      },
933      "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
934          # credential will be ignored for new client authentication requests after
935          # this timestamp; however, it will not be automatically deleted.
936    },
937  ],
938  "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
939      # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
940      # information for the device.
941      #
942      # Keys must conform to the regular expression a-zA-Z+ and
943      # be less than 128 bytes in length.
944      #
945      # Values are free-form strings. Each value must be less than or equal to 32
946      # KB in size.
947      #
948      # The total size of all keys and values must be less than 256 KB, and the
949      # maximum number of key-value pairs is 500.
950    "a_key": "A String",
951  },
952  "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
953      # Cloud IoT Core to the device. If not present on creation, the
954      # configuration will be initialized with an empty payload and version value
955      # of `1`. To update this field after creation, use the
956      # `DeviceManager.ModifyCloudToDeviceConfig` method.
957    "version": "A String", # [Output only] The version of this update. The version number is assigned by
958        # the server, and is always greater than 0 after device creation. The
959        # version must be 0 on the `CreateDevice` request if a `config` is
960        # specified; the response of `CreateDevice` will always have a value of 1.
961    "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
962        # Cloud IoT Core. This timestamp is set by the server.
963    "binaryData": "A String", # The device configuration data.
964    "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
965        # acknowledgment from the device, indicating that the device has received
966        # this configuration version. If this field is not present, the device has
967        # not yet acknowledged that it received this version. Note that when
968        # the config was sent to the device, many config versions may have been
969        # available in Cloud IoT Core while the device was disconnected, and on
970        # connection, only the latest version is sent to the device. Some
971        # versions may never be sent to the device, and therefore are never
972        # acknowledged. This timestamp is set by Cloud IoT Core.
973  },
974  "id": "A String", # The user-defined device identifier. The device ID must be unique
975      # within a device registry.
976  "name": "A String", # The resource path name. For example,
977      # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
978      # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
979      # When `name` is populated as a response from the service, it always ends
980      # in the device numeric ID.
981}
982
983  updateMask: string, Only updates the `device` fields indicated by this mask.
984The field mask must not be empty, and it must not contain fields that
985are immutable or only set by the server.
986Mutable top-level fields: `credentials`, `blocked`, and `metadata`
987  x__xgafv: string, V1 error format.
988    Allowed values
989      1 - v1 error format
990      2 - v2 error format
991
992Returns:
993  An object of the form:
994
995    { # The device resource.
996    "lastStateTime": "A String", # [Output only] The last time a state event was received. Timestamps are
997        # periodically collected and written to storage; they may be stale by a few
998        # minutes.
999    "gatewayConfig": { # Gateway-related configuration and state. # Gateway-related configuration and state.
1000      "lastAccessedGatewayTime": "A String", # [Output only] The most recent time at which the device accessed the gateway
1001          # specified in `last_accessed_gateway`.
1002      "lastAccessedGatewayId": "A String", # [Output only] The ID of the gateway the device accessed most recently.
1003      "gatewayAuthMethod": "A String", # Indicates how to authorize and/or authenticate devices to access the
1004          # gateway.
1005      "gatewayType": "A String", # Indicates whether the device is a gateway.
1006    },
1007    "lastConfigSendTime": "A String", # [Output only] The last time a cloud-to-device config version was sent to
1008        # the device.
1009    "lastEventTime": "A String", # [Output only] The last time a telemetry event was received. Timestamps are
1010        # periodically collected and written to storage; they may be stale by a few
1011        # minutes.
1012    "lastErrorTime": "A String", # [Output only] The time the most recent error occurred, such as a failure to
1013        # publish to Cloud Pub/Sub. This field is the timestamp of
1014        # 'last_error_status'.
1015    "numId": "A String", # [Output only] A server-defined unique numeric ID for the device. This is a
1016        # more compact way to identify devices, and it is globally unique.
1017    "lastHeartbeatTime": "A String", # [Output only] The last time an MQTT `PINGREQ` was received. This field
1018        # applies only to devices connecting through MQTT. MQTT clients usually only
1019        # send `PINGREQ` messages if the connection is idle, and no other messages
1020        # have been sent. Timestamps are periodically collected and written to
1021        # storage; they may be stale by a few minutes.
1022    "lastConfigAckTime": "A String", # [Output only] The last time a cloud-to-device config version acknowledgment
1023        # was received from the device. This field is only for configurations
1024        # sent through MQTT.
1025    "logLevel": "A String", # **Beta Feature**
1026        #
1027        # The logging verbosity for device activity. If unspecified,
1028        # DeviceRegistry.log_level will be used.
1029    "state": { # The device state, as reported by the device. # [Output only] The state most recently received from the device. If no state
1030        # has been reported, this field is not present.
1031      "updateTime": "A String", # [Output only] The time at which this state version was updated in Cloud
1032          # IoT Core.
1033      "binaryData": "A String", # The device state data.
1034    },
1035    "lastErrorStatus": { # The `Status` type defines a logical error model that is suitable for # [Output only] The error message of the most recent error, such as a failure
1036        # to publish to Cloud Pub/Sub. 'last_error_time' is the timestamp of this
1037        # field. If no errors have occurred, this field has an empty message
1038        # and the status code 0 == OK. Otherwise, this field is expected to have a
1039        # status code other than OK.
1040        # different programming environments, including REST APIs and RPC APIs. It is
1041        # used by [gRPC](https://github.com/grpc). Each `Status` message contains
1042        # three pieces of data: error code, error message, and error details.
1043        #
1044        # You can find out more about this error model and how to work with it in the
1045        # [API Design Guide](https://cloud.google.com/apis/design/errors).
1046      "message": "A String", # A developer-facing error message, which should be in English. Any
1047          # user-facing error message should be localized and sent in the
1048          # google.rpc.Status.details field, or localized by the client.
1049      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
1050      "details": [ # A list of messages that carry the error details.  There is a common set of
1051          # message types for APIs to use.
1052        {
1053          "a_key": "", # Properties of the object. Contains field @type with type URL.
1054        },
1055      ],
1056    },
1057    "blocked": True or False, # If a device is blocked, connections or requests from this device will fail.
1058        # Can be used to temporarily prevent the device from connecting if, for
1059        # example, the sensor is generating bad data and needs maintenance.
1060    "credentials": [ # The credentials used to authenticate this device. To allow credential
1061        # rotation without interruption, multiple device credentials can be bound to
1062        # this device. No more than 3 credentials can be bound to a single device at
1063        # a time. When new credentials are added to a device, they are verified
1064        # against the registry credentials. For details, see the description of the
1065        # `DeviceRegistry.credentials` field.
1066      { # A server-stored device credential used for authentication.
1067        "publicKey": { # A public key format and data. # A public key used to verify the signature of JSON Web Tokens (JWTs).
1068            # When adding a new device credential, either via device creation or via
1069            # modifications, this public key credential may be required to be signed by
1070            # one of the registry level certificates. More specifically, if the
1071            # registry contains at least one certificate, any new device credential
1072            # must be signed by one of the registry certificates. As a result,
1073            # when the registry contains certificates, only X.509 certificates are
1074            # accepted as device credentials. However, if the registry does
1075            # not contain a certificate, self-signed certificates and public keys will
1076            # be accepted. New device credentials must be different from every
1077            # registry-level certificate.
1078          "key": "A String", # The key data.
1079          "format": "A String", # The format of the key.
1080        },
1081        "expirationTime": "A String", # [Optional] The time at which this credential becomes invalid. This
1082            # credential will be ignored for new client authentication requests after
1083            # this timestamp; however, it will not be automatically deleted.
1084      },
1085    ],
1086    "metadata": { # The metadata key-value pairs assigned to the device. This metadata is not
1087        # interpreted or indexed by Cloud IoT Core. It can be used to add contextual
1088        # information for the device.
1089        #
1090        # Keys must conform to the regular expression a-zA-Z+ and
1091        # be less than 128 bytes in length.
1092        #
1093        # Values are free-form strings. Each value must be less than or equal to 32
1094        # KB in size.
1095        #
1096        # The total size of all keys and values must be less than 256 KB, and the
1097        # maximum number of key-value pairs is 500.
1098      "a_key": "A String",
1099    },
1100    "config": { # The device configuration. Eventually delivered to devices. # The most recent device configuration, which is eventually sent from
1101        # Cloud IoT Core to the device. If not present on creation, the
1102        # configuration will be initialized with an empty payload and version value
1103        # of `1`. To update this field after creation, use the
1104        # `DeviceManager.ModifyCloudToDeviceConfig` method.
1105      "version": "A String", # [Output only] The version of this update. The version number is assigned by
1106          # the server, and is always greater than 0 after device creation. The
1107          # version must be 0 on the `CreateDevice` request if a `config` is
1108          # specified; the response of `CreateDevice` will always have a value of 1.
1109      "cloudUpdateTime": "A String", # [Output only] The time at which this configuration version was updated in
1110          # Cloud IoT Core. This timestamp is set by the server.
1111      "binaryData": "A String", # The device configuration data.
1112      "deviceAckTime": "A String", # [Output only] The time at which Cloud IoT Core received the
1113          # acknowledgment from the device, indicating that the device has received
1114          # this configuration version. If this field is not present, the device has
1115          # not yet acknowledged that it received this version. Note that when
1116          # the config was sent to the device, many config versions may have been
1117          # available in Cloud IoT Core while the device was disconnected, and on
1118          # connection, only the latest version is sent to the device. Some
1119          # versions may never be sent to the device, and therefore are never
1120          # acknowledged. This timestamp is set by Cloud IoT Core.
1121    },
1122    "id": "A String", # The user-defined device identifier. The device ID must be unique
1123        # within a device registry.
1124    "name": "A String", # The resource path name. For example,
1125        # `projects/p1/locations/us-central1/registries/registry0/devices/dev0` or
1126        # `projects/p1/locations/us-central1/registries/registry0/devices/{num_id}`.
1127        # When `name` is populated as a response from the service, it always ends
1128        # in the device numeric ID.
1129  }</pre>
1130</div>
1131
1132<div class="method">
1133    <code class="details" id="sendCommandToDevice">sendCommandToDevice(name, body, x__xgafv=None)</code>
1134  <pre>Sends a command to the specified device. In order for a device to be able
1135to receive commands, it must:
11361) be connected to Cloud IoT Core using the MQTT protocol, and
11372) be subscribed to the group of MQTT topics specified by
1138   /devices/{device-id}/commands/#. This subscription will receive commands
1139   at the top-level topic /devices/{device-id}/commands as well as commands
1140   for subfolders, like /devices/{device-id}/commands/subfolder.
1141   Note that subscribing to specific subfolders is not supported.
1142If the command could not be delivered to the device, this method will
1143return an error; in particular, if the device is not subscribed, this
1144method will return FAILED_PRECONDITION. Otherwise, this method will
1145return OK. If the subscription is QoS 1, at least once delivery will be
1146guaranteed; for QoS 0, no acknowledgment will be expected from the device.
1147
1148Args:
1149  name: string, The name of the device. For example,
1150`projects/p0/locations/us-central1/registries/registry0/devices/device0` or
1151`projects/p0/locations/us-central1/registries/registry0/devices/{num_id}`. (required)
1152  body: object, The request body. (required)
1153    The object takes the form of:
1154
1155{ # Request for `SendCommandToDevice`.
1156    "binaryData": "A String", # The command data to send to the device.
1157    "subfolder": "A String", # Optional subfolder for the command. If empty, the command will be delivered
1158        # to the /devices/{device-id}/commands topic, otherwise it will be delivered
1159        # to the /devices/{device-id}/commands/{subfolder} topic. Multi-level
1160        # subfolders are allowed. This field must not have more than 256 characters,
1161        # and must not contain any MQTT wildcards ("+" or "#") or null characters.
1162  }
1163
1164  x__xgafv: string, V1 error format.
1165    Allowed values
1166      1 - v1 error format
1167      2 - v2 error format
1168
1169Returns:
1170  An object of the form:
1171
1172    { # Response for `SendCommandToDevice`.
1173  }</pre>
1174</div>
1175
1176</body></html>