Skip to content

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

Refused with: 401, 404, 422.

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.

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