Sources
Lists sources across the whole organisation, including ones not linked into any workspace. Sources are org-owned; a workspace sees one only through a link, so this is where to look when a workspace appears to have no data. Query params: limit, cursor, parentId (folder id, or 'all' to flatten the tree), format, search, sortBy, sortDir. Reads platform MongoDB.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Page size (1-1000, default 50).
1Opaque cursor from a previous response's pagination.cursor.
exampleOnly return sources derived from this source.
123Filter by data format.
exampleCase-insensitive filter on source name.
exampleField to sort by (default createdAt).
exampleSort direction (default desc).
ascPossible values: Successful response
Unauthorized
Forbidden
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/sources HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
"[Circular Reference]"
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null
}
],
"pagination": {
"cursor": "text",
"hasMore": true,
"total": 1
}
}Returns one org-level source, plus linkedWorkspaceIds — the workspaces it is currently linked into. Must belong to the caller's organisation and pass the caller's sources-area access check.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: id
123Successful response
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/sources/{id} HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
{
"id": "text",
"evidenceId": "text",
"type": "text",
"explorerConfig": "[Circular Reference]"
}
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null,
"linkedWorkspaceIds": [
"text"
]
}
}Lists sources in the workspace. Query params: limit, cursor (for pagination), parentId (filter by parent folder), format (Tabular or Folder). Excludes virtual sources. Results from platform MongoDB.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Page size (1-1000, default 50).
1Opaque cursor from a previous response's pagination.cursor.
exampleOnly return sources derived from this source.
123Filter by data format.
TabularPossible values: Successful response
Unauthorized
Forbidden
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/workspaces/{wsId}/sources HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [
{
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
"[Circular Reference]"
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null
}
],
"pagination": {
"cursor": "text",
"hasMore": true,
"total": 1
}
}Creates an empty source (metadata only). Body: name, dataFormat (default Tabular), optional description, parentSourceId. No data is written; use upload, from-data, or connector import to add data. The source record is created in platform MongoDB; data-service is not called until first upload.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123TabularPossible values: Successful response
Bad Request
Unauthorized
Forbidden
Unprocessable Entity
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 79
{
"name": "text",
"dataFormat": "Tabular",
"description": null,
"parentSourceId": null
}{
"data": {
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
{
"id": "text",
"evidenceId": "text",
"type": "text",
"explorerConfig": "[Circular Reference]"
}
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null
}
}Returns the source by id from platform MongoDB. Must belong to the workspace. Includes schemaEntries, columnMetadata, documentCount, totalSize if populated by upload or from-data.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Successful response
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/workspaces/{wsId}/sources/{id} HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": {
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
{
"id": "text",
"evidenceId": "text",
"type": "text",
"explorerConfig": "[Circular Reference]"
}
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null
}
}Deletes the source record from platform MongoDB. Does not necessarily delete data in the data-service or object storage; cleanup may be deferred.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123No Content
No content
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
DELETE /api/v1/workspaces/{wsId}/sources/{id} HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Updates source name and/or description only. Schema and data are not changed here.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Successful response
Bad Request
Unauthorized
Forbidden
Not Found
Unprocessable Entity
Too Many Requests; the response carries Retry-After
Internal Server Error
PATCH /api/v1/workspaces/{wsId}/sources/{id} HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 34
{
"name": "text",
"description": null
}{
"data": {
"id": "text",
"workspaceId": null,
"organisationId": "text",
"name": "text",
"parentSourceId": null,
"dataSource": "Local Upload",
"dataFormat": "Folder",
"description": null,
"richDescription": {
"markdown": "text",
"widgets": [
{
"id": "text",
"evidenceId": "text",
"type": "text",
"explorerConfig": "[Circular Reference]"
}
]
},
"schemaEntries": [
{
"field": "text",
"type": "None",
"subtype": "Integer",
"availableTypes": [
"None"
],
"isIndex": null,
"categories": [
"text"
],
"aliases": [
"text"
],
"description": null,
"displayWidth": null,
"originalFormat": null,
"displayFormat": null,
"unit": null,
"unitModifier": null,
"dateOrderAssumed": null
}
],
"ontologyMode": "auto",
"documentCount": null,
"columnMetadata": {
"ANY_ADDITIONAL_PROPERTY": {
"dtype": null,
"categoryOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"distribution": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"rangeFrom": "text",
"rangeTo": "text",
"mean": null,
"stringPattern": null,
"jsonObjectFraction": null,
"cardinality": null,
"nullFraction": null,
"processing": null,
"metadataStatus": "complete",
"elementType": "None",
"minSize": null,
"maxSize": null,
"avgSize": null,
"medianSize": null,
"p95Size": null,
"nullCount": null,
"emptyCount": null,
"totalElementCount": null,
"sizeDistribution": {
"empty": 0,
"oneToThree": 0,
"fourToTen": 0,
"elevenToFifty": 0,
"fiftyPlus": 0
},
"uniqueElementCount": null,
"avgUniquePerRow": null,
"elementOccurences": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"elementMin": null,
"elementMax": null,
"elementMean": null,
"elementSum": null,
"elementStddev": null
}
},
"extension": null,
"totalSize": null,
"createdAt": null,
"lastSaved": null,
"virtual": null,
"ontologyStatus": "pending",
"ontologyError": null,
"extractionStatus": "pending",
"extractionError": null,
"pageCount": null,
"derivedFromDatasetIds": [
"text"
],
"derivedVia": "document_tables",
"extractionRecipe": {
"mode": "schema",
"sourceDocumentIds": [
"text"
],
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"entityTypes": [
{
"name": "text",
"description": null,
"columns": [
{
"name": "text",
"description": null,
"dtype": "number",
"categories": [
"text"
],
"trueSynonyms": [
"text"
],
"falseSynonyms": [
"text"
],
"unit": null,
"examples": [
[]
],
"conceptId": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"targetName": null,
"createdAt": null,
"lastAppendedAt": null,
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"pendingAnnotationCount": null,
"ontologyExcludedFields": [
{
"field": "text",
"reason": "text",
"source": "auto"
}
],
"batchRanges": [
{
"hash": "text",
"fileName": "text",
"uploadedAt": "text",
"rowStart": 1,
"rowEnd": 1
}
],
"currentVersionId": null,
"latestVersionOrdinal": null
}
}Creates a new tabular source from a JSON array of records. Body: name, data (array of objects, min length 1), optional description, parentSourceId. Platform creates the source id and record, then hands the data to the data-service, which runs full ingest (type inference, null cleaning, schema), persists to storage, then runs ontology extraction and consolidation. The response carries schemaEntries, columnMetadata, documentCount, totalSize. Use when you have in-memory data (e.g. from an API) rather than a file; avoids file upload and matches UI upload behaviour including ontology.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Source name
Optional parent folder source to group under
Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Unprocessable Entity
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/from-data HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 104
{
"name": "text",
"data": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"description": null,
"parentSourceId": null
}{
"data": "text"
}Makes org-level sources visible inside this workspace. Body: sourceIds (min 1), optional parentSourceId to place them under a folder. Linking a folder brings its whole subtree. Nothing is copied or moved — one source can be linked into many workspaces. Requires write standing on the workspace, not just the sources:write scope. Returns { linked, alreadyLinked }.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Unprocessable Entity
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/link HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 44
{
"sourceIds": [
"text"
],
"parentSourceId": null
}{
"data": "text"
}Removes sources from this workspace. Body: sourceIds (min 1). Only the link is deleted — the org-level source, its data and its ontology concepts are left intact, and other workspaces keep their links. Removing a folder takes its descendants with it. Requires write standing on the workspace.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Unprocessable Entity
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/unlink HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 22
{
"sourceIds": [
"text"
]
}{
"data": "text"
}Appends data to the source from an uploaded file. Request body: raw file bytes; use header x-filename or Content-Disposition for filename. Does not run ontology processing; schema is inferred from the existing source or file. Use to add more rows without replacing existing data.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Filename to store the upload under
exampleRaw file bytes
Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/{id}/extend HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
x-filename: text
Content-Type: application/octet-stream
Accept: */*
{
"data": "text"
}Returns paginated rows from the source. Query params: limit (default 50, max 1000), cursor (opaque, from the previous response's pagination.cursor). Data is read from the query engine's storage.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Page size (1-1000, default 50).
1Opaque cursor from a previous response's pagination.cursor.
exampleSuccessful response
Bad Request
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/workspaces/{wsId}/sources/{id}/records HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": [],
"pagination": {
"cursor": "text",
"hasMore": true,
"total": 1
}
}Replaces all data in the source with an uploaded file. Request body: raw file bytes; x-filename or Content-Disposition for filename. Ingest (type inference, schema) is applied, then mappings for columns the file no longer contains are detached and ontology extraction is requeued in every linked workspace so each automatically maintained dataset view can adopt the replacement schema. The data replacement can succeed even if ontology reconciliation is unavailable; in that case the response includes a warning telling the client to rerun extraction. Use when you want to refresh content without creating a new source.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Filename to store the upload under
exampleRaw file bytes
Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/{id}/replace HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
x-filename: text
Content-Type: application/octet-stream
Accept: */*
{
"data": "text"
}Retries ontology processing for a source that previously failed (e.g. ontologyStatus extraction_failed or consolidation_failed). If extraction failed, runs extraction inline then queues consolidation; if only consolidation failed, re-queues consolidation. Returns success when the retry is accepted; processing is asynchronous.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Successful response
Payload not declared in this repo
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/{id}/retry-ontology HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": "text"
}Returns source id, name, schema (schemaEntries), columnMetadata, and documentCount from platform MongoDB. No proxy; reflects the last known schema from upload or from-data. For live schema from storage, compare with records.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Successful response
Payload not declared in this repo
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/workspaces/{wsId}/sources/{id}/schema HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": "text"
}Triggers a sync for a source that is backed by a live-data connector (e.g. scheduled pull). Only meaningful for sources with a connectionConfig that supports sync; no-op or error otherwise.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Successful response
Payload not declared in this repo
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/{id}/sync HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": "text"
}Uploads a file into this source (which must already exist). Request body: raw file bytes; x-filename or Content-Disposition for filename. The data-service parses the file (CSV, Excel, Parquet, etc.), runs full ingest with type inference, then runs ontology extraction and consolidation. For API-only flows, from-data is often simpler and returns the full source with schema.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Path parameter: wsId
123Path parameter: id
123Filename to store the upload under
exampleRaw file bytes
Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Not Found
Conflict
Too Many Requests; the response carries Retry-After
Internal Server Error
POST /api/v1/workspaces/{wsId}/sources/{id}/upload HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
x-filename: text
Content-Type: application/octet-stream
Accept: */*
{
"data": "text"
}Streams the source contents as a file. Path param format: csv, json, or parquet. Response is streaming. Requires exports:read scope.
An API key (pk_...) created on the Organisation API page, or an OAuth access token. Every operation requires one.
Export format
csvPossible values: Successful response
Payload not declared in this repo
Bad Request
Unauthorized
Forbidden
Not Found
Too Many Requests; the response carries Retry-After
Internal Server Error
GET /api/v1/workspaces/{wsId}/sources/{id}/export/{format} HTTP/1.1
Host: sandbox.rootcause.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"data": "text"
}Last updated

