udp

Register a device (owner/admin; returns its key ONCE)

Mints an 8-byte device id and, for every suite but none, a key. The key is returned ONCE, hex-encoded, and cannot be retrieved again — write it into the device now. suite and nonce_len are FIXED at registration and never change: a deployed device cannot be asked to re-read its own layout, so rotation is a new device and an overlap. An AEAD suite fixes nonce_len at the cipher's size; the others take 0, 4 or 8, and 4 or more is what lets NATS recognize a retry. A device with no durable counter and no clock must use xchacha20-poly1305, whose 24-byte nonce is safe to draw at random.

post/v1/projects/{project_id}/udp/devices

Request

  • Base URL: https://api.wavehouse.cloud
  • URL: https://api.wavehouse.cloud/v1/projects/{project_id}/udp/devices
  • Auth: one of:
    • API key in cookie whc_session
    • HTTP bearer
    • API key in header X-API-Key

Path parameters

project_idstring required

Headers

Idempotency-Keystring

A unique value you choose per logical request (a random UUID). A retry with the same key and the same request within 24 hours returns the first response, marked Idempotency-Replayed: true, instead of acting twice. The same key with a different request is refused with 422; one sent while the first is still running gets 409.

Request body

bytes_per_secondinteger

bytes per second; 0 is unlimited

content_encoding'' | 'gzip' | 'zstd'

how the device compresses the payload; the worker inflates it, the edge never does

content_typestring required

the media type the payload is posted to the engine under, e.g. application/x-ndjson

expires_atstring date-time

instant the device stops being accepted; omit for no expiry

namestring

what to call this device in the console

nonce_leninteger

nonce bytes. An AEAD suite fixes this; the others take 0, 4 or 8, and 4 or more is what lets a retry be recognized

rate_per_secondnumber double

datagrams per second; 0 is unlimited

suitestring required

the authentication/encryption suite; FIXED for the life of the device

tablestring required

the table the payload is ingested into

Response

Created

bytes_per_secondinteger required

bytes per second the edge accepts; 0 is unlimited

content_encodingstring

gzip or zstd when the device compresses; empty otherwise

content_typestring required

the media type the payload is posted to the engine under

created_atstring date-time required
created_bystring
enabledboolean required
expires_atstring date-time

absent when the device does not expire

idstring required

16 hex characters — the 8 bytes that lead every datagram

keystring

the device's key, hex — shown ONCE and never retrievable again. Absent for the none suite, which has no key

last_seen_atstring date-time

batched: it trails live traffic by up to a minute

namestring required
nonce_leninteger required
rate_per_secondnumber double required

datagrams per second the edge accepts; 0 is unlimited

revoked_atstring date-time

present once revoked

statusstring required

active | disabled | revoked | expired

suitestring required
tablestring required

Changes

No recorded changes to this operation across all 1 revision of this API.