Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Child pages (Children Display)
alltrue

Resource: Device

JSON representation

Code Block
{
  "id": string,
  "name": string,
  "numId": string,
  "credentials": [
    {
      object(DeviceCredential)
    }
  ],
  "lastHeartbeatTime": string,
  "lastEventTime": string,
  "lastStateTime": string,
  "lastConfigAckTime": string,
  "lastConfigSendTime": string,
  "blocked": boolean,
  "lastErrorTime": string,
  "lastErrorStatus": {
    object(Status)
  },
  "config": {
    object(DeviceConfig)
  },
  "state": {
    object(DeviceState)
  },
  "logLevel": enum(LogLevel),
  "metadata": {
    string: string,
    ...
  },
  "gatewayConfig": {
    object(GatewayConfig)
  }
}

Fields

id

string

The user-defined permanent device identifier. The device ID must be unique within a device registry. Permanent identifier for your device. 3-255 characters. Start with a letter. You can also include numbers and these characters: + . % - _ ~

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/{numId}. When name is populated as a response from the service, it always ends in the device’s numeric ID.

numId

string

[Output only] The device’s server-defined unique numeric ID. This is a more compact way to identify devices and is globally unique.

credentials[]

object(DeviceCredential)

The credentials used to authenticate this device. Multiple device credentials can be bound to this device to allow credential rotation without interruption. At most, three 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 DeviceRegistry.credentials field’s description.

lastHeartbeatTime

string (Timestamp format)

[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.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

lastEventTime

string (Timestamp format)

[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.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

lastStateTime

string (Timestamp format)

[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.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

lastConfigAckTime

string (Timestamp format)

[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.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

lastConfigSendTime

string (Timestamp format)

[Output only] The last time a cloud-to-device config version was sent to the device.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

blocked

boolean

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.

lastErrorTime

string (Timestamp format)

[Output only] The time the most recent error occurred, such as a failure to publish to Cloud Pub/Sub. This field is the 'lastErrorStatus' timestamp.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

lastErrorStatus

object(Status)

[Output only] The most recent error’s error message, such as a failure to publish to Cloud Pub/Sub. ‘lastErrorTime' is this field’s timestamp. 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.

config

object(DeviceConfig)

The most recent device configuration, which is eventually sent from ClearBlade IoT Core to the device. If not present on creation, the configuration will be initialized with an empty payload and 1 version value. To update this field after creation, use the DeviceManager.ModifyCloudToDeviceConfig method.

state

object(DeviceState)

[Output only] The state most recently received from the device. If no state has been reported, this field is not present.

logLevel

enum(LogLevel)

The logging verbosity for device activity. If unspecified, DeviceRegistry.log_level will be used.

metadata

map (key: string, value: string)

The metadata key-value pairs assigned to the device. This metadata is not interpreted or indexed by ClearBlade IoT Core. It can be used to add the device’s contextual information for the device.

Keys must conform to the regular expression [a-zA-Z][a-zA-Z0-9-_.+~%]+ 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.

An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

gatewayConfig

object(GatewayConfig)

Gateway-related configuration and state.

...

A server-stored device credential used for authentication.

JSON representation

Code Block
{
  "expirationTime": string,
  "publicKey": {
    object(PublicKeyCredential)
  }
}

Fields

expirationTime

string (Timestamp format)

[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.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

publicKey

object(PublicKeyCredential)

A public key used to verify the signature of JSON Web Tokens (JWTs). When adding a new device credential via device creation or 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, one of them must sign any new device credential. As a result, only X.509 certificates are accepted as device credentials when the registry contains certificates. However, self-signed certificates and public keys will be accepted if the registry does not contain a certificate. New device credentials must be different from every registry-level certificate.

...

A public key format and data.

JSON representation

Code Block
{
  "format": enum(PublicKeyFormat),
  "key": string
}

Fields

format

enum(PublicKeyFormat)

The key format.

key

string

The key data.

...

  • Partial errors. If a service needs to return them to the client, it may embed the Status in the normal response to indicate them.

  • Workflow errors. A typical workflow has multiple steps. Each step may have an error reporting Status message.

  • Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.

  • Asynchronous operations. If an API calls asynchronous operations results in its response, the status of those operations should be represented directly using the Status message.

  • Logging. If some API errors are stored in logs, the Status message could be used directly after any stripping needed for security/privacy reasons.

JSON representation

Code Block
{
  "code": number,
  "message": string,
  "details": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}

...

Gateway-related configuration and state.

JSON representation

Code Block
{
  "gatewayType": enum(GatewayType),
  "gatewayAuthMethod": enum(GatewayAuthMethod),
  "lastAccessedGatewayId": string,
  "lastAccessedGatewayTime": string
}

Fields

gatewayType

enum(GatewayType)

Indicates whether the device is a gateway.

gatewayAuthMethod

enum(GatewayAuthMethod)

Indicates how to authorize and authenticate devices to access the gateway.

lastAccessedGatewayId

string

[Output only] The gateway ID the device accessed most recently.

lastAccessedGatewayTime

string (Timestamp format)

[Output only] The most recent time the device accessed the gateway specified in last_accessed_gateway.

A timestamp in RFC3339 UTC Zulu format, accurate to nanoseconds. Example: "2014-10-02T15:01:23.045123456Z".

...

Enums

GATEWAY_TYPE_UNSPECIFIED

If unspecified, the device is considered a non-gateway device.

GATEWAY

The device is a gateway.

NON_GATEWAY

The device is not a gateway.

...