Skip to main content

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
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 --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"
}
}
}'
JSON
{
"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
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
}
}
}'
JSON
{
"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
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
}
]
}
]
}'
JSON
{
"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
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
}'
JSON
{
"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
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"
}
]
}
]
}'
JSON
{
"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
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
}'
JSON
{
"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
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
}'
JSON
{
"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
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"
}
]
}
]
}'
JSON
{
"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
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
}'
JSON
{
"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": []
}

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 --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
}'
JSON
{
"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

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
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"
}'
JSON
{
"uploadUrl": "https://s3.amazonaws.com/autessa-files/...",
"s3Uri": "s3://autessa-files/table-789/resume-xyz.pdf",
"expiresInSeconds": 3600,
"errors": []
}
# Already done above

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
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
}'
JSON
{
"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-link to upload.

  • Name
    IMAGE
    Description

    Image file (PNG, JPG, JPEG). Use /generate-upload-link to upload.

  • Name
    VIDEO
    Description

    Video file (MP4, AVI, MOV, etc.). Use /generate-upload-link to 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:

{
"columnType": "SHORT_TEXT",
"textValue": "Hello world"
}

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

{
"whereGroups": [
{
"logicalOperator": "AND",
"conditions": [
{
"columnName": "age",
"operator": "GREATER_THAN",
"value": 18
}
]
}
]
}

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

{
"tableId": 789,
"joins": [
{
"rightTableId": 790,
"joinType": "INNER",
"leftColumnName": "user_id",
"rightColumnName": "id"
}
]
}

Complete Examples

Create and Search Records

JavaScript
// 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

Python
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

JavaScript
// 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 scoreThreshold for 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 errors array in responses
  • Validate data before insertion
  • Use transactions for related operations
  • Monitor computationStatus for async operations

Search Optimization

  • Index all searchable text columns
  • Use appropriate column types (SHORT_TEXT vs LONG_TEXT)
  • Set reasonable limit values
  • Use scoreThreshold to filter irrelevant results
  • Check metadata.executionTimeMs to monitor performance