Skip to content

schemas ​

The request and response bodies of the HTTP API. The rows of a table have no schema here: their shape is the table's own. See the OpenAPI document of a server for them.

ApiError ​

The error body every failing request comes back with.

keytypedefaultdescription
errorstringrequiredWhat went wrong, as one line.

ApplyResult ​

What became of an applied change: POST /v1/config/apply.

keytypedefaultdescription
changeintegerThe pending change, when queued.
planPlanInforequired
statusstringrequiredapplied (live now), rebuilding (live when the rebuild is done), queued (waiting for approval) or unchanged.
versionintegerrequiredThe config version: the new one when applied.

ConfigChange ​

A proposed change: files to set or remove (null), against base_version. Files not named stay as they are, unless replace is set: then the named files are the whole config (a revert).

keytypedefaultdescription
agentbooleanAn agent makes it: the server applies it only as agents.auto_apply allows (never to a dashboard a person wrote last), and proposes it otherwise. Always so with the agent token.
approvebooleanfalseApply even if it destroys data (plan §8.2, destructive).
authorstringWho makes it, for the history and the commit message.
base_versionintegerrequired
filesmap of string
proposebooleanfalsePut it in the approval queue instead of applying it.
replacebooleanfalse

ConfigError ​

Why a change wasn't made (409 or 422).

keytypedefaultdescription
current_versionintegerrequiredThe version changes are made against now.
errorstringrequired
planPlanInfo

ConfigState ​

GET /v1/config: the files of the current version.

keytypedefaultdescription
externalExternalEditsEdits in the config directory that aren't applied.
fileslist of ConfigFilerequired
live_versionintegerrequiredThe version the server runs: behind version while a change is being rebuilt.
rebuildRebuildInfo
versionintegerrequired
writebackbooleanrequiredWhether applied changes are written back to the config directory.

ConfigVersion ​

One version's files: GET /v1/config/versions/{version}.

keytypedefaultdescription
fileslist of ConfigFilerequired
infoVersionInforequired

EmbedRequest ​

POST /v1/auth/embed: the views a token may open.

keytypedefaultdescription
viewslist of stringrequired

EmbedToken ​

A token for embedded views.

keytypedefaultdescription
idle_secondsintegerrequiredHow long it lasts unused.
tokenstringrequiredSend it as ?token= on /v1/ws.

IngestError ​

A rejected write: nothing was written.

keytypedefaultdescription
errorstringrequiredOne line: the problem, or how many there are.
errorslist of RowErrorrequiredThe problems, by row and column (at most 100).
moreintegerrequiredProblems beyond the ones listed.

IngestResponse ​

What a successful write answers (POST/DELETE /v1/tables/{table}/rows).

keytypedefaultdescription
epochintegerrequiredThe epoch from which the change is visible to queries. With ?wait=visible it already is when the response arrives.
missingintegerrequiredKeys that matched no row (deletes only).
replacedintegerrequiredExisting rows replaced (upserts) or deleted.
writtenintegerrequiredRows written.

ModelInfo ​

The semantic model as the UI shows it (GET /v1/model).

keytypedefaultdescription
ai_contextanyThe model's Ossie ai_context (instructions, synonyms, examples for an agent), as written.
datasetslist of DatasetInforequired
descriptionstring
filter_directionstringone_to_manyWhich way selections flow along relationships: one_to_many (from the one side to the many side) or both.
metricslist of MetricInforequired
namestringThe Ossie model's name.
relationshipslist of RelationshipInforequired

PendingChange ​

A change waiting for approval: GET /v1/changes.

keytypedefaultdescription
atstringrequiredRFC 3339.
authorstringrequired
base_versionintegerrequired
bystringpersonperson or agent, as in [VersionInfo::by].
filesmap of stringrequiredThe files it sets or removes.
idintegerrequired
planPlanInforequired
replacebooleanfalse
sourcestringrequired

PlanInfo ​

What a change would do: POST /v1/config/plan.

keytypedefaultdescription
base_versionintegerrequired
changeslist of PlannedChangerequired
classstringThe worst class among the changes; None without changes.
problemslist of ConfigProblemrequired
problems_textstringrequiredThe problems as tidepool validate prints them.
textstringrequiredThe plan as tidepool plan prints it.
validbooleanrequiredWhether the config compiles.
warningslist of stringrequired

Preview ​

The newest rows of a table (GET /v1/tables/{table}/preview).

