XpectraFlow docs
Console guides

Managing datasets

Renaming, aligning, archiving and deleting — what the console does that the API deliberately does not.

Most dataset operations are on the API. This page covers the ones that are console-only, and why.

Deleting

Experiments → dataset → ⋯ → Delete.

There is no delete endpoint, and this is not an omission waiting to be filled.

An API key is a static string living in a config file on a machine you may not fully control. Deleting a dataset destroys its telemetry, and the scope a producer legitimately needs for its actual job — telemetry:write — would be enough. One leaked producer credential should not be able to erase a test campaign.

The demand for scripted deletion is close to zero next to that risk. Delete in the console, where a human is present and the action is attributable.

The same applies to experiments and channels. Deleting an experiment cascades to its datasets and their telemetry.

Renaming

Console or API. In the console the rename is restricted to the uploader or a workspace owner — a courtesy between people sharing a workspace, not a security boundary.

It does not apply to API keys: a machine principal has no user identity to compare against, and its authority is already bounded by the scope it carries.

Time alignment

Comparing two runs that started at different wall-clock times? Playground → drag a dataset's trace → Align saves a timeOffsetMs per dataset.

timeOffsetMs is a render-time shift. It moves a dataset's traces and its events on the shared axis, together, and changes no stored value.

It therefore plays no part in converting an absolute timestamp to the relative seconds an event is stored as — it cancels, because both sides get it. If you are posting events with startAt, you can ignore it entirely. See Events.

Archiving

Completed datasets are moved to Parquet on object storage on a schedule. storageLocation tracks where a dataset is:

ValueMeans
timescaleQueryable now
archivingBeing written to object storage
s3Archived. Needs restoring before it can be queried
restoringComing back

A poller asking "is my data ready" wants this field, not status. status describes the runcompleted means the vehicle stopped talking — and says nothing about where the rows currently live.

The DAQ group

daqName groups datasets that were captured together, so a multi-file upload or a multi-vehicle sortie appears as one entry in the sidebar rather than five.

Set it at upload, or with POST /api/datasets/update.

Dataset status

StatusMeans
queuedRegistered, no data yet
runningData arriving
completedFinished
failedIngestion errored — check statusDetail

A live stream sits at running until the consumer sees no frames for 30 seconds, then closes it automatically. A stream that registered and never transmitted stays queued indefinitely, which is a real and legitimate state rather than an error.

rowCount is approximate

Both the ingest consumer and the append route maintain it, and neither takes a lock to do so. It is right for "is data arriving" and "roughly how much"; it is not an audit figure.

For an exact count, query the data.

On this page