<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<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.groups.html">groups</a> . <a href="cloudiot_v1.projects.locations.registries.groups.devices.html">devices</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, deviceIds=None, deviceNumIds=None, x__xgafv=None, fieldMask=None, pageToken=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None)</a></code></p>
<p class="firstline">List devices in a device registry.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, deviceIds=None, deviceNumIds=None, x__xgafv=None, fieldMask=None, pageToken=None, gatewayListOptions_associationsGatewayId=None, gatewayListOptions_associationsDeviceId=None, gatewayListOptions_gatewayType=None)</code>
  <pre>List devices in a device registry.

Args:
  parent: string, The device registry path. Required. For example,
`projects/my-project/locations/us-central1/registries/my-registry`. (required)
  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.
  deviceIds: string, A list of device string IDs. For example, `['device0', 'device12']`.
If empty, this field is ignored. Maximum IDs: 10,000 (repeated)
  deviceNumIds: string, A list of device numeric IDs. If empty, this field is ignored. Maximum
IDs: 10,000. (repeated)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  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.
  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.
  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.
  gatewayListOptions_associationsDeviceId: string, If set, returns only the gateways with which the specified device is
associated. The device ID can be numeric (`num_id`) or the user-defined
string (`id`). For example, if `456` is specified, returns only the
gateways to which the device with `num_id` 456 is bound.
  gatewayListOptions_gatewayType: string, If `GATEWAY` is specified, only gateways are returned. If `NON_GATEWAY`
is specified, only non-gateway devices are returned. If
`GATEWAY_TYPE_UNSPECIFIED` is specified, all devices are returned.

Returns:
  An object of the form:

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

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

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

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>