keytypedefaultdescription
columnslist of stringrequired
epochintegerrequired
rowslist of list of anyrequiredNewest first; values as JSON (decimals, dates and timestamps as strings).

ProbeStatus ​

What the probes (GET /healthz, GET /readyz) answer.

keytypedefaultdescription
statusProbeStaterequired

QueryRequest ​

A query: metrics grouped by dimensions, under a selection. The same engine dashboards use, without a subscription.

keytypedefaultdescription
dimensionslist of QueryDimension[]Fields to group by, in result order.
filterslist of QueryFilter[]The selection: conditions on fields. A metric is filtered by the fields its table reaches; the others don't apply to it.
limitintegerAt most this many rows.
metricslist of stringrequiredMetrics by name, as in the model.
sortlist of QuerySort[]Result columns to sort by. Default: the dimensions, ascending.

QueryResult ​

A query's answer.

keytypedefaultdescription
as_ofstringWhen that epoch was published (RFC 3339, UTC): how fresh the data the answer reads is.
columnslist of QueryColumnrequiredDimensions first, then metrics, in request order.
epochintegerrequiredThe data epoch the answer was computed from.
rowslist of list of anyrequiredValues as JSON: decimals, dates and timestamps as strings, so nothing is lost on the way through.

RowsRequest ​

The newest rows of a table that pass some filters (POST /v1/rows).

keytypedefaultdescription
fieldslist of stringrequiredThe columns, dataset.field: fields of the table whose rows these are, and of tables it reaches. The table is the one that reaches all of them (and the fewest others).
filterslist of QueryFilter[]As in a query: the fields the table reaches filter its rows.
limitintegerHow many rows, newest first: 100 when not given, 1000 at most.

SelectionChange ​

A session's new selection, whole: one condition per field, as a query's filters are written. One step in its history, so Back undoes it.

keytypedefaultdescription
fieldslist of QueryFilterrequired

ServerInfo ​

What GET /v1/info answers: which server this is.

The UI shows it in its footer, and a client can check api_version before it relies on anything else.

keytypedefaultdescription
api_versionintegerrequiredThe version of the HTTP API this server speaks. Bumped on breaking changes to anything under /v1; currently 1.
namestringrequiredAlways "tidepool".
versionstringrequiredThe server's crate version, e.g. 0.0.1.

SessionInfo ​

What a request may do: GET/POST /v1/auth/session. A level that needs no token is true for everyone.

keytypedefaultdescription
adminbooleanrequired
ingestbooleanrequired
readbooleanrequired

SessionSelection ​

A live session's selection (GET and PUT /v1/sessions/{id}/selection).

keytypedefaultdescription
can_backbooleanrequired
can_forwardbooleanrequired
dashboardstringThe dashboard or view it shows, if any.
fieldslist of SelectedFieldrequired
sessionstringrequired

StatusInfo ​

What the server is doing (GET /v1/status).

keytypedefaultdescription
cache_bytesintegerrequiredMemory held by the engine's caches (join columns, kept answers).
config_versioninteger0The config version the server runs.
dictionary_bytesintegerrequiredMemory held by dictionary values.
durabilityDurabilityStatusNone when data lives in memory only.
epochintegerrequired
epoch_publish_msnumber0.0The last epoch's publish, in milliseconds.
live_refresh_msnumber0.0The last refresh of every live session after an epoch, in milliseconds.
rebuildRebuildInfoA model change being rebuilt in the background.
sessionsintegerrequiredLive dashboard sessions.
tableslist of TableStatusrequired
uptime_secondsintegerrequired

TableInfo ​

A table, as listed by GET /v1/tables.

keytypedefaultdescription
bytesintegerrequiredApproximate memory held by the table's segments.
columnslist of ColumnInforequired
epochintegerrequiredThe epoch these numbers are from.
event_timestringThe column that says when a row happened, if the table has one.
modestringrequiredappend or upsert.
namestringrequired
primary_keylist of stringrequired
retentionstringHow long rows are kept, by their event time (730d).
rowsintegerrequiredRows currently stored (not counting deleted ones).
rows_per_secondnumberrequiredWrite rate over the last ten seconds.
segmentsinteger0Segments the table's rows are held in.
written_totalintegerrequiredRows written since the server started.

VersionInfo ​

One applied version: GET /v1/config/versions.

