Data API
Upload files into a project, run its saved workflows and download the results, from a system of your own. Every call carries an integration key a person created under Settings, as Authorization: Bearer <key>, and acts as that person within the projects and access the key was given. File bytes never travel in these requests: an upload answers signed links to send its parts to, and an export answers a signed link to download from.
This is version 2.0.0. Keep data current from your own systems shows how the requests fit together and how to create a key. The same description is available in OpenAPI form to load into an integration tool.
Requests¶
List projects¶
GET /projects
List the projects this key reaches, to find the id of the one a script works in.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
include_counts |
query | boolean | no | Default: False. |
Answer: 200, list of ProjectListItem.
List data sources¶
GET /data-sources
List a project's data sources, to find the one a refreshed file goes into, or one a run wrote.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
kind |
query | tabular or document |
no | Keep the data sources whose latest file is of this kind. Omit for all. |
project_id |
query | string (uuid) | yes | The project this call acts in. |
Answer: 200, DataSourceListResponse.
Get data source¶
GET /data-sources/{id}
Read one data source: its name, how many files it holds and its latest file.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
query | string (uuid) | yes | The project this call acts in. |
Answer: 200, DataSourceResponse.
Upload a file¶
POST /data-sources/upload
Start uploading a file under a name no other file in the project has, into the data source data_source_id names (it becomes the latest) or starting one named data_source_name. The answer lists the parts to PUT to their signed links; the file's bytes never travel in this request.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
name |
body | string | yes | The file's name: .csv, .xlsx, .md or .txt (save .xls as .xlsx), unused by the project's files. |
project_id |
body | string (uuid) | yes | The project this call acts in. |
sha256 |
body | string | yes | Lowercase hex SHA-256 over the exact whole file. Required independently of storage multipart ETags; ingestion rejects the session if the stored bytes differ. |
size_bytes |
body | integer | yes | The exact file size in bytes. It reserves account capacity and determines the fixed multipart slices before bytes travel. |
data_source_id |
body | string (uuid) | no | Joins this data source as its latest file. |
data_source_name |
body | string | no | Or starts a data source of this name. |
Answer: 200, DataSourceUploadSessionInProgress.
Refused with: 401, 403, 404, 422.
Get upload session¶
GET /upload-sessions/{id}
Read where an upload stands. ready carries the new file's id and its data source's id; rejected carries what was wrong with the file.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
query | string (uuid) | yes | The project this call acts in. |
Answer: 200, DataSourceUploadSession.
Resume upload¶
POST /upload-sessions/{id}/resume
Ask again for the signed links of the parts an upload still needs, after the earlier links expired.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 200, DataSourceUploadSession.
Refused with: 401, 403, 404, 422.
Cancel data source upload¶
POST /upload-sessions/{id}/cancel
Abandon an upload that has not finished; nothing is published.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 200, DeleteConfirmation.
Refused with: 401, 403, 404, 422.
Complete upload¶
POST /upload-sessions/{id}/complete
Finish an upload once every part has been sent. Checking the file takes a moment: poll the upload until it is ready or rejected.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 200, DataSourceUploadSession.
Refused with: 401, 403, 404, 422.
List the files of a data source¶
GET /data-sources/{id}/files
List a data source's files, newest first, to see which file is its latest.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
before_version |
query | integer | no | The last number the page before answered. |
limit |
query | integer | no | Default: 20. |
project_id |
query | string (uuid) | yes |
Answer: 200, list of FileResponse.
List workflows¶
GET /workflows
List a project's workflows, to find the id of the one to run.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
project_id |
query | string (uuid) | yes | The project this call acts in. |
Answer: 200, list of WorkflowListResponse.
Run workflow¶
POST /workflows/{id}/run
Start a run of a saved workflow. The answer carries the execution id to follow it by.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | UUID of the deployed workflow. |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 201, WorkflowExecutionResponse.
Refused with: 401, 403, 404, 422.
Get execution¶
GET /executions/{id}
Read a run's status. Poll until it has finished; a finished run lists the scenarios it published.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | The execution id run_workflow answered as executionId. |
include_provenance |
query | boolean | no | Also answer workflowSnapshot and reproductionManifest. Both are fixed at acceptance, so ask once, not on every poll. Default: False. |
project_id |
query | string (uuid) | yes | The project this call acts in. |
Answer: 200, WorkflowExecutionStatus.
Cancel execution¶
POST /executions/{id}/cancel
Stop a run that has not finished.
Key: Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | The execution id run_workflow answered as executionId. |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 200, CancelExecutionResponse.
Refused with: 401, 403, 404, 422.
List execution diagnostics¶
GET /executions/{id}/diagnostics
Read a run's findings, a page at a time, to see why it failed or what it warned about.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | The execution id run_workflow answered as executionId. |
limit |
query | integer | no | Page size (default 25, max 100). Default: 25. |
offset |
query | integer | no | Page offset for the next batch. Default: 0. |
project_id |
query | string (uuid) | yes | The project this call acts in. |
severity |
query | error or warning or info |
no | Return only findings of this severity; omit for all. |
Answer: 200, list of Diagnostic.
Export scenario¶
POST /scenarios/{id}/export
Prepare a scenario's tables as one file and answer a short-lived signed link to download it.
Key: Read only or Read and write.
| Input | Sent in | Type | Required | Meaning |
|---|---|---|---|---|
id |
path | string (uuid) | yes | |
project_id |
body | string (uuid) | yes | The project this call acts in. |
Answer: 200, ArtifactExport.
Refusals¶
| Answer | What it means |
|---|---|
401 |
No integration key was sent, or the key was revoked, replaced by a rotation, or never issued. |
403 |
The key may only read and download, and this operation changes data. |
404 |
Nothing this key reaches has that id. A project outside the key's projects answers exactly as one that does not exist. |
422 |
An input is missing or cannot be read, or the operation refused the request and says why. |
Types¶
Error¶
A refusal the caller can act on: what is wrong, and, where there is one, what to do about it.
| Field | Type | Always | Meaning |
|---|---|---|---|
error |
string | yes | |
explanation |
string | no | |
remedy |
string | no | |
field |
string | no | The input the refusal is about. |
Refusal¶
The operation read the request and refused it, saying why in one diagnostic per problem.
| Field | Type | Always | Meaning |
|---|---|---|---|
diagnostics |
list of Diagnostic | yes |
ArtifactExport¶
A prepared, immutable export artifact held for a limited time.
| Field | Type | Always | Meaning |
|---|---|---|---|
download_expires_at |
string (date-time) or null | yes | |
download_url |
string or null | yes | A GET-only link to the file, valid until download_expires_at. Null when this deployment has no public object storage. |
expires_at |
string (date-time) | yes | After this the export can be neither downloaded nor imported. |
export_id |
string (uuid) | yes | |
filename |
string | yes | |
guide_url |
string | no | The guide section that says, for each agent client, which network setting lets its sandbox fetch download_url's host. If your fetch cannot connect, your environment blocks that host: tell the person the host and this link instead of working around the missing file. Whole, composed by the product, absent when download_url is null. |
kind |
scenario or data_source |
yes | |
sha256 |
string | yes | |
size_bytes |
integer | yes | |
subject_id |
string (uuid) | yes | The exported object. |
CancelExecutionResponse¶
Response model for cancelling a workflow execution.
| Field | Type | Always | Meaning |
|---|---|---|---|
executionId |
string | yes | This run's execution id. Pass it as execution_id to get (kind execution), cancel (kind execution) and list_execution_diagnostics. |
status |
string | yes | |
url |
string | no | This run's page, under the workflow it is a run of. Hand this to the person, and report the run by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the run without a link. |
DashboardRefreshAction¶
Explicit next step for the requested dashboard. A completed workflow never refreshes saved selections by itself.
| Field | Type | Always | Meaning |
|---|---|---|---|
tool |
update |
yes | |
kind |
dashboard |
yes | |
refresh_from_execution_id |
string | yes | |
instruction |
string | yes |
DashboardRefreshDiscovery¶
Dashboards selecting results of this workflow, whether already refreshed or still pinned. List them with list (kind dashboard) with workflow_id; use update (kind dashboard) with refresh_from_execution_id only for dashboards the analyst wants updated.
| Field | Type | Always | Meaning |
|---|---|---|---|
count |
integer | yes | |
firstDashboard |
DashboardRefreshReference or null | yes | |
refreshAction |
DashboardRefreshAction or null | yes |
DashboardRefreshReference¶
A saved dashboard selecting results of this workflow. Refresh only when requested; it may intentionally be historical.
| Field | Type | Always | Meaning |
|---|---|---|---|
id |
string | yes | Pass as dashboard_id to get or update (kind dashboard). |
name |
string | yes | |
url |
string | no | The existing dashboard link, unchanged by refresh. |
showsExecution |
boolean | yes | Whether this workflow's selected results all come from the reported execution. False means the dashboard link still shows a different run; rerunning did not refresh it. |
DataSourceFields¶
What every data source carries.
| Field | Type | Always | Meaning |
|---|---|---|---|
id |
string | yes | The data source id (UUID) |
name |
string | yes | The data source's name, unique in its project. Its files keep their own names. |
updatedAt |
string (date-time) | yes | |
url |
string | no | This data source's page, showing what was uploaded. Hand this to the person, and report the data source by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the data source without a link. |
createdAt |
string (date-time) | yes | |
fileCount |
integer | yes | How many files the data source holds. |
DataSourceKind¶
What a data source is for.
tabular sources carry rows and columns and can feed a workflow.
document sources are reference prose — assumptions, methodology,
results write-ups — stored verbatim and read, never parsed.
tabular or document.
DataSourceListResponse¶
Response model for listing data sources.
| Field | Type | Always | Meaning |
|---|---|---|---|
dataSources |
list of DataSourceResponse | yes | |
total |
integer | yes | Total number of data sources |
unfinishedUploads |
list of UnfinishedUpload | yes | Uploads that hold a file name in this project and are not files yet, whatever kind asks for. A name one of them holds is refused to every other upload until it finishes or is cancelled. |
DataSourceOrigin¶
How a data source was created.
upload or workflow or assistant.
DataSourceResponse¶
A data source: a named set of files, shown by its latest file. A workflow's Import Data node reads its latest file or one file of it.
DataSourceFields and object.
DataSourceType¶
File format of a stored data source, keyed off its extension.
csv or xlsx or xls or md or txt.
DataSourceUploadDestination¶
Where a data-source upload's file goes: an existing data source, or the name of the one it creates. A scenario bundle's session carries neither.
| Field | Type | Always | Meaning |
|---|---|---|---|
dataSourceId |
string (uuid) | no | The data source the file goes into or joined. |
newDataSourceName |
string | no | Until the file is published: the name of the new data source it creates. |
DataSourceUploadLinks¶
Where a person can finish a data-source upload the agent's own environment could not send, and the guide that says which client setting lets it through. Only a data-source upload carries them.
| Field | Type | Always | Meaning |
|---|---|---|---|
guideUrl |
string | no | The guide section that says, for each agent client, which network setting lets its PUTs reach the target host, and how a person uploads in the app instead. Hand it to the person with the refused host when your PUT is blocked. Whole, composed by the product, absent when no address can be given. |
url |
string | no | Where a person finishes this upload in the app: the project's data-source page until the upload is ready, then the data source itself. Uploading the same file there, under the same name, completes this session. Hand it to the person when your own PUT cannot reach the target host, with the data source's name as the link text. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, name the project without a link. A scenario bundle's session carries neither link. |
DataSourceUploadSession¶
An upload session, with the links a data-source upload adds.
UploadSession and DataSourceUploadLinks and DataSourceUploadDestination.
DataSourceUploadSessionInProgress¶
A data-source upload in progress, with the links a person or agent finishes it by.
UploadSessionInProgress and DataSourceUploadLinks and DataSourceUploadDestination.
DeleteConfirmation¶
Confirmation that a resource was deleted.
| Field | Type | Always | Meaning |
|---|---|---|---|
deleted |
string (uuid) | yes | UUID of the deleted resource. |
Diagnostic¶
One structured finding. Its kind, category, label and evidence contract come from a core or installed package declaration.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
data_quality or configuration or validation or model_feasibility or runtime |
yes | |
cause |
string | no | Why, where it is knowable. |
details |
object | no | Evidence. data_quality findings carry subject naming what in the data is at fault; configuration findings carry none, because there is no data to point at (§3). The kinds with a typed evidence builder have a contract shape here — unmatched_join_keys is subject.{table, keys}. documentation is a repair guide: url opens it for a person; with a node_type, describe (kind node_type) with section = label reads it. |
details.subject |
list of object | no | Where the finding lives — §4's closed list of refs, and it is a list because every emitter and renderer can name multiple locations. At least one locator field per ref; source_file (the uploaded file a row came from) and source (the record's own semantic origin) are provenance and neither substitutes for the other. Lists truncate at 100 entries with the true count carried alongside. Absent on configuration and runtime findings, which have no data to point at. |
details.subject[].column_count |
integer | no | How many columns the finding names; columns lists at most the first 100. Written whenever columns is. |
details.subject[].columns |
list of integer | no | Columns by 1-based position, for findings raised before a column has a usable name. |
details.subject[].fields |
list of string | no | Columns by name. |
details.subject[].key_count |
integer | no | How many offending values the finding names; keys lists at most the first 100. Written whenever keys is. |
details.subject[].keys |
list of string | no | The offending values, when the finding is about values rather than positions. |
details.subject[].row_count |
integer | no | How many rows the finding names, unreadable row numbers included; rows lists at most the first 100. Written whenever rows is. |
details.subject[].rows |
list of integer | no | 1-based source row numbers. |
details.subject[].source |
string | no | The record's own semantic origin. |
details.subject[].source_file |
string | no | The uploaded file a row came from. |
details.subject[].table |
string | no | The collection: a scenario table, a record type, or an upstream input's label. |
kind |
string or null | yes | A core or installed package diagnostic identifier. |
label |
string or null | no | Display label from the emitting diagnostic declaration. |
message |
string | yes | What is wrong. |
node_id |
string | no | The workflow node identifier for a graph-shaped finding. Matches the node.id in the workflow document so the app or agent can locate the affected node. Omitted when the finding does not refer to a node. |
repair_guidance |
string or null | no | Repair guidance from the emitting package or core declaration. |
severity |
error or warning or info |
yes | |
suggestions |
list of string | no | How to repair it. |
ExecutionDataSource¶
A file this run saved, and the data source it joined.
| Field | Type | Always | Meaning |
|---|---|---|---|
id |
string (uuid) | yes | The data source. Pass as data_source_id to read the saved table. |
name |
string | yes | The data source's name. |
url |
string | no | The data source's page. Hand this to the person, and report the data source by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the data source without a link. |
fileId |
string (uuid) | yes | The file this run saved, its latest unless a later run added another. |
fileName |
string | yes | That file's name, name [version N].ext. |
ExecutionScenario¶
A scenario this run published.
| Field | Type | Always | Meaning |
|---|---|---|---|
id |
string (uuid) | yes | Pass as scenario_id, or in a dashboard's scenario_ids. |
name |
string | yes | The saved name, including any suffix assigned on repeat runs. It tells a baseline from a variant. |
url |
string | no | This scenario, open in the Viewer. Hand this to the person, and report the scenario by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the scenario without a link. |
ExecutionStatus¶
pending or running or completed or failed or cancelled.
FileFields¶
What every file of a data source carries, whoever wrote it.
| Field | Type | Always | Meaning |
|---|---|---|---|
columns |
list of string | yes | Column names from the file |
dataSourceId |
string (uuid) | yes | The data source this file belongs to. |
id |
string | yes | The file id (UUID) |
isLatest |
boolean | yes | Whether this is the data source's latest file, the one a workflow reading the latest reads. |
kind |
DataSourceKind | yes | Derived from type — a stored copy could contradict the file. |
name |
string | yes | The file's name. It is never given to another file |
number |
integer | yes | The file's place in its data source, counted from 1 in the order files arrived. |
origin |
DataSourceOrigin | no | How this data source was created. Default: upload. |
rowCount |
integer | yes | Total table rows; zero for a document |
sha256 |
string | yes | Hex SHA-256 of the stored file's bytes, hashed as they were received — compare it against the file on disk to prove the upload arrived unaltered. |
sizeBytes |
integer | yes | File size in bytes |
type |
DataSourceType | yes | File type |
updatedAt |
string (date-time) | yes | When the file record last changed |
uploadedAt |
string (date-time) | yes | When the file arrived |
uploadedBy |
string | yes | The user who uploaded the file or requested the run that wrote it. |
url |
string | no | The page of the data source this file belongs to. Hand this to the person, and report the data source by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the data source without a link. |
warnings |
list of UploadDiagnostic | no | What reading the uploaded file could not do faithfully: a header that merged or was blank, a workbook sheet that was not read, numbers whose decimal mark the file leaves open. Absent when there is nothing to say. Tell the person before they build on this source. |
FileResponse¶
One file of a data source: bytes received once, under a name no other file in the project has.
FileFields and object.
FindingCounts¶
Findings per severity.
| Field | Type | Always | Meaning |
|---|---|---|---|
error |
integer | yes | |
info |
integer | yes | |
warning |
integer | yes |
NodeActivity¶
The computation currently running inside a workflow node.
| Field | Type | Always | Meaning |
|---|---|---|---|
phase |
string | yes | |
message |
string | yes | |
startedAt |
string (date-time) | yes | |
timeLimitSeconds |
number | yes | |
finishedAt |
string (date-time) or null | no | Default: None. |
elapsedSeconds |
number or null | no | Default: None. |
NodeProgress¶
Progress of a single workflow node during execution
| Field | Type | Always | Meaning |
|---|---|---|---|
nodeId |
string | yes | |
startedAt |
string (date-time) or null | no | When the node was first reported running; absent for a node that has not started, and on runs from before it was recorded. |
status |
ExecutionStatus | yes | |
activity |
NodeActivity or null | no | Default: None. |
ProjectListItem¶
| Field | Type | Always | Meaning |
|---|---|---|---|
briefVersion |
integer | yes | Raised by every change to the brief. Send it back as baseBriefVersion when you rewrite the brief. |
createdAt |
string (date-time) | yes | |
id |
string | yes | |
isDemo |
boolean | no | Default: False. |
name |
string | yes | |
querySlug |
string or null | no | The former query-link slug, present only when it identifies one project globally. Canonical browser paths use slug. Default: None. |
resourceCounts |
ResourceCounts or null | no | |
slug |
string | yes | |
summary |
string or null | yes | The brief's opening paragraph, headings skipped, cut at a word and marked with an ellipsis past 280 characters; null when the brief has none. |
updatedAt |
string (date-time) | yes | |
uploadUrl |
string | no | The project's Data Sources page, where a person drops files into this project. When a file the person gave you cannot reach SCMotif through upload — you cannot compute its SHA-256 or send its bytes from where you run — hand the person this link and wait until list (kind data_source) shows the file; never copy a file's rows into a workflow instead. Whole and composed by the product, like url; absent when url is. |
url |
string | no | The project's own page, opened with that project selected. Hand this to the person, and report the project by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the project without a link. |
userId |
string | yes |
ResourceCounts¶
Per-project counts of each resource kind.
| Field | Type | Always | Meaning |
|---|---|---|---|
dashboards |
integer | no | Default: 0. |
dataSources |
integer | no | Default: 0. |
scenarios |
integer | no | Default: 0. |
workflows |
integer | no | Default: 0. |
RunWaiting¶
Why a run has not started yet. Present only while it is pending: a run the service has taken is no longer waiting for it.
| Field | Type | Always | Meaning |
|---|---|---|---|
aheadOwn |
integer | yes | How many of the runs ahead of this one belong to this same account. This is the half of the wait the caller can shorten, by cancelling one of their own. |
explanation |
string | yes | Why this run is waiting, in one sentence, as the product says it. Say this to the user rather than composing your own: a queued run that says nothing is indistinguishable from a stuck one, and both surfaces state the wait the same way on purpose. |
position |
integer | yes | This run's place in line for a solver slot, counting itself, so 1 is the run a freeing slot takes next. The service divides itself between accounts rather than starting arrivals in order, so this is not simply how long the run has been queued. |
slots |
integer | yes | How many solver slots could take this run at all. 0 means none can, and the run will be reported as failed rather than left waiting. |
ScenarioImportReady¶
UploadSessionBase and object.
StorageUsage¶
How much this account has stored and how much it may. One figure for the whole account, not per project: the limit spans them and survives deleting one. Both halves are counted — uploaded data sources and the result tables runs write — because both are stored.
| Field | Type | Always | Meaning |
|---|---|---|---|
limitBytes |
integer | yes | The ceiling for this account. A write that would cross it is refused with a storage_limit_reached diagnostic; nothing already stored is affected, and every read keeps working. |
nearLimit |
boolean | yes | Whether the account is close enough to its ceiling to say so. Tell the user when this is true — they cannot see it otherwise, and the alternative is finding out at a refusal. |
percentUsed |
integer | yes | usedBytes as a percentage of limitBytes, 0–100. |
remainingBytes |
integer | yes | What is left after stored bytes and active upload reservations, never below zero. A file larger than this will be refused. |
reservedBytes |
integer | yes | Bytes promised to active upload sessions but not yet represented by ready data sources. Reservations prevent concurrent large uploads from overcommitting the account. |
scenariosBytes |
integer | yes | The half stored as scenario result tables. Runs add to it, and deleting a scenario or its project takes it back. |
uploadsBytes |
integer | yes | The half stored as uploaded data sources. |
usedBytes |
integer | yes | Bytes stored, both halves together. This is the number the limit is compared against. |
UnfinishedUpload¶
A file upload that holds its name in the project but is not a file yet.
| Field | Type | Always | Meaning |
|---|---|---|---|
confirmedBytes |
integer | yes | Bytes object storage has confirmed so far. |
declaredSize |
integer | yes | |
expiresAt |
string (date-time) | yes | When a transfer that has not finished lets go of the name by itself. An upload whose file has arrived is being read and does not expire. |
id |
string (uuid) | yes | The upload_session_id to resume, read or cancel it by. |
name |
string | yes | |
state |
created or uploading or uploaded or ingesting |
yes | created or uploading while the transfer is unfinished, which cancel (kind upload_session) releases; uploaded or ingesting once the file has arrived and is being read. |
dataSourceId |
string (uuid) | no | The data source the file is going into, when it is an existing one. |
newDataSourceName |
string | no | The name of the data source the file creates, when it is a new one. |
UploadBlankHeaderDiagnostic¶
A ready upload's warning that one or more header cells were blank.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
data_quality |
yes | |
cause |
string | yes | |
details |
object | yes | |
details.subject |
list of object | yes | |
details.subject[].columns |
list of integer | yes | |
details.subject[].column_count |
integer | yes | |
kind |
blank_header |
yes | |
message |
string | yes | |
node_id |
file_upload |
yes | |
severity |
warning |
yes | |
suggestions |
list of string | yes | |
label |
string | yes |
UploadConfigurationDiagnostic¶
A rejected upload's actionable ingestion problem.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
configuration or runtime |
yes | |
details |
object | yes | |
kind |
data_source_name_used or storage_limit_reached or uploaded_bytes_mismatch or uploaded_file_too_large or uploaded_file_unreadable |
yes | |
message |
string | yes | |
severity |
error |
yes | |
suggestions |
list of string | yes |
UploadDiagnostic¶
One exact upload-parser warning shape.
UploadBlankHeaderDiagnostic or UploadHeaderCollapseDiagnostic or UploadUnreadSheetsDiagnostic or UploadUnsettledDecimalMarkDiagnostic.
UploadHeaderCollapseDiagnostic¶
A ready upload's warning that headers collapsed onto one normalized name.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
data_quality |
yes | |
cause |
string | yes | |
details |
object | yes | |
details.collapsed |
list of object | yes | |
details.collapsed[].column |
string | yes | |
details.collapsed[].headers |
list of string | yes | |
details.subject |
list of object | yes | |
details.subject[].fields |
list of string | yes | |
kind |
header_collapse |
yes | |
message |
string | yes | |
node_id |
file_upload |
yes | |
severity |
warning |
yes | |
suggestions |
list of string | yes | |
label |
string | yes |
UploadPartTarget¶
A short-lived, capability-bearing HTTP target for one exact slice of the file. Repeating the same PUT safely replaces that part; callers must never construct or persist the URL.
| Field | Type | Always | Meaning |
|---|---|---|---|
expiresAt |
string (date-time) | yes | |
headers |
map of text to string | yes | Headers for this PUT, keyed by name. Non-browser clients must send them, including User-Agent; browser clients retain their own User-Agent and send the remaining headers. |
partNumber |
integer | yes | |
url |
string | yes | Absolute PUT URL composed by the product. It contains a short-lived capability, not durable storage credentials. |
UploadSession¶
The durable upload record, discriminated by state. Only the ready branch exposes a DataSource id; rejected and ready branches carry the exact diagnostics those states can produce.
UploadSessionInProgress or UploadSessionReady or UploadSessionRejected or UploadSessionExpired or ScenarioImportReady.
UploadSessionBase¶
Fields every durable upload state returns.
| Field | Type | Always | Meaning |
|---|---|---|---|
confirmedBytes |
integer | yes | |
confirmedParts |
integer | yes | |
declaredSize |
integer | yes | |
expiresAt |
string (date-time) | yes | When an incomplete session expires and releases its reservation. |
id |
string (uuid) | yes | |
name |
string | yes | The file's name. |
partSize |
integer | yes | Bytes in every part except the final part, which contains the remainder. |
projectId |
string (uuid) | yes | |
sha256 |
string | yes | |
storage |
StorageUsage | yes | |
targets |
list of UploadPartTarget | yes | At most the next bounded batch of missing part targets. Empty while ingesting or terminal; call resume again after sending a full batch. |
totalParts |
integer | yes |
UploadSessionExpired¶
UploadSessionBase and object.
UploadSessionInProgress¶
UploadSessionBase and object.
UploadSessionReady¶
UploadSessionBase and object.
UploadSessionRejected¶
UploadSessionBase and object.
UploadUnreadSheetsDiagnostic¶
A ready upload's warning that the workbook holds values on sheets the data source does not: details.sheet is the sheet read, and each details.subject entry's table names a sheet that was not read.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
data_quality |
yes | |
cause |
string | yes | |
details |
object | yes | |
details.sheet |
string | yes | |
details.subject |
list of object | yes | |
details.subject[].table |
string | yes | |
kind |
unread_sheets |
yes | |
message |
string | yes | |
node_id |
file_upload |
yes | |
severity |
warning |
yes | |
suggestions |
list of string | yes | |
label |
string | yes |
UploadUnsettledDecimalMarkDiagnostic¶
A ready upload's warning that a ';'-separated file's numbers do not settle whether ',' marks decimals, so they were kept as written: details.value is one such cell, in the column details.subject[0].fields names.
| Field | Type | Always | Meaning |
|---|---|---|---|
category |
data_quality |
yes | |
cause |
string | yes | |
details |
object | yes | |
details.subject |
list of object | yes | |
details.subject[].fields |
list of string | yes | |
details.value |
string | yes | |
kind |
unsettled_decimal_mark |
yes | |
message |
string | yes | |
node_id |
file_upload |
yes | |
severity |
warning |
yes | |
suggestions |
list of string | yes | |
label |
string | yes |
WorkflowExecutionResponse¶
Response model for workflow execution
| Field | Type | Always | Meaning |
|---|---|---|---|
executionId |
string | yes | This run's execution id. Pass it as execution_id to get (kind execution), cancel (kind execution) and list_execution_diagnostics. |
status |
ExecutionStatus | yes | |
storage |
StorageUsage | yes | The account's storage when this run was enqueued. Poll get (kind execution) for the post-publication figure. |
url |
string | no | This run's page, under the workflow it is a run of. Hand this to the person, and report the run by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the run without a link. |
workflowId |
string | yes |
WorkflowExecutionStatus¶
Status of a workflow execution
| Field | Type | Always | Meaning |
|---|---|---|---|
completedAt |
string (date-time) or null | no | |
dataSources |
list of ExecutionDataSource | yes | Every data source this run wrote, identified without a project-wide list or a name guess. |
executionId |
string | yes | This run's execution id. Pass it as execution_id to get (kind execution), cancel (kind execution) and list_execution_diagnostics. |
findingCounts |
FindingCounts | yes | How many findings this run filed, per severity. list_execution_diagnostics reads them, a page at a time and narrowed by severity if asked. |
firstFinding |
Diagnostic or null | yes | The run's first error, or its first finding of any severity when it filed no error; null when it filed none. The rest are in list_execution_diagnostics. |
nodeProgress |
list of NodeProgress | no | The durable progress last reported by the currently fenced execution attempt. |
reproductionManifest |
object or null | no | The immutable inputs, build, packages and effective solver configuration recorded for this run. Present only when include_provenance is true; null for runs created before provenance manifests were recorded. |
scenarios |
list of ExecutionScenario | yes | Every scenario this run published, in the order it published them, each with its name and page. get (kind scenario) reads one scenario's whole record. |
startedAt |
string (date-time) | yes | |
status |
ExecutionStatus | yes | |
storage |
StorageUsage | yes | The account's storage at this poll. After completion this includes the run's published result tables; tell the user when nearLimit is true. |
url |
string | no | This run's page, under the workflow it is a run of. Hand this to the person, and report the run by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the run without a link. |
waiting |
RunWaiting or null | yes | Why this run has not started, while it is still pending; null once it has, or once it is over. Tell the user what it says — a run reported only as pending gives them no way to tell a busy service from a stuck one. |
workflowArchived |
boolean | yes | Whether the source workflow is archived and unavailable to Run again. |
workflowId |
string | yes | |
workflowName |
string or null | yes | The workflow name captured when this run was accepted. Null for runs created before execution snapshots were recorded. |
workflowSnapshot |
object or null | no | The immutable accepted workflow document dispatched for this run, including its canvas layout. Present only when include_provenance is true; null for older runs whose accepted document cannot be reconstructed truthfully. |
dashboardRefresh |
DashboardRefreshDiscovery or null | no |
WorkflowListResponse¶
Lightweight response model for workflow list (no full node/edge arrays)
| Field | Type | Always | Meaning |
|---|---|---|---|
createdAt |
string (date-time) | yes | |
description |
string or null | no | |
edgeCount |
integer | yes | |
id |
string | yes | |
name |
string | yes | |
nodeCount |
integer | yes | |
updatedAt |
string (date-time) | yes | |
url |
string | no | This workflow's page, showing the graph as it now stands. Hand this to the person, and report the workflow by its name with that name as the link — the id is for your next call and is not something to put in front of a reader. The address is whole (scheme, host and path) and the product composed it: never build one yourself out of an id and a host, and if this field is absent, say what was done and name the workflow without a link. |
userId |
string | yes |