DataStreams
Device → DataStream (managedBy: System) → Analyzer (optional) → DataStream (managedBy: User) → Alert Policy / Bridge
Overview
A DataStream is the queryable, time-series data unit that all WEDA features build on. Every
device sensor is automatically synced into a System-managed DataStream with no configuration
required. Additional Output DataStreams can be derived from existing DataStreams using an
Analyzer. Whether device-originated or an Analyzer output, it's the
same entity: a named, typed record optionally persisted to the database.
Every downstream feature — Alert Policies and Data Stream Bridge — reads exclusively from DataStreams.
System-managed DataStream identity/lineage is read-only — managed by the auto-sync process.
To derive additional DataStreams, use the Analyzers API. To create a
DataStream directly (e.g. as a future Analyzer output), use POST .../data-streams.
Operations
| Operation | API | Description |
|---|---|---|
| List DataStreams | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams | All DataStream definitions for a device |
| Create DataStream | POST /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams | Create a User-managed DataStream |
| Get DataStream | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId} | One definition by ID |
| Update DataStream | PUT /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId} | Replace the definition |
| Patch DataStream | PATCH /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId} | Update display fields only |
| Delete DataStream | DELETE /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId} | Remove a User-managed, unattached DataStream |
| Get Latest Values (all) | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/values/latest | Latest snapshot for all DataStreams |
| Get Latest Value (one) | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId}/values/latest | Latest value for one DataStream |
| Get Historical Values | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId}/values/historical | Time-series from the database |
| Download Blob | GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId}/blobs/{blobKey} | Binary value (image, waveform, etc.) |
DataStream Definition
GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams
Returns a paginated list. Filter by managedBy (System/User). Each item includes
dataStreamId, dataStreamName, displayName, dataType, recordToDataLake, managedBy, and
dataSource (null if unbound).
Use the dataStreamId returned by the current definition when querying values.
Create a DataStream
POST /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams
Required: dataStreamName (unique per device), dataType (double/boolean/integer/string).
Optional: displayName, description, unitDisplay, recordToDataLake (default true). A
created DataStream is always managedBy: User with dataSource: null until an Analyzer claims it
as an output.
Reading Values
Get Latest Values (All DataStreams)
GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/values/latest
Returns the most recent value snapshot for every DataStream on the device within the
system-defined retention period, currently 60 minutes. Returns 204 No Content if no value is
available.
Get Latest Value (Single DataStream)
GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId}/values/latest
Same retention window, scoped to one DataStream.
Get Historical Values (Time Series)
GET /api/v1/orgs/{orgId}/devices/{deviceId}/data-streams/{dataStreamId}/values/historical