Hubble Network · Schema

Hubble Device

A Bluetooth device registered on the Hubble Network, identified by a UUID and carrying encryption material, custom tags and Hubble-reserved platform tags.

CompanyIoTBluetoothSatelliteConnectivityAsset TrackingDevicesNetworksTelemetryLogistics

Properties

Name Type Description
name object
id object
created_ts object
tags object
encryption object
eid_rotation object
install_location object
most_recent_packet object Most recent packet metadata for different network types. The most recent packet value is only updated periodically.
View JSON Schema on GitHub

JSON Schema

hubble-network-device.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/hubble-network/refs/heads/main/json-schema/hubble-network-device.json",
  "title": "Hubble Device",
  "description": "A Bluetooth device registered on the Hubble Network, identified by a UUID and carrying encryption material, custom tags and Hubble-reserved platform tags.",
  "x-derived-from": "openapi/hubble-network-platform-openapi.yml#/components/schemas/organizationDevice",
  "x-generated": "2026-08-04",
  "x-method": "derived",
  "type": "object",
  "required": [
    "name",
    "id",
    "created_ts",
    "tags"
  ],
  "properties": {
    "name": {
      "$ref": "#/$defs/deviceName"
    },
    "id": {
      "$ref": "#/$defs/deviceId"
    },
    "created_ts": {
      "$ref": "#/$defs/utcTimestampInteger"
    },
    "tags": {
      "$ref": "#/$defs/deviceTags"
    },
    "encryption": {
      "$ref": "#/$defs/deviceEncryption"
    },
    "eid_rotation": {
      "$ref": "#/$defs/eidRotation"
    },
    "install_location": {
      "$ref": "#/$defs/installLocation"
    },
    "most_recent_packet": {
      "type": "object",
      "description": "Most recent packet metadata for different network types.\nThe most recent packet value is only updated periodically.\n",
      "properties": {
        "satellite": {
          "type": "object",
          "properties": {
            "timestamp": {
              "$ref": "#/$defs/utcTimestampNumber",
              "description": "Unix timestamp of a recent satellite packet"
            },
            "location": {
              "$ref": "#/$defs/latLongLocation",
              "description": "Location data from a recent satellite packet"
            }
          }
        },
        "terrestrial": {
          "type": "object",
          "properties": {
            "timestamp": {
              "$ref": "#/$defs/utcTimestampNumber",
              "description": "Unix timestamp of a recent terrestrial packet"
            },
            "location": {
              "$ref": "#/$defs/latLongLocation",
              "description": "Location data from a recent terrestrial packet"
            }
          }
        }
      }
    }
  },
  "$defs": {
    "deviceEncryption": {
      "type": "string",
      "enum": [
        "AES-256-CTR",
        "AES-128-CTR",
        "AES-128-EAX",
        "NONE"
      ],
      "description": "Encryption mode configured for the device at registration."
    },
    "deviceId": {
      "type": "string",
      "format": "uuid",
      "description": "Primary UUID identifier for a registered device"
    },
    "deviceName": {
      "type": "string",
      "description": "Assigned name for the device",
      "maxLength": 250
    },
    "deviceTags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Tags are user-defined key/value pairs that can be attributed to a device. \nA device may have up to 10 tags.\n**Custom tags:** create your own tags with `key` length up to 32 characters and `value` length up to 128 characters.\n**Platform tags:** use Hubble-defined tags to organize devices.\n- `_env` tag: `production` indicates if a device belongs to the live environment, and `sandbox` for the test environment. A device will always have an `_env` tag assigned.\n",
      "example": {
        "_env": "production"
      }
    },
    "eidRotation": {
      "type": "object",
      "description": "Configuration for EID (Ephemeral ID) rotation on a device.\nEID rotation allows devices to use rotating ephemeral identifiers based on the specified counter source.\nWhen not specified, devices will use the UNIX_TIME counter source which relies on the device knowing an accurate epoch time.\nThe DEVICE_UPTIME counter source enables EID rotation without requiring a real-time clock.\n",
      "properties": {
        "counter_source": {
          "type": "string",
          "enum": [
            "UNIX_TIME",
            "DEVICE_UPTIME"
          ],
          "description": "The counter source used for EID rotation.\n* `UNIX_TIME` - Counter is based on the current Unix (epoch) time.\n* `DEVICE_UPTIME` - Counter is based on the device's uptime.\n"
        },
        "period_exponent": {
          "type": "integer",
          "minimum": 10,
          "maximum": 15,
          "default": 15,
          "description": "Base-2 exponent of the EID rotation period in seconds, used only with `encryption` of \"AES-128-EAX\" (IN100 protocol).\nMatches the IN100 hardware's configuration field. Must be between 10 (~17 minutes) and 15 (~9 hours) inclusive.\n"
        }
      }
    },
    "installLocation": {
      "type": "object",
      "description": "Fixed installation location of a device.\nTo clear a previously set location, send lat/long of 0,0.\n",
      "required": [
        "lat",
        "long"
      ],
      "properties": {
        "lat": {
          "type": "number",
          "format": "double",
          "minimum": -90,
          "maximum": 90,
          "description": "Latitude in Decimal Degrees DDD.DDDDD\u00b0"
        },
        "long": {
          "type": "number",
          "format": "double",
          "minimum": -180,
          "maximum": 180,
          "description": "Longitude in Decimal Degrees DDD.DDDDD\u00b0"
        },
        "location_name": {
          "type": "string",
          "maxLength": 500,
          "description": "Human-readable label for the location."
        }
      }
    },
    "latLongLocation": {
      "type": "object",
      "required": [
        "latitude",
        "longitude"
      ],
      "properties": {
        "latitude": {
          "type": "number",
          "description": "Latitude in Decimal Degrees DDD.DDDDD\u00b0",
          "format": "double",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "description": "Longitude in Decimal Degrees DDD.DDDDD\u00b0",
          "format": "double",
          "minimum": -180,
          "maximum": 180
        }
      }
    },
    "utcTimestampInteger": {
      "type": "integer",
      "format": "int64",
      "description": "An UTC second-precision timestamp formatted as an integer"
    },
    "utcTimestampNumber": {
      "type": "number",
      "format": "double",
      "description": "An UTC second-precision timestamp formatted as a floating point number"
    }
  }
}