autessa.autessadb
AutessaDB tables, rows, queries, joins, triggers, access logs, Drives, and analytics tables.
Alongside single-row CRUD, this namespace covers bulk writes (bulkInsert,
bulkUpdateByIds, bulkDeleteByIds — many rows per call, with per-row results
and modes that control atomicity and whether triggers/indexing/computation run),
aggregation (aggregate — grouped COUNT/SUM/AVG/MIN/MAX), and
keyset (cursor) pagination on reads (orderBy plus a cursor from the prior
response's nextCursor, staying fast on large tables). See each method's
signature below for the exact request and response shapes.
Two table-shape options appear here as well. A table can be append-only
(immutable / audit-grade): rows can be inserted and read but never updated or
deleted, computed columns are not allowed, and column removal is blocked — the
setting is a one-way latch chosen at table creation, and each returned schema
carries an appendOnly flag. Columns can also be indexed for faster
equality filtering: INTEGER, FLOAT, BOOLEAN, SINGLE_SELECT, and
foreign-key columns are always indexed, SHORT_TEXT can opt in (its values are
length-capped to 2000 characters once indexed), and LONG_TEXT / MULTI_SELECT
/ media columns cannot be indexed. On a large table a newly requested index
builds in the background and becomes usable when its build finishes.
Drives
autessa.autessadb.drive works with Drives, tables of files and folders. Calls take the Drive's tableId and absolute paths, run as the invoking user, and only reach the files and folders that user can open.
| Group | Methods |
|---|---|
drive | create, ls, tree, find, stat, grep, read, search, mkdir, move, trash, restore, purge, downloadUrl, status, usage, transferOwner |
drive.uploads | create, partUrls, completeMultipart, commit, abort |
drive.versions | list, restore |
drive.shares | list, upsert, remove, sharedWithMe, whoHasAccess |
drive.links | create, list, revoke |
Listings and searches return nextCursor and truncated; pass the cursor back with the same arguments to continue. A move that would change who has access returns requiresConfirmation and moves nothing until you repeat it with confirm: true. Request and response shapes match the Drive API.
const DRIVE = "V1StGXR8Z5";
// Find a clause, then read the page it is on before quoting it.
const hits = autessa.autessadb.drive.grep({
tableId: DRIVE,
path: "/Shared/Legal/Contracts",
pattern: "termination for convenience",
caseInsensitive: true,
});
if (hits.ok && hits.data.matches.length > 0) {
const m = hits.data.matches[0];
const page = autessa.autessadb.drive.read({ tableId: DRIVE, id: m.id, pages: String(m.page) });
console.log(`${m.path} p.${m.page} L.${m.pageLine}`, page.data.lines.map((l) => l.text).join("\n"));
}
// Share a folder with a team as Viewer.
autessa.autessadb.drive.shares.upsert({
tableId: DRIVE,
path: "/Shared/Legal",
principals: [{ type: "TEAM", teamId: "3b1f6a2e-7c41-4d55-9a0e-58c2b7f1d903" }],
role: "VIEWER",
});
Uploading from a script follows the same three steps as the API (uploads.create, send the bytes, uploads.commit); from a terminal, autessa autessadb drive push does all of it for a whole folder.
Analytics tables
autessa.autessadb.analytics works with analytics tables: columnar tables queried with read-only ANSI SQL (analytical functions such as date_trunc, approx_distinct, and format_datetime are available).
| Purpose | Methods |
|---|---|
| Tables | create, inferSchema, describe, addColumns, updateSemantics, createAgentTools |
| Data | loadFromS3, loadFromTable, appendRows, preview |
| Queries | query, estimate, jobStatus, jobResults, jobDownloadUrl, cancel, jobs |
Queries run asynchronously as jobs and typically take a few seconds. query waits up to waitMs (at most 20 seconds) and, if the job finished, returns the first rows in preview; otherwise poll jobStatus and page through jobResults. DECIMAL values and very large integers come back as strings, and timestamps as ISO-8601 UTC strings. Request and response shapes match the Analytics API.
const ORDERS = "V1StGXR8Z5";
let res = autessa.autessadb.analytics.query({
tableId: ORDERS,
sql: `SELECT region, SUM(net_amount) AS revenue
FROM order_lines
WHERE order_date >= DATE '2026-01-01'
GROUP BY region`,
waitMs: 20000,
});
let job = res.data;
while (job.state === "QUEUED" || job.state === "RUNNING") {
job = autessa.autessadb.analytics.jobStatus({ tableId: ORDERS, jobId: job.jobId, waitMs: 20000 }).data;
}
if (job.state === "SUCCEEDED") {
const page = autessa.autessadb.analytics.jobResults({ tableId: ORDERS, jobId: job.jobId, page: 0, pageSize: 1000 });
page.data.rows.forEach((r) => console.log(r.region, r.revenue));
} else {
console.log(job.error.errorCode, job.error.message, job.error.hint);
}
The analytics methods do not support row-level calls: autessa.autessadb.query.* on an analytics table fails with a message pointing to autessa.autessadb.analytics.query. On a Drive, write files through drive.* rather than query.insert, which cannot create files or folders.
autessa.autessadb.accessLog.listREAD
autessa.autessadb.accessLog.list({ page, pageSize, tableId, rowId, fromDate, toDate, action })List the company's row-level data access log (a PHI/PII audit trail), filterable by table, row, date range, and action.
Returns a page of tamper-evident access-log entries recording who read, decrypted, created, updated, or deleted data. page is 0-based; pageSize defaults to 25 (max 100). rowId requires tableId. action is one of READ, DECRYPT, CREATE, UPDATE, DELETE. The log is only returned when the company's audit configuration makes it customer-visible; otherwise customerVisible is false and entries are empty. dates are UTC ISO-8601 strings.
Request fields
- Name
page- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rowId- Type
- number
- Description
- Name
fromDate- Type
- string
- Description
- Name
toDate- Type
- string
- Description
- Name
action- Type
- "READ" | "DECRYPT" | "CREATE" | "UPDATE" | "DELETE"
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
entries- Type
- AccessLogEntryDto[]
- Description
- Name
currentPage- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
totalRows- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
- Name
customerVisible- Type
- boolean
- Description
- Name
chainVerified- Type
- boolean
- Description
autessa.autessadb.query.batchDeleteMUTATE
autessa.autessadb.query.batchDelete({ tableId, whereGroups, groupsLogicalOperator })Delete every row matching the given WHERE groups in one call; irreversible.
whereGroups is required — to delete all rows, send a condition that matches all. groupsLogicalOperator combines the groups (default OR); as with batch-update, both AND and OR between groups are fully honored. Only rows within your row-level security scope are deleted; requires WRITE or ADMIN access. Fires DELETE triggers asynchronously.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
whereGroups- Type
- WhereGroupDto[]
- Description
- Name
groupsLogicalOperator- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
deletedCount- Type
- number
- Description
- Name
results- Type
- BatchDeleteRowResult[]
- Description
autessa.autessadb.query.batchUpdateMUTATE
autessa.autessadb.query.batchUpdate({ tableId, values, whereGroups, groupsLogicalOperator })Update every row matching the given WHERE groups to the given column values in one call.
Sets the columns in values on all rows matched by whereGroups; columns not in values are left unchanged. whereGroups is required — to update all rows, send a condition that matches all. groupsLogicalOperator combines the groups (default OR); both AND and OR between groups are fully honored, matching query.query's compilation exactly. Only rows within your row-level security scope are affected; requires WRITE or ADMIN access. Fires UPDATE triggers and computations asynchronously.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
values- Type
- object
- Description
- Name
whereGroups- Type
- WhereGroupDto[]
- Description
- Name
groupsLogicalOperator- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
updatedCount- Type
- number
- Description
- Name
results- Type
- BatchUpdateRowResult[]
- Description
- Name
computationStatus- Type
- string
- Description
autessa.autessadb.query.deleteRowMUTATE
autessa.autessadb.query.deleteRow({ tableId, rowId })Delete a single row by its numeric row id; irreversible.
Permanently removes the row. The target must be within your row-level security scope — an out-of-scope or missing row returns an error ("Row with ID <id> not found") rather than deleting anything. Fires DELETE triggers asynchronously. The deleted row's prior values are returned in oldRow.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rowId- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
oldRow- Type
- object
- Description
- Name
newRow- Type
- object
- Description
- Name
deletedId- Type
- number
- Description
autessa.autessadb.query.generateUploadLinkMUTATE
autessa.autessadb.query.generateUploadLink({ tableId, fileType, columnName })Get a presigned S3 PUT URL to upload media for a FILE/IMAGE/AUDIO/VIDEO column; PUT the bytes, then store the returned s3Uri as that column's filePath via query.insert or query.update.
columnName must name an existing FILE/IMAGE/AUDIO/VIDEO column, and fileType must be an extension valid for that column's type (e.g. PNG/JPG/JPEG for IMAGE; PDF/DOCX/XLSX/TXT/EML for FILE; MP4/MOV/etc for VIDEO; MP3/M4A/WAV for AUDIO). The upload URL expires in 300 seconds. Requires WRITE or ADMIN access on the table.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
fileType- Type
- "DOCX" | "DOC" | "PDF" | "PPTX" | "XLSX" | "XLS" | "TXT" | "JSON" | "YAML" | "YML" | "XML" | "HTML" | "HTM" | "CSV" | "EML" | "MD" | "MARKDOWN" | "PNG" | "JPG" | "JPEG" | "MP4" | "AVI" | "MOV" | "WMV" | "FLV" | "MKV" | "WEBM" | "MPEG" | "MPG" | "MP3" | "M4A" | "WAV"
- Description
- Name
columnName- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
uploadUrl- Type
- string
- Description
- Name
s3Uri- Type
- string
- Description
- Name
expiresInSeconds- Type
- number
- Description
autessa.autessadb.query.getDataREAD
autessa.autessadb.query.getData({ tableId, page, pageSize })Page through all of a table's rows with no filters, sorted newest-updated first.
Like query.query but without WHERE conditions or custom ordering: rows come back sorted by updated_at DESC, id DESC. Pagination is 1-based: page defaults to 1, pageSize defaults to 50 (max 100). Row-level and field-level security still apply.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
page- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
schema- Type
- AutessaDbSchema
- Description
- Name
rows- Type
- TableRowDto[]
- Description
- Name
currentPage- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
totalRows- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
autessa.autessadb.query.getSingleRowREAD
autessa.autessadb.query.getSingleRow({ tableId, rowId })Fetch one row by its numeric row id, with presigned download URLs for any media columns.
Returns the row and the (pruned) schema. FILE/IMAGE/AUDIO/VIDEO columns come back with a short-lived presignedUrl for download. If the row does not exist, or your row-level security puts it out of scope, the call returns an error ("Row with ID <id> not found") rather than revealing its existence.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rowId- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
schema- Type
- AutessaDbSchema
- Description
- Name
row- Type
- TableRowDto
- Description
autessa.autessadb.query.indexRecordMUTATE
autessa.autessadb.query.indexRecord({ tableId, rowId })Synchronously (re)index one row's vectorizable columns into the vector store so query.search can find it.
Only columns with vectorizeField=true and a vectorizable type (SHORT_TEXT, LONG_TEXT, FILE, AUDIO) are indexed. Returns counts of columns and vectors written. Succeeds with columnsIndexed 0 if the table has no vectorizable columns. Requires WRITE access. A missing row returns an error.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rowId- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
recordId- Type
- number
- Description
- Name
columnsIndexed- Type
- number
- Description
- Name
vectorsCreated- Type
- number
- Description
- Name
indexingDurationMs- Type
- number
- Description
- Name
indexedColumns- Type
- string[]
- Description
autessa.autessadb.query.insertMUTATE
autessa.autessadb.query.insert({ tableId, values })Insert one row into a table as a map of column name to typed value.
values maps each column name to an AutessaDbColumnValue carrying columnType plus the matching typed field (textValue for SHORT_TEXT/LONG_TEXT/ULTRA_LONG_TEXT/SINGLE_SELECT/DATETIME, integerValue, floatValue, booleanValue, multiSelectValue, or filePath for media). Omit the built-in id/created_at/updated_at columns — they are set automatically. Required columns and select-option membership are validated; writing a column your field-level security forbids is rejected. Firing INSERT triggers and any computed columns happens asynchronously afterwards: computationStatus is "COMPUTING" when a computation was kicked off (its results are not in this response), else null.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
values- Type
- object
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
oldRow- Type
- object
- Description
- Name
newRow- Type
- object
- Description
- Name
insertedId- Type
- number
- Description
- Name
computationStatus- Type
- string
- Description
autessa.autessadb.query.joinQueryREAD
autessa.autessadb.query.joinQuery({ tableId, joins, whereGroups, groupsLogicalOperator, orderBy, selectColumns, page, pageSize })Query a table joined to related tables via foreign keys, with WHERE groups, ordering, column projection, and pagination.
joins lists the tables to bring in (INNER by default; LEFT/RIGHT/FULL_OUTER/CROSS supported). Each condition and sort term may target a joined table via its tableId (null = the main table). whereGroups apply after the join; groupsLogicalOperator defaults to OR. selectColumns optionally narrows the projection (default: all columns you may see). Pagination is 1-based: page defaults to 1, pageSize defaults to 50 (max 100). Default sort is the main table's updated_at DESC. Row-level security is applied per table so outer-join null-extension is preserved; field-level security prunes each table's columns. Returned row columnData keys are prefixed "<tableName>_<columnName>".
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
joins- Type
- JoinConditionDto[]
- Description
- Name
whereGroups- Type
- WhereGroupDto[]
- Description
- Name
groupsLogicalOperator- Type
- string
- Description
- Name
orderBy- Type
- OrderByDto[]
- Description
- Name
selectColumns- Type
- SelectColumnDto[]
- Description
- Name
page- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
mainSchema- Type
- AutessaDbSchema
- Description
- Name
joinedSchemas- Type
- object
- Description
- Name
joinedTables- Type
- JoinedTableSchemaDto[]
- Description
- Name
rows- Type
- JoinedTableRowDto[]
- Description
- Name
currentPage- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
totalRows- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
autessa.autessadb.query.queryREAD
autessa.autessadb.query.query({ tableId, whereGroups, groupsLogicalOperator, orderBy, page, pageSize })Query a table's rows with WHERE groups, ordering, and pagination. The primary way to read filtered data.
Rows are filtered by whereGroups (each a group of column conditions) and returned one page at a time. Within a group, conditions combine by the group's logicalOperator (default AND); the groups combine by groupsLogicalOperator (default OR). Pagination is 1-based: page defaults to 1, pageSize defaults to 50 (max 100). Default sort is updated_at DESC, id DESC. Only rows and columns your row-level and field-level security allow are returned; masked columns are redacted unless you may read them. See the WhereConditionDto type for the full operator list.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
whereGroups- Type
- WhereGroupDto[]
- Description
- Name
groupsLogicalOperator- Type
- string
- Description
- Name
orderBy- Type
- OrderByDto[]
- Description
- Name
page- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
schema- Type
- AutessaDbSchema
- Description
- Name
rows- Type
- TableRowDto[]
- Description
- Name
currentPage- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
totalRows- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
autessa.autessadb.query.searchREAD
autessa.autessadb.query.search({ tableId, query, columnName, limit, scoreThreshold, page, includeDetails })Semantic (vector) search over a table's indexed column, ranked by similarity to a query string.
Both query and columnName are required. columnName must be a column with vectorizeField=true; only SHORT_TEXT, LONG_TEXT, FILE, and AUDIO columns can be indexed (use tables.tableOptions to see which types qualify, and query.indexRecord to (re)index a row). This is pure semantic search, not keyword matching. limit defaults to 10 (max 100); scoreThreshold defaults to 0.0 and is clamped to 0..1; page is 1-based (default 1); includeDetails (default false) adds per-embedding match diagnostics. Results are row-level-security filtered; masked columns are always redacted in results. Rate-limited per company.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
query- Type
- string
- Description
- Name
columnName- Type
- string
- Description
- Name
limit- Type
- number
- Description
- Name
scoreThreshold- Type
- number
- Description
- Name
page- Type
- number
- Description
- Name
includeDetails- Type
- boolean
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
schema- Type
- AutessaDbSchema
- Description
- Name
results- Type
- SearchResult[]
- Description
- Name
totalResults- Type
- number
- Description
- Name
currentPage- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
- Name
metadata- Type
- SearchMetadata
- Description
autessa.autessadb.query.updateMUTATE
autessa.autessadb.query.update({ tableId, rowId, values })Update a single row's column values by row id; only the columns you send change.
Sets each column in values on the row identified by rowId; columns you omit keep their current value (so this coexists with concurrent user edits to other columns). Required columns and field-level write security are enforced. The target must be within your row-level security scope. Fires UPDATE triggers and computed columns asynchronously; computationStatus is "COMPUTING" when a computation started, else null.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rowId- Type
- number
- Description
- Name
values- Type
- object
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
oldRow- Type
- object
- Description
- Name
newRow- Type
- object
- Description
- Name
updatedId- Type
- number
- Description
- Name
computationStatus- Type
- string
- Description
autessa.autessadb.roles.createMUTATE
autessa.autessadb.roles.create({ name, description, tablePolicies, assignments })Create an AutessaDB security role with table policies (row filters, column masking) and assignments to users, teams, or custom apps.
name is required. The caller must have ADMIN access on every table referenced by the role's policies. Policies only take effect on tables where rlsEnforced is on (see tables.updateSettings). A policy's rowPredicate limits which rows the role sees; columnRules mask or hide columns.
Request fields
- Name
name- Type
- string
- Description
- Name
description- Type
- string
- Description
- Name
tablePolicies- Type
- DbRoleTablePolicyDto[]
- Description
- Name
assignments- Type
- DbRoleAssignmentDto[]
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
role- Type
- DbRoleDto
- Description
autessa.autessadb.roles.deleteMUTATE
autessa.autessadb.roles.delete({ roleId })Delete an AutessaDB security role and its assignments.
Requires ADMIN access on every table referenced by the role's policies. App-managed roles cannot be deleted here. Removing a role restores default (open) access on its tables for the affected principals, subject to remaining roles.
Request fields
- Name
roleId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
autessa.autessadb.roles.getREAD
autessa.autessadb.roles.get({ roleId })Fetch one AutessaDB security role by roleId (a UUID string), including its table policies and assignments.
Returns "Role not found" for an unknown id or a role in another company.
Request fields
- Name
roleId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
role- Type
- DbRoleDto
- Description
autessa.autessadb.roles.listREAD
autessa.autessadb.roles.list({ tableId })List the company's AutessaDB security roles; pass tableId to only return roles with a policy on that table.
Open to any company member with AutessaDB access. Each role bundles per-table row filters and column rules plus assignments to users/teams/apps.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
roles- Type
- DbRoleDto[]
- Description
autessa.autessadb.roles.updateMUTATE
autessa.autessadb.roles.update({ roleId, name, description, tablePolicies, assignments })Update an AutessaDB security role; null fields are left unchanged, but a non-null tablePolicies or assignments list replaces the existing set wholesale (an empty list clears it).
Requires ADMIN access on every table referenced by both the existing and the new policies. Read the role with roles.get first if you want to preserve policies/assignments you are not changing. App-managed roles (managedByAppId set) cannot be edited here.
Request fields
- Name
roleId- Type
- string
- Description
- Name
name- Type
- string
- Description
- Name
description- Type
- string
- Description
- Name
tablePolicies- Type
- DbRoleTablePolicyDto[]
- Description
- Name
assignments- Type
- DbRoleAssignmentDto[]
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
role- Type
- DbRoleDto
- Description
autessa.autessadb.tables.allREAD
autessa.autessadb.tables.all()List every AutessaDB table you can access in the current company, split by how you got access.
Returns your accessible tables in three buckets: tables you own, tables shared company-wide, and tables shared specifically with you. Not paginated.
Request fields
No fields.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
ownedTables- Type
- AutessaDbTableDto[]
- Description
- Name
companySharedTables- Type
- AutessaDbTableDto[]
- Description
- Name
sharedWithMeTables- Type
- AutessaDbTableDto[]
- Description
autessa.autessadb.tables.analyzeTriggerImpactMUTATE
autessa.autessadb.tables.analyzeTriggerImpact({ tableId, eventType, maxDepth, includeDisabledTriggers, stopAtCycles, includeSecondaryImpacts })Simulate what would cascade if an event fired on a table: the downstream flow of triggers, tools, agents, and affected tables, with cycle detection. Read-only dry run.
Nothing executes — this only analyses the trigger graph, so run it before adding triggers to avoid trigger loops. Send tableId and eventType (INSERT | UPDATE | DELETE | ANY). maxDepth defaults to 10, includeDisabledTriggers to false, stopAtCycles to true, and includeSecondaryImpacts to true. The response is a flow graph (flowNodes keyed by nodeId, starting at rootNodeId), a summary of affected resources, and any detected cycles.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
eventType- Type
- "INSERT" | "UPDATE" | "DELETE" | "ANY"
- Description
- Name
maxDepth- Type
- number
- Description
- Name
includeDisabledTriggers- Type
- boolean
- Description
- Name
stopAtCycles- Type
- boolean
- Description
- Name
includeSecondaryImpacts- Type
- boolean
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
sourceTableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
sourceTableName- Type
- string
- Description
- Name
eventType- Type
- "INSERT" | "UPDATE" | "DELETE" | "ANY"
- Description
- Name
flowNodes- Type
- object
- Description
- Name
rootNodeId- Type
- string
- Description
- Name
totalPossiblePaths- Type
- number
- Description
- Name
maxDepth- Type
- number
- Description
- Name
affectedResources- Type
- AffectedResourcesSummary
- Description
- Name
detectedCycles- Type
- CycleDetection[]
- Description
- Name
warnings- Type
- string[]
- Description
autessa.autessadb.tables.confirmDeleteMUTATE
autessa.autessadb.tables.confirmDelete({ tableId, deleteToken })Permanently delete a table using the deleteToken from tables.delete: drops the table with all rows, its stored files, and its vector-index entries.
Irreversible. Requires the matching, unexpired deleteToken from tables.delete for the same table.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
deleteToken- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
autessa.autessadb.tables.createMUTATE
autessa.autessadb.tables.create({ tableName, schema })Create a new ordinary AutessaDB table with the given name and column schema.
The request is {tableName, schema}. schema is an AutessaDbSchemaCreate whose columns live in schema.columnDefinitions (NOT "columns") — an array of column objects each with columnName and columnType (plus optional required, columnComment, allowedValues for SINGLE_SELECT/MULTI_SELECT, defaultValue, vectorizeField, masked). columnType is one of SHORT_TEXT, LONG_TEXT, ULTRA_LONG_TEXT, FILE, AUDIO, IMAGE, VIDEO, INTEGER, FLOAT, BOOLEAN, SINGLE_SELECT, MULTI_SELECT. ULTRA_LONG_TEXT is unlimited-length text (values past a threshold are stored in S3 and re-inflated on read) that cannot be vectorized or indexed. The built-in id, created_at, and updated_at columns are added automatically — do not declare them. DATETIME is a legacy, read-only type: it is rejected on create (and on schema updates); store timestamps as SHORT_TEXT holding UTC ISO-8601 strings (e.g. 2026-07-15T14:30:00Z) instead. This always creates an ordinary (DEFAULT) table — the only table kind the SDK creates — so the create schema carries no table-kind field. A basic table with a vectorized column plus a semantic-query tool is the scriptable pattern for document search (see the grounding-agent-on-documents guide). Call get_sdk_type("AutessaDbSchemaCreate") and get_sdk_type("AutessaDbColumnDefinition") to see every field before building the request.
Request fields
- Name
tableName- Type
- string
- Description
- Name
schema- Type
- AutessaDbSchemaCreate
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
autessa.autessadb.tables.deleteMUTATE
autessa.autessadb.tables.delete({ tableId })Request deletion of a table; returns a short-lived deleteToken you must confirm with tables.confirmDelete.
Nothing is deleted yet. Returns a deleteToken valid for 300 seconds (expiresIn); pass it to tables.confirmDelete to actually drop the table. Connector-managed dependent tables cannot be deleted here — delete the linked connector instead.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
deleteToken- Type
- string
- Description
- Name
expiresIn- Type
- number
- Description
autessa.autessadb.tables.getREAD
autessa.autessadb.tables.get({ tableId })Fetch a table's schema, settings, and your access level by table id.
Returns the full table (schema with columns, built-ins, triggers, settings, type, tags) and your permission on it (READ/WRITE/PUBLISH/ADMIN).
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
permission- Type
- "READ" | "WRITE" | "PUBLISH" | "ADMIN"
- Description
- Name
table- Type
- AutessaDbTableDto
- Description
autessa.autessadb.tables.getSharingDetailsREAD
autessa.autessadb.tables.getSharingDetails({ tableId })Get a table's sharing level, company-wide permission, per-user grants, your own access level, and its row-security settings.
Read-only view of exactly what tables.share and tables.updateSettings would modify.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
sharingLevel- Type
- "PRIVATE" | "SPECIFIC_MEMBER" | "COMPANY"
- Description
- Name
companyPermissionLevel- Type
- "READ" | "WRITE" | "PUBLISH" | "ADMIN"
- Description
- Name
sharedWith- Type
- UserShareWrapper[]
- Description
- Name
userAccessLevel- Type
- "READ" | "WRITE" | "PUBLISH" | "ADMIN"
- Description
- Name
rlsEnforced- Type
- boolean
- Description
- Name
defaultRoleId- Type
- string
- Description
autessa.autessadb.tables.tableOptionsREAD
autessa.autessadb.tables.tableOptions()List which AutessaDB column types support semantic vectorization (i.e. can carry vectorizeField=true for query.search).
Takes no arguments. Returns the subset of column types eligible for the vector index (SHORT_TEXT, LONG_TEXT, FILE, AUDIO).
Request fields
No fields.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
vectorizableColumns- Type
- "SHORT_TEXT" | "LONG_TEXT" | "FILE" | "AUDIO" | "IMAGE" | "VIDEO" | "INTEGER" | "FLOAT" | "BOOLEAN" | "SINGLE_SELECT" | "MULTI_SELECT" | "DATETIME"[]
- Description
autessa.autessadb.tables.updateSchemaMUTATE
autessa.autessadb.tables.updateSchema({ tableId, columnNamesToRemove, columnsToAdd, selectOptionsToAdd, tags })Modify a table's schema by removing columns, adding columns, and adding SINGLE_SELECT/MULTI_SELECT options (there is no rename or retype).
Removing a column permanently drops its data. The built-in id, created_at, and updated_at columns are protected and cannot be removed or re-added. New columns with required=true must carry a defaultValue or computationValue to backfill existing rows. New columns may not use the legacy DATETIME type — store timestamps as SHORT_TEXT holding UTC ISO-8601 strings (e.g. 2026-07-15T14:30:00Z) instead. selectOptionsToAdd only adds allowed values to SINGLE_SELECT/MULTI_SELECT columns, never removes them. A non-null tags set replaces the table's tags wholesale.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
columnNamesToRemove- Type
- string[]
- Description
- Name
columnsToAdd- Type
- AutessaDbColumnDefinition[]
- Description
- Name
selectOptionsToAdd- Type
- object
- Description
- Name
tags- Type
- string[]
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
updatedSchema- Type
- AutessaDbSchema
- Description
autessa.autessadb.tables.updateSettingsMUTATE
autessa.autessadb.tables.updateSettings({ tableId, rlsEnforced, defaultRoleId, clearDefaultRole })Update a table's security settings (owner/ADMIN only): toggle rlsEnforced and set or clear the default role auto-assigned to grantees when the table is shared.
rlsEnforced=true turns on closed-by-default row security — an identity with no applicable role policy sees no rows; when false (the column default), tables without policies are unrestricted. Null request fields are left unchanged. defaultRoleId is a role UUID you administer that covers this table; clearDefaultRole=true unsets it and takes precedence over defaultRoleId. Note: broadening sharing on an rlsEnforced table requires a default role to be set first.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
rlsEnforced- Type
- boolean
- Description
- Name
defaultRoleId- Type
- string
- Description
- Name
clearDefaultRole- Type
- boolean
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
rlsEnforced- Type
- boolean
- Description
- Name
defaultRoleId- Type
- string
- Description
autessa.autessadb.trigger.addMUTATE
autessa.autessadb.trigger.add({ tableId, trigger })Add a trigger to a table that fires per row on INSERT/UPDATE/DELETE and runs a tool, an agent, a manager, or a write to another AutessaDB table.
The trigger needs triggerName, triggerType (INVOKE_TOOL | INVOKE_AGENT | INVOKE_MANAGER | UPDATE_AUTESSADB), a condition ({event: INSERT|UPDATE|DELETE|ANY, plus an optional filterMode + columnFilters to fire only on specific column changes}), and exactly one matching action config (e.g. invokeToolActionConfig.toolExecutionRequest with the target toolId and variables). Action-config string values may reference the triggering row with @@{columnName} (and @@{old.columnName} for the prior value). Triggers run asynchronously after the row change, with the permissions of their creator (definer rights). Chaining is implicit: an UPDATE_AUTESSADB action that writes another table fires that table's triggers in turn — use tables.analyzeTriggerImpact first to check for loops. Requires PUBLISH or ADMIN access; the server assigns triggerId and definerUserId.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
trigger- Type
- AutessaDbTrigger
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
autessa.autessadb.trigger.allREAD
autessa.autessadb.trigger.all({ tableId })List all of a table's triggers.
Returns every trigger configured on the table (enabled or not). Requires access to the table.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
triggers- Type
- AutessaDbTrigger[]
- Description
autessa.autessadb.trigger.deleteMUTATE
autessa.autessadb.trigger.delete({ tableId, triggerId })Delete a trigger.
Permanently removes the trigger from the table. Requires ADMIN access.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
triggerId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
autessa.autessadb.trigger.disableMUTATE
autessa.autessadb.trigger.disable({ tableId, triggerId })Disable a trigger without deleting it; it stops firing until re-enabled.
Requires ADMIN access. Returns the updated trigger.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
triggerId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
autessa.autessadb.trigger.enableMUTATE
autessa.autessadb.trigger.enable({ tableId, triggerId })Re-enable a disabled trigger so it fires on future row changes.
Requires ADMIN access. Returns the updated trigger.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
triggerId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
autessa.autessadb.trigger.getREAD
autessa.autessadb.trigger.get({ tableId, triggerId })Fetch a single trigger's configuration by id.
Requires access to the table. Use before trigger.update to read-modify-submit the trigger.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
triggerId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
autessa.autessadb.trigger.historyREAD
autessa.autessadb.trigger.history({ tableId, year, month, page })Page through a table's trigger execution history (which triggers fired, on what event, and their result) for a given year and month.
year and month (1-12) are required and scope the history window. page is 0-based; the response includes totalElements, totalPages, and hasNext for paging. Entries are newest first.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
year- Type
- number
- Description
- Name
month- Type
- number
- Description
- Name
page- Type
- number
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
triggerEvents- Type
- TriggerEventDto[]
- Description
- Name
totalElements- Type
- number
- Description
- Name
totalPages- Type
- number
- Description
- Name
currentPage- Type
- number
- Description
- Name
pageSize- Type
- number
- Description
- Name
hasNext- Type
- boolean
- Description
- Name
hasPrevious- Type
- boolean
- Description
autessa.autessadb.trigger.updateMUTATE
autessa.autessadb.trigger.update({ tableId, triggerId, trigger })Update a trigger by submitting triggerId plus the complete modified trigger object (read with trigger.get, modify, submit).
The stored trigger configuration is replaced wholesale — omitted fields are lost, so always start from the entity returned by trigger.get. Requires ADMIN access. The definerUserId is re-stamped to you (last-editor-wins), so the trigger runs with your permissions afterwards.
Request fields
- Name
tableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
triggerId- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
trigger- Type
- AutessaDbTrigger
- Description
Related
- Autessa SDK overview
- AutessaDB Drive and the Drive API
- Analytics tables and the Analytics API