AutessaDB API
AutessaDB is a complete database solution with built-in semantic search capabilities. Perform CRUD operations, complex queries, batch updates, join tables, and leverage powerful vector search across your data.
All AutessaDB API requests require the resourceId query parameter set to your table ID and an Authorization header with your API key. Your API key must have the appropriate permissions (READ, WRITE, DELETE) for the requested operation.
Base URL
https://api.autessa.com/clients/autessadb
Authentication
Pass your API key in the Authorization header (no "Bearer" prefix):
Authorization: your_api_key_here
curl https://api.autessa.com/clients/autessadb/get-data?resourceId=789 \
-H "Authorization: your_api_key" \
-H "Content-Type: application/json"
Permissions
Each API key can have different permissions for each table:
- Name
READ- Description
Required for: get-data, query, join-query, get-single-row, search
- Name
WRITE- Description
Required for: insert, update, batch-update, generate-upload-link, index-record
- Name
DELETE- Description
Required for: delete-row, batch-delete
Configure permissions for your API key in the Autessa Builder.
Data Manipulation
Insert Row POST/insert
Inserts a new row into a table.
Permission Required: WRITE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID (same as resourceId).
- Name
values- Type
- object
- Description
Column values to insert. Keys are column names, values are AutessaDbColumnValue objects.
Response
- Name
insertedId- Type
- integer
- Description
The ID of the newly inserted row.
- Name
newRow- Type
- object
- Description
The complete inserted row data with all column values.
- Name
computationStatus- Type
- string
- Description
"COMPUTING"if computed fields are being calculated in the background.
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
- cURL
- JavaScript
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/insert?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"values": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 30
},
"email": {
"columnType": "SHORT_TEXT",
"textValue": "john@example.com"
}
}
}'
const response = await fetch(
'https://api.autessa.com/clients/autessadb/insert?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
values: {
name: {
columnType: 'SHORT_TEXT',
textValue: 'John Doe'
},
age: {
columnType: 'INTEGER',
integerValue: 30
}
}
})
}
);
const data = await response.json();
console.log('Inserted ID:', data.insertedId);
{
"insertedId": 12345,
"newRow": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 30
},
"email": {
"columnType": "SHORT_TEXT",
"textValue": "john@example.com"
}
},
"computationStatus": null,
"errors": []
}
Update Row POST/update
Updates an existing row in a table. Only the specified columns will be updated.
Permission Required: WRITE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
rowId- Type
- integer
- Description
The ID of the row to update.
- Name
values- Type
- object
- Description
Column values to update. Only specified columns will be modified.
Response
- Name
updatedId- Type
- integer
- Description
The ID of the updated row.
- Name
oldRow- Type
- object
- Description
Row data before the update.
- Name
newRow- Type
- object
- Description
Row data after the update.
- Name
computationStatus- Type
- string
- Description
"COMPUTING"if computed fields are being calculated.
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/update?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"rowId": 12345,
"values": {
"age": {
"columnType": "INTEGER",
"integerValue": 31
}
}
}'
{
"updatedId": 12345,
"oldRow": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 30
}
},
"newRow": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 31
}
},
"errors": []
}
Batch Update Rows POST/batch-update
Updates multiple rows that match the specified WHERE conditions. All matching rows will be updated with the same values.
Permission Required: WRITE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
values- Type
- object
- Description
Column values to update for all matching rows.
- Name
whereGroups- Type
- array<WhereGroupDto>
- Description
Array of WHERE condition groups to identify rows to update.
- Name
groupsLogicalOperator- Type
- string
- Description
How to combine WHERE groups:
"AND"or"OR". Defaults to"OR".
Response
- Name
updatedCount- Type
- integer
- Description
Number of rows that were updated.
- Name
results- Type
- array<BatchUpdateRowResult>
- Description
Detailed results for each updated row (rowId, oldRow, newRow).
- Name
computationStatus- Type
- string
- Description
"COMPUTING"if computed fields are being calculated.
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/batch-update?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"values": {
"status": {
"columnType": "SINGLE_SELECT",
"textValue": "active"
}
},
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "age",
"operator": "GREATER_THAN",
"value": 25
}
]
}
]
}'
{
"updatedCount": 5,
"results": [
{
"rowId": 12345,
"oldRow": {...},
"newRow": {...}
},
{
"rowId": 12346,
"oldRow": {...},
"newRow": {...}
}
],
"errors": []
}
Delete Row POST/delete-row
Deletes a single row from a table.
Permission Required: DELETE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
rowId- Type
- integer
- Description
The ID of the row to delete.
Response
- Name
deletedId- Type
- integer
- Description
The ID of the deleted row.
- Name
oldRow- Type
- object
- Description
The deleted row data.
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/delete-row?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"rowId": 12345
}'
{
"deletedId": 12345,
"oldRow": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 30
}
},
"errors": []
}
Batch Delete Rows POST/batch-delete
Deletes multiple rows that match the specified WHERE conditions.
Permission Required: DELETE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
whereGroups- Type
- array<WhereGroupDto>
- Description
Array of WHERE condition groups to identify rows to delete.
- Name
groupsLogicalOperator- Type
- string
- Description
How to combine WHERE groups:
"AND"or"OR". Defaults to"OR".
Response
- Name
deletedCount- Type
- integer
- Description
Number of rows that were deleted.
- Name
results- Type
- array<BatchDeleteRowResult>
- Description
Detailed results for each deleted row (rowId, oldRow).
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/batch-delete?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "status",
"operator": "EQUALS",
"value": "inactive"
},
{
"columnName": "lastLogin",
"operator": "IS_NULL"
}
]
}
]
}'
{
"deletedCount": 3,
"results": [
{
"rowId": 12345,
"oldRow": {...}
},
{
"rowId": 12347,
"oldRow": {...}
},
{
"rowId": 12350,
"oldRow": {...}
}
],
"errors": []
}
Data Retrieval
Get Table Data POST/get-data
Retrieves paginated data from a table.
Permission Required: READ
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
page- Type
- integer
- Description
Page number (1-based). Defaults to 1.
- Name
pageSize- Type
- integer
- Description
Number of records per page. Defaults to 50. Maximum 100.
Response
- Name
schema- Type
- AutessaDbSchema
- Description
The table schema definition.
- Name
rows- Type
- array<TableRowDto>
- Description
Array of table rows with column data and metadata.
- Name
currentPage- Type
- integer
- Description
Current page number.
- Name
pageSize- Type
- integer
- Description
Number of rows per page.
- Name
totalRows- Type
- integer
- Description
Total number of rows in the table.
- Name
totalPages- Type
- integer
- Description
Total number of pages.
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/get-data?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"page": 1,
"pageSize": 50
}'
{
"schema": {
"columns": [
{
"name": "name",
"type": "SHORT_TEXT",
"required": true
},
{
"name": "age",
"type": "INTEGER",
"required": false
}
]
},
"rows": [
{
"id": 12345,
"columnData": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"age": {
"columnType": "INTEGER",
"integerValue": 30
}
},
"createdAt": "2025-01-29T10:00:00",
"updatedAt": "2025-01-29T15:30:00"
}
],
"currentPage": 1,
"pageSize": 50,
"totalRows": 150,
"totalPages": 3,
"errors": []
}
Query Table Data POST/query
Queries table data with WHERE conditions and pagination.
Permission Required: READ
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
whereGroups- Type
- array<WhereGroupDto>
- Description
Array of WHERE condition groups for filtering.
- Name
groupsLogicalOperator- Type
- string
- Description
How to combine WHERE groups:
"AND"or"OR". Defaults to"OR".
- Name
page- Type
- integer
- Description
Page number (1-based). Defaults to 1.
- Name
pageSize- Type
- integer
- Description
Records per page. Defaults to 50. Maximum 100.
Response
Same structure as Get Table Data, but filtered by WHERE conditions.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/query?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "age",
"operator": "GREATER_THAN_OR_EQUAL",
"value": 18
},
{
"columnName": "status",
"operator": "EQUALS",
"value": "active"
}
]
}
],
"page": 1,
"pageSize": 50
}'
{
"schema": {...},
"rows": [
{
"id": 12345,
"columnData": {...},
"createdAt": "2025-01-29T10:00:00",
"updatedAt": "2025-01-29T15:30:00"
}
],
"currentPage": 1,
"pageSize": 50,
"totalRows": 25,
"totalPages": 1,
"errors": []
}
Join Query POST/join-query
Performs JOIN operations across multiple tables with optional WHERE conditions.
Permission Required: READ (on all tables in the join)
Query Parameters
- Name
resourceId- Type
- integer
- Description
The main/left table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The main/left table ID.
- Name
joins- Type
- array<JoinConditionDto>
- Description
Array of tables to join with and their join conditions.
- Name
whereGroups- Type
- array<WhereGroupDto>
- Description
Optional WHERE conditions applied after the join.
- Name
groupsLogicalOperator- Type
- string
- Description
How to combine WHERE groups:
"AND"or"OR". Defaults to"OR".
- Name
page- Type
- integer
- Description
Page number. Defaults to 1.
- Name
pageSize- Type
- integer
- Description
Records per page. Defaults to 50. Maximum 100.
Response
- Name
mainSchema- Type
- AutessaDbSchema
- Description
Schema of the main/source table.
- Name
joinedSchemas- Type
- object
- Description
Map of tableId to schema for joined tables.
- Name
rows- Type
- array<JoinedTableRowDto>
- Description
Joined rows with columns prefixed by table name.
- Name
currentPage- Type
- integer
- Description
Current page number.
- Name
totalRows- Type
- integer
- Description
Total number of joined rows.
- Name
totalPages- Type
- integer
- Description
Total number of pages.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/join-query?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"joins": [
{
"rightTableId": 790,
"joinType": "INNER",
"leftColumnName": "user_id",
"rightColumnName": "id"
}
],
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "status",
"operator": "EQUALS",
"value": "active"
}
]
}
]
}'
{
"mainSchema": {...},
"joinedSchemas": {
"790": {...}
},
"rows": [
{
"sourceTableId": 789,
"sourceRowId": 12345,
"columnData": {
"orders.order_id": {...},
"orders.user_id": {...},
"users.id": {...},
"users.name": {...}
},
"createdAt": "2025-01-29T10:00:00",
"updatedAt": "2025-01-29T15:30:00"
}
],
"currentPage": 1,
"totalRows": 42,
"totalPages": 1,
"errors": []
}
Get Single Row POST/get-single-row
Retrieves a single row by ID with pre-signed URLs for FILE/IMAGE columns.
Permission Required: READ
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
rowId- Type
- integer
- Description
The ID of the row to retrieve.
Response
- Name
schema- Type
- AutessaDbSchema
- Description
The table schema.
- Name
row- Type
- TableRowDto
- Description
Single row with presigned URLs for FILE/IMAGE columns (10-minute expiry).
- Name
errors- Type
- array<string>
- Description
Array of error messages if any occurred.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/get-single-row?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"rowId": 12345
}'
{
"schema": {...},
"row": {
"id": 12345,
"columnData": {
"name": {
"columnType": "SHORT_TEXT",
"textValue": "John Doe"
},
"avatar": {
"columnType": "IMAGE",
"filePath": "s3://bucket/avatar.jpg",
"presignedUrl": "https://s3.amazonaws.com/..."
}
},
"createdAt": "2025-01-29T10:00:00",
"updatedAt": "2025-01-29T15:30:00"
},
"errors": []
}
Semantic Search
Search Table POST/search
Performs semantic vector search on a table column using embeddings. Searches use different strategies based on column type (SHORT_TEXT vs LONG_TEXT).
Permission Required: READ
Note: Columns must be indexed before they can be searched. Use /index-record to index rows.
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
query- Type
- string
- Description
The search query text.
- Name
columnName- Type
- string
- Description
The column name to search within.
- Name
limit- Type
- integer
- Description
Maximum number of results. Default: 10. Maximum: 100.
- Name
scoreThreshold- Type
- number
- Description
Minimum similarity score (0.0 to 1.0). Default: 0.0.
- Name
page- Type
- integer
- Description
Page number (1-based). Default: 1.
- Name
includeDetails- Type
- boolean
- Description
Whether to include detailed match information. Default: false.
Response
- Name
schema- Type
- AutessaDbSchema
- Description
The table schema.
- Name
results- Type
- array<SearchResult>
- Description
Search results ordered by relevance (highest score first).
- Name
totalResults- Type
- integer
- Description
Total number of results found (before pagination).
- Name
currentPage- Type
- integer
- Description
Current page number.
- Name
totalPages- Type
- integer
- Description
Total number of pages.
- Name
metadata- Type
- SearchMetadata
- Description
Search metadata including query, column, strategy, execution time.
- cURL
- JavaScript
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/search?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"query": "machine learning engineer",
"columnName": "job_description",
"limit": 10,
"scoreThreshold": 0.7
}'
const response = await fetch(
'https://api.autessa.com/clients/autessadb/search?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
query: 'machine learning engineer',
columnName: 'job_description',
limit: 10,
scoreThreshold: 0.7
})
}
);
const data = await response.json();
data.results.forEach(result => {
console.log(`Score: ${result.score}, ID: ${result.recordId}`);
});
{
"schema": {...},
"results": [
{
"recordId": 12345,
"score": 0.92,
"rank": 1,
"contentHash": "hash_abc",
"rowData": {
"job_title": {
"columnType": "SHORT_TEXT",
"textValue": "Senior ML Engineer"
},
"job_description": {
"columnType": "LONG_TEXT",
"textValue": "We are looking for..."
}
},
"createdAt": "2025-01-29T10:00:00",
"updatedAt": "2025-01-29T15:30:00",
"details": {
"embedType": "FULL",
"allMatches": [
{
"embedType": "FULL",
"score": 0.92
}
]
}
}
],
"totalResults": 25,
"currentPage": 1,
"totalPages": 3,
"metadata": {
"query": "machine learning engineer",
"columnName": "job_description",
"columnType": "LONG_TEXT",
"searchStrategy": "HYBRID",
"targetEmbeddingTypes": ["FULL", "CHUNK"],
"executionTimeMs": 45
},
"errors": []
}
File Upload
Generate Upload Link POST/generate-upload-link
Generates a pre-signed S3 upload URL for file/image/video columns. Upload your file to the returned URL, then use the S3 URI in insert/update operations.
Permission Required: WRITE
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
fileType- Type
- string
- Description
File extension. Supported:
DOCX,DOC,PDF,TXT,XLSX,XLS,PNG,JPG,JPEG,MP4,AVI,MOV,WMV,FLV,MKV,WEBM,MPEG,MPG,WAV
- Name
columnName- Type
- string
- Description
The column name where the file will be stored.
Response
- Name
uploadUrl- Type
- string
- Description
Pre-signed URL for uploading the file via PUT request.
- Name
s3Uri- Type
- string
- Description
S3 URI to use in insert/update requests.
- Name
expiresInSeconds- Type
- integer
- Description
Time in seconds until the upload URL expires.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/generate-upload-link?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"fileType": "PDF",
"columnName": "resume"
}'
{
"uploadUrl": "https://s3.amazonaws.com/autessa-files/...",
"s3Uri": "s3://autessa-files/table-789/resume-xyz.pdf",
"expiresInSeconds": 3600,
"errors": []
}
- 1. Get Upload Link
- 2. Upload File to S3
- 3. Use S3 URI in Insert
# Already done above
curl --request PUT \
--url 'https://s3.amazonaws.com/autessa-files/...' \
--header 'Content-Type: application/pdf' \
--data-binary '@resume.pdf'
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/insert?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"values": {
"resume": {
"columnType": "FILE",
"filePath": "s3://autessa-files/table-789/resume-xyz.pdf"
}
}
}'
Indexing
Index Record POST/index-record
Indexes a row for semantic search. Creates vector embeddings for SHORT_TEXT and LONG_TEXT columns. Required before searching.
Permission Required: WRITE
Note: Indexing happens automatically on insert/update for most columns, but you can manually trigger it with this endpoint.
Query Parameters
- Name
resourceId- Type
- integer
- Description
The table ID.
Request Body
- Name
tableId- Type
- integer
- Description
The table ID.
- Name
rowId- Type
- integer
- Description
The ID of the row to index.
Response
- Name
recordId- Type
- integer
- Description
The ID of the indexed record.
- Name
columnsIndexed- Type
- integer
- Description
Number of columns that were indexed.
- Name
vectorsCreated- Type
- integer
- Description
Total number of vectors created.
- Name
indexingDurationMs- Type
- integer
- Description
Time taken for indexing in milliseconds.
- Name
indexedColumns- Type
- array<string>
- Description
Names of columns that were indexed.
curl --request POST \
--url 'https://api.autessa.com/clients/autessadb/index-record?resourceId=789' \
--header 'Content-Type: application/json' \
--header 'Authorization: your_api_key' \
--data '{
"tableId": 789,
"rowId": 12345
}'
{
"recordId": 12345,
"columnsIndexed": 3,
"vectorsCreated": 15,
"indexingDurationMs": 234,
"indexedColumns": [
"job_title",
"job_description",
"requirements"
],
"errors": []
}
Column Types
AutessaDB supports various column types with different features:
- Name
SHORT_TEXT- Description
Short text (max 32,000 chars). Vectorization enabled for semantic search.
- Name
LONG_TEXT- Description
Long text (max 128,000 chars). Vectorization enabled for semantic search.
- Name
FILE- Description
File attachment. Use
/generate-upload-linkto upload.
- Name
IMAGE- Description
Image file (PNG, JPG, JPEG). Use
/generate-upload-linkto upload.
- Name
VIDEO- Description
Video file (MP4, AVI, MOV, etc.). Use
/generate-upload-linkto upload.
- Name
INTEGER- Description
Integer number.
- Name
FLOAT- Description
Floating point number.
- Name
BOOLEAN- Description
True/False value.
- Name
SINGLE_SELECT- Description
Single selection from predefined options.
- Name
MULTI_SELECT- Description
Multiple selections from predefined options.
- Name
DATETIME- Description
Date and time value.
Column Value Format
Each column value is an object with the column type and appropriate value field:
- SHORT_TEXT / LONG_TEXT
- INTEGER
- FLOAT
- BOOLEAN
- SINGLE_SELECT
- MULTI_SELECT
- DATETIME
- FILE / IMAGE / VIDEO
{
"columnType": "SHORT_TEXT",
"textValue": "Hello world"
}
{
"columnType": "INTEGER",
"integerValue": 42
}
{
"columnType": "FLOAT",
"floatValue": 3.14159
}
{
"columnType": "BOOLEAN",
"booleanValue": true
}
{
"columnType": "SINGLE_SELECT",
"textValue": "option1"
}
{
"columnType": "MULTI_SELECT",
"multiSelectValue": ["option1", "option2", "option3"]
}
{
"columnType": "DATETIME",
"textValue": "2025-01-29T15:30:00"
}
{
"columnType": "IMAGE",
"filePath": "s3://bucket/path/to/image.jpg"
}
WHERE Conditions
WhereGroupDto
- Name
logicalOperator- Type
- string
- Description
How to combine conditions within this group:
"AND"or"OR"
- Name
conditions- Type
- array<WhereConditionDto>
- Description
List of conditions in this group
WhereConditionDto
- Name
columnName- Type
- string
- Description
Column to filter on
- Name
operator- Type
- string
- Description
Comparison operator (see below)
- Name
value- Type
- any
- Description
Value to compare against (not needed for IS_NULL/IS_NOT_NULL)
Supported Operators
- Name
EQUALS- Description
Exact match (=)
- Name
NOT_EQUALS- Description
Not equal (!=)
- Name
GREATER_THAN- Description
Greater than (>)
- Name
LESS_THAN- Description
Less than (<)
- Name
GREATER_THAN_OR_EQUAL- Description
Greater than or equal (>=)
- Name
LESS_THAN_OR_EQUAL- Description
Less than or equal (<=)
- Name
IN- Description
Value in list
- Name
NOT_IN- Description
Value not in list
- Name
IS_NULL- Description
Value is null (no value needed)
- Name
IS_NOT_NULL- Description
Value is not null (no value needed)
- Name
CONTAINS- Description
String contains substring
- Name
NOT_CONTAINS- Description
String doesn't contain substring
- Name
STARTS_WITH- Description
String starts with
- Name
ENDS_WITH- Description
String ends with
WHERE Examples
- Simple Condition
- Multiple Conditions (AND)
- Multiple Groups (OR)
- IS_NULL Check
- String Operations
- IN Operator
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "age",
"operator": "GREATER_THAN",
"value": 18
}
]
}
]
}
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "age",
"operator": "GREATER_THAN_OR_EQUAL",
"value": 18
},
{
"columnName": "status",
"operator": "EQUALS",
"value": "active"
}
]
}
]
}
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "role",
"operator": "EQUALS",
"value": "admin"
}
]
},
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "role",
"operator": "EQUALS",
"value": "moderator"
}
]
}
],
"groupsLogicalOperator": "OR"
}
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "deletedAt",
"operator": "IS_NULL"
}
]
}
]
}
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "email",
"operator": "ENDS_WITH",
"value": "@example.com"
},
{
"columnName": "name",
"operator": "CONTAINS",
"value": "John"
}
]
}
]
}
{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "status",
"operator": "IN",
"value": ["active", "pending", "verified"]
}
]
}
]
}
JOIN Operations
JoinConditionDto
- Name
rightTableId- Type
- integer
- Description
The table to join with
- Name
joinType- Type
- string
- Description
Type of join:
"INNER","LEFT","RIGHT". Defaults to"INNER".
- Name
leftColumnName- Type
- string
- Description
Column from the main/left table
- Name
rightColumnName- Type
- string
- Description
Column from the right table to join on
JOIN Examples
- Simple INNER JOIN
- Multiple JOINs
- JOIN with WHERE
{
"tableId": 789,
"joins": [
{
"rightTableId": 790,
"joinType": "INNER",
"leftColumnName": "user_id",
"rightColumnName": "id"
}
]
}
{
"tableId": 789,
"joins": [
{
"rightTableId": 790,
"joinType": "INNER",
"leftColumnName": "user_id",
"rightColumnName": "id"
},
{
"rightTableId": 791,
"joinType": "LEFT",
"leftColumnName": "product_id",
"rightColumnName": "id"
}
]
}
{
"tableId": 789,
"joins": [
{
"rightTableId": 790,
"joinType": "INNER",
"leftColumnName": "user_id",
"rightColumnName": "id"
}
],
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "status",
"operator": "EQUALS",
"value": "completed"
}
]
}
]
}
Complete Examples
Create and Search Records
// 1. Insert a record
const insertResp = await fetch(
'https://api.autessa.com/clients/autessadb/insert?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
values: {
job_title: {
columnType: 'SHORT_TEXT',
textValue: 'Senior Machine Learning Engineer'
},
job_description: {
columnType: 'LONG_TEXT',
textValue: 'We are seeking an experienced ML engineer to join our team...'
},
salary: {
columnType: 'INTEGER',
integerValue: 150000
}
}
})
}
);
const { insertedId } = await insertResp.json();
// 2. Index the record for search
await fetch(
'https://api.autessa.com/clients/autessadb/index-record?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
rowId: insertedId
})
}
);
// 3. Search for similar jobs
const searchResp = await fetch(
'https://api.autessa.com/clients/autessadb/search?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
query: 'machine learning position',
columnName: 'job_description',
limit: 10,
scoreThreshold: 0.7
})
}
);
const searchData = await searchResp.json();
console.log('Found', searchData.totalResults, 'matching jobs');
searchData.results.forEach(result => {
console.log(`${result.rowData.job_title.textValue} - Score: ${result.score}`);
});
Batch Operations
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
}
# Batch update all inactive users
update_resp = requests.post(
'https://api.autessa.com/clients/autessadb/batch-update?resourceId=789',
headers=headers,
json={
'tableId': 789,
'values': {
'status': {
'columnType': 'SINGLE_SELECT',
'textValue': 'archived'
}
},
'whereGroups': [
{
'logicalOperator': 'AND',
'conditions': [
{
'columnName': 'status',
'operator': 'EQUALS',
'value': 'inactive'
},
{
'columnName': 'lastLogin',
'operator': 'IS_NULL'
}
]
}
]
}
)
data = update_resp.json()
print(f"Updated {data['updatedCount']} users")
File Upload Workflow
// 1. Generate upload link
const linkResp = await fetch(
'https://api.autessa.com/clients/autessadb/generate-upload-link?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
fileType: 'PDF',
columnName: 'resume'
})
}
);
const { uploadUrl, s3Uri } = await linkResp.json();
// 2. Upload file to S3
const fileData = await fetch('resume.pdf').then(r => r.blob());
await fetch(uploadUrl, {
method: 'PUT',
headers: { 'Content-Type': 'application/pdf' },
body: fileData
});
// 3. Create record with file reference
await fetch(
'https://api.autessa.com/clients/autessadb/insert?resourceId=789',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'your_api_key'
},
body: JSON.stringify({
tableId: 789,
values: {
name: {
columnType: 'SHORT_TEXT',
textValue: 'John Doe'
},
resume: {
columnType: 'FILE',
filePath: s3Uri
}
}
})
}
);
Best Practices
Performance
- Use pagination for large datasets
- Set appropriate
scoreThresholdfor search to filter low-quality results - Use batch operations for multiple updates/deletes
- Index records immediately after insert for search availability
Security
- Configure minimal required permissions on API keys
- Use environment variables for sensitive data
- Rotate API keys regularly
- Never expose API keys in client-side code
Data Integrity
- Always check the
errorsarray in responses - Validate data before insertion
- Use transactions for related operations
- Monitor
computationStatusfor async operations
Search Optimization
- Index all searchable text columns
- Use appropriate column types (SHORT_TEXT vs LONG_TEXT)
- Set reasonable
limitvalues - Use
scoreThresholdto filter irrelevant results - Check
metadata.executionTimeMsto monitor performance