keytypedefaultdescription
atstringrequiredRFC 3339.
authorstringrequired
bystringpersonWho wrote it: person, agent, files (the config directory) or startup.
classstring
sourcestringrequiredstartup, api, files or revert.
summarystringrequired
versionintegerrequired

ViewInfo ​

A view (POST /v1/views): a dashboard that lives only in memory.

keytypedefaultdescription
dashboardDashboardInforequired
idstringrequiredWhat open_dashboard opens it by: ~ and 32 hex digits.
yamlstringrequiredIts dashboard file, as YAML: what saving it writes.

ViewProblems ​

Why a view couldn't be made.

keytypedefaultdescription
errorstringrequired
problemslist of ConfigProblemrequired
problems_textstringrequiredThe problems as the CLI prints them, with the lines they point at.

ExternalEdits ​

Edits found in the config directory that the server hasn't applied.

keytypedefaultdescription
changeintegerWaiting for approval as this pending change.
problemsstringThey don't compile: what's wrong, rendered.

ConfigFile ​

One config file, by its path in the config directory.

keytypedefaultdescription
pathstringrequired
textstringrequired

RebuildInfo ​

A change being built in the background (plan §8.2, rebuild).

keytypedefaultdescription
rowsintegerrequired
rows_doneintegerrequired
versionintegerrequired

RowError ​

One problem with a write.

keytypedefaultdescription
columnstring
messagestringrequired
rowintegerThe row's position in the batch, from 0; absent for problems with the body as a whole (or, for Arrow, a whole column).

DatasetInfo ​

keytypedefaultdescription
ai_contextanyThe dataset's Ossie ai_context, as written.
descriptionstring
fieldslist of FieldInforequired
namestringrequired
tablestringrequiredThe table it reads.

MetricInfo ​

keytypedefaultdescription
ai_contextanyThe metric's Ossie ai_context, as written.
anchorstringThe table whose rows a base metric aggregates.
dashboardslist of stringrequiredDashboards that show it.
descriptionstring
expressionstringrequiredThe SQL expression.
formatstringHow its value shows, when a visual does not set a different format: currency:EUR compact.
ignoreslist of stringrequiredFields whose selection it ignores (* for all).
kindstringrequiredbase (aggregates rows) or derived (combines other metrics).
namestringrequired
time_offsetstringE.g. -1 year on orders.ordered_at.
time_windowstringE.g. ytd on orders.ordered_at.
totalslist of stringThe dimensions it is computed without (* for all): a total.

RelationshipInfo ​

keytypedefaultdescription
ai_contextanyThe relationship's Ossie ai_context, as written.
fromstringrequiredThe many side.
from_columnslist of stringrequired
namestringrequired
rolestringTells apart relationships between the same two tables (order date vs ship date).
tostringrequiredThe one side.
to_columnslist of stringrequired

PlannedChange ​

One change a plan makes.

keytypedefaultdescription
classstringrequiredsafe, rebuild or destructive.
detailstring
kindstringrequiredtable, column, relationship, dataset, field, metric, dashboard or setting.
notestring
opstringrequiredadd, remove, change or rename.
subjectstringrequired

ConfigProblem ​

One problem with a config, located.

keytypedefaultdescription
columninteger
filestring
helpstring
lineinteger1-based, when the problem points at a token.
messagestringrequired
severitystringrequirederror or warning.

ProbeState ​

valuedescription
okThe process is up and serving HTTP.
readyReady to take traffic: config applied, data recovered.
startingUp, but not ready yet (still starting, or recovering).

QueryDimension ​

A field to group by.

keytypedefaultdescription
fieldstringrequireddataset.field.
grainstringFor time fields: day, week, month, quarter or year, and for timestamps also minute or hour.
levelintegerFor hierarchy fields: group by each node's ancestor at this depth (0 is the roots); nodes not that deep group as null.

QueryFilter ​

A condition on a field: in, a half-open range from <= value < to (either end may be left out), a window of time relative to now ({"unit": "day", "last": 7}), or for a string field the values that contains a text, ignoring the case of ASCII letters. Values are written as in ingested rows: decimals, dates and timestamps as strings or numbers.

keytypedefaultdescription
containsstringThe text a string field's values contain.
fieldstringrequireddataset.field.
fromany
inlist of any
relativeRelativeWindow
toany

QuerySort ​

A result column to sort by, by its name in [QueryResult::columns].

