Hubble Network · AsyncAPI Specification

Hubble Network Packet Webhooks

Version

View Spec View on GitHub CompanyIoTBluetoothSatelliteConnectivityAsset TrackingDevicesNetworksTelemetryLogisticsAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-04'
method: searched
source: https://hubble.com/docs/guides/cloud-integration/get-data + openapi/hubble-network-platform-openapi.yml#packet-webhook-example
spec_type: Webhooks
asyncapi_published: false
asyncapi_search:
  result: none
  checked:
  - https://hubble.com/asyncapi.yaml
  - https://hubble.com/docs/asyncapi.yaml
  - https://hubble.com/docs/llms.txt (full docs index)
  - https://github.com/HubbleNetwork (all 23 public repos)
  note: 'Hubble publishes no AsyncAPI document. The event surface is documented in prose plus one OpenAPI
    operation (packet-webhook-example) that models the inbound request a consumer must implement. Nothing
    was fabricated: this file is a webhook catalog, not a generated AsyncAPI.'
transport: HTTPS POST push to a customer-registered endpoint
delivery:
  guarantee: at-least-once
  ordering: not guaranteed
  ack: 2xx within 10 seconds
  retries: exponential backoff for up to 3 hours
  duplicates: possible — consumers must be idempotent
  filtering: none — all packets for all devices in the organization are delivered
authentication:
  header: HTTP-X-HUBBLE-TOKEN
  type: shared secret
  issued: A confidential unique string generated per webhook endpoint at creation (components.schemas.webhookSecret).
  signature: null
  note: A static shared secret in a header — there is no HMAC body signature and no timestamp/replay window,
    so a receiver cannot verify payload integrity, only sender knowledge of the token. Rotation requires
    update-webhook-endpoint.
batching:
  field: max_batch_size
  default: 100
  min: 10
  max: 1000
  cadence: every several seconds, or as soon as max_batch_size is reached
  actual_size: between 1 and max_batch_size
limits:
  endpoints_per_organization: 2
  note: Two simultaneous endpoints are allowed specifically to support migration between receivers.
events:
- name: packet.batch
  channel: customer webhook URL
  operation: receive
  criticality: high
  description: A batch of decrypted Bluetooth packets received for the organization across all registered
    devices.
  payload_schema: components.schemas.packetBatch
  media_type: application/json
  modeled_by: openapi/hubble-network-platform-openapi.yml#packet-webhook-example
  fields:
  - field: packets[].device.id
    description: Device UUID.
  - field: packets[].device.payload
    description: Decrypted payload, Base64 encoded.
  - field: packets[].device.rssi
    description: Received signal strength.
  - field: packets[].device.timestamp
    description: Unix timestamp of the packet.
  - field: packets[].device.sequence_number
    description: Device sequence number — use with id + timestamp to de-duplicate.
  - field: packets[].device.counter
    description: Time-based counter associated with the packet.
  - field: packets[].device.name
    description: Device name.
  - field: packets[].device.tags
    description: Custom and platform tags on the device.
  - field: packets[].location
    description: Latitude, longitude, altitude, accuracy and timestamp of the detection.
  - field: packets[].network_type
    description: TERRESTRIAL or SATELLITE.
  - field: packets[].gateway
    description: Gateway id and BLE service id of the receiving gateway; only present on self-provided
      packets.
management_operations:
- operationId: create-webhook-endpoint
  method: post
  path: /v1/org/{org_id}/webhooks
  scope: write-webhooks
- operationId: list-registered-webhooks
  method: get
  path: /v1/org/{org_id}/webhooks
  scope: read-webhooks
- operationId: update-webhook-endpoint
  method: patch
  path: /v1/org/{org_id}/webhooks/{webhook_id}
  scope: write-webhooks
- operationId: delete-webhook-endpoint
  method: delete
  path: /v1/org/{org_id}/webhooks/{webhook_id}
  scope: write-webhooks
- operationId: test-webhook-endpoint
  method: post
  path: /v1/org/{org_id}/webhooks/{webhook_id}/test
  scope: write-webhooks
  description: Sends an example packet batch to the configured URL in the live request format.
observability:
  operationId: get-webhook-metrics
  path: /v1/org/{org_id}/webhook_metrics
  description: Total webhook requests, success rate and time-interval breakdowns.
polling_alternative:
  operationId: retrieve-organization-packets
  path: /v1/org/{org_id}/packets
  description: Cursor-paginated pull alternative to webhooks, Continuation-Token header, up to 1,000 packets
    per page, 30-day lookback.
x-evidence:
- url: https://hubble.com/docs/guides/cloud-integration/get-data
  http_status: 200
  fetched: '2026-08-04'