keytypedefaultdescription
columnstringrequired
descbooleanfalse

QueryColumn ​

keytypedefaultdescription
namestringrequireddataset.field (with :grain) for dimensions, the metric's name for metrics.
rolestringrequireddimension or metric.
typestringrequiredbool, int, float, decimal(s), string, date, timestamp or timestamptz.

SelectedField ​

One field's selection.

keytypedefaultdescription
containsstringThe text searched for.
fieldstringrequired
fromany
relativeRelativeWindowA window relative to now; from and to are where it is now.
toany
valueslist of anyThe values selected, for a value selection.

DurabilityStatus ​

keytypedefaultdescription
checkpoint_age_secondsintegerSeconds since that checkpoint was written (None: none yet).
checkpoint_lsnintegerrequiredThe last write the newest checkpoint holds.
data_dirstringrequired
last_lsnintegerrequiredThe last write logged.
modestringrequiredfsync or async.

TableStatus ​

keytypedefaultdescription
bytesintegerrequired
namestringrequired
rowsintegerrequired
rows_per_secondnumberrequired
segmentsintegerrequired

ColumnInfo ​

keytypedefaultdescription
encodingstringrequireddict or plain.
filledstringcredential or received when the server fills the column on every write: producers leave it out.
namestringrequired
nullablebooleanrequired
typestringrequiredThe column type as written in the table file, e.g. decimal(14,2).

DashboardInfo ​

keytypedefaultdescription
columnsintegerrequired
filterslist of FilterInforequired
idstringrequiredThe file name, and the dashboard's URL path.
namestringrequired
row_heightintegerrequired
visualslist of VisualInforequired

FieldInfo ​

keytypedefaultdescription
ai_contextanyThe field's Ossie ai_context, as written.
descriptionstring
expressionstringThe expression, for a derived field.
grainslist of stringThe grains a visual may group a time field by (day, month, …); empty for other fields.
hierarchyHierarchyInfoFor a hierarchy field: the columns its tree is made of.
is_timebooleanrequired
labelstringWhat to call the field on screen.
namestringrequired
typestringrequiredstring, int, decimal(2), date, …

RelativeWindow ​

A window of whole periods relative to now: last periods of unit, ending with the current one, or ago periods before it. "The last 7 days" is {unit: day, last: 7} (today and the six days before it); "last month" is {unit: month, last: 1, ago: 1}. Periods start where grains do (weeks on Monday), in UTC.

keytypedefaultdescription
agointeger
lastintegerrequired
unitRelativeUnitrequired

FilterInfo ​

keytypedefaultdescription
defaultRelativeWindowThe window a date_range starts with when the dashboard is opened.
fieldstringrequireddataset.field.
measurestringThe metric shown beside each value instead of its rows.
measure_formatstringThe measure's format (currency:EUR compact, …; see the metric's format).
timedbooleanfalseWhether the field has a time of day, so windows of hours and minutes apply to it (a date has none).
widgetstringrequiredlist, tree, date_range or search.

VisualInfo ​

keytypedefaultdescription
acrosslist of QueryDimensionA pivot's dimensions along the top; its dimensions are down the side. Its frames' rows are grouped by both, dimensions first.
atGridAtrequired
comparestringA KPI's comparison metric.
descriptionstring
dimensionslist of QueryDimensionrequired
formatsmap of stringHow each metric reads here, by name: the visual's own format for it, else the metric's. Metrics without one aren't listed.
idstringrequired
metricslist of stringrequired
on_brushbooleanrequiredBrushing a range selects it.
on_clickbooleanrequiredClicking a value selects it.
titlestringWhat its header says, when the file gives it.
totalsbooleanA pivot's total row and column come in its frames' totals.
typestringrequiredkpi, bar, line, table, pie, scatter, heatmap, pivot, filter or rows.
widgetstringA filter visual's list: list or tree. Its frames are the filter frames of its dimension's field.

HierarchyInfo ​

A hierarchy field's columns (plan §5.6).

keytypedefaultdescription
keystringrequiredThe key: a node's identity, and the field's values.
kindstring
labelstring
parentstringrequiredThe parent's key.

RelativeUnit ​

Type: minute · hour · day · week · month · quarter · year.

GridAt ​

keytypedefaultdescription
hintegerrequired
wintegerrequired
xintegerrequired
yintegerrequired

reference generated from the schemas, the endpoint table and the MCP tools: just docs