Skip to main content
Tables are the built-in structured data store behind core.table.*. Use them when your workflows need durable, queryable records such as asset inventories, user allowlists, enrichment results, or investigation evidence.

Common workflow pattern

  1. Create the table once with a schema that fits your data and a unique index on the upsert column.
  2. Insert or upsert rows as new events arrive.
  3. Look up, search, or export rows later from another workflow step.

Column schema

core.table.create_table takes columns as a JSON array of column objects. This is the same schema you use for tables that you later link to cases.
  • name: Required string. Use letters, numbers, and underscores, and start with a letter or underscore.
  • type: Required uppercase string. Use TEXT, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMPTZ, JSONB, SELECT, or MULTI_SELECT.
  • nullable: Optional boolean. Defaults to true.
  • default: Optional value. It must match the column type.
  • options: Optional array of strings. Required for SELECT and MULTI_SELECT, and invalid for other types.
The documented type values match the custom tables picker, and case custom fields use the same storage types. The case field picker surfaces raw JSONB through the URL kind and layers Long text on top of TEXT. Create a table with a SELECT column:

FAQ

Split large imports into batches upstream, then run one insert_rows action per batch.

core.table.create_table

Create a new lookup table with optional columns.
columns takes the column objects described in Column schema.

Inputs

string
required
The name of the table to create.
array[object] | null
List of column definitions. Each item is an object with required name and uppercase type, plus optional nullable, default, and options fields. Use TEXT, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMPTZ, JSONB, SELECT, or MULTI_SELECT. options is required for SELECT and MULTI_SELECT, and invalid for other types.Default: null.
boolean
If true, raise an error if the table already exists.Default: true.

Examples

Create and inspect a table

core.table.list_tables

Get a list of all available tables in the workspace.

Inputs

This action does not take input fields.

Examples

Create and inspect a table

core.table.get_table_metadata

Get a table’s metadata by name. This includes the columns and whether they are indexed.

Inputs

string
required
The name of the table to get.

Examples

Create and inspect a table

core.table.update_table

Rename a table by name.

Inputs

string
required
The current name of the table to update.
string
required
The new table name.

Examples

Rename a table

core.table.create_column

Add a column to an existing table.

Inputs

object
required
Column definition with required name and uppercase type, plus optional nullable, default, and options fields. Use TEXT, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMPTZ, JSONB, SELECT, or MULTI_SELECT. options is required for SELECT and MULTI_SELECT.
string
required
The table to add the column to.

Examples

Manage table schema

core.table.update_column

Update a table column’s name, type, nullability, default, index, or options. Set update: {is_index: true} to create the table’s unique index on the column. A table can have one single-column unique index: creation fails if the column already contains duplicate values, and a second is_index: true call raises Table cannot have multiple unique indexes. Guard the step when a workflow repeats it; see Tables.

Inputs

string
required
The current column name.
string
required
The table containing the column.
object
required
Partial column update. Supported fields: name, type, nullable, default, is_index, and options.

Examples

Create a unique index and upsert

core.table.delete_column

Delete a column from an existing table.

Inputs

string
required
The column name to delete.
string
required
The table containing the column.

Examples

Delete a column

core.table.lookup

Get a single row from a table corresponding to the given column and value.

Inputs

string
required
The column to lookup the value in.
string
required
The table to lookup the value in.
any
required
The value to lookup.

Examples

Look up rows

core.table.is_in

Check if a value exists in a table column.

Inputs

string
required
The column to check in.
string
required
The table to check.
any
required
The value to check for.

Examples

Look up rows

core.table.lookup_many

Get multiple rows from a table corresponding to the given column and values.

Inputs

string
required
The column to lookup the value in.
string
required
The table to lookup the value in.
any
required
The value to lookup.
integer
The maximum number of rows to return.Default: 100.

Examples

Look up rows

core.table.search_rows

Search for rows in a table with optional filtering.

Inputs

string
required
The table to search in.
string | null
Cursor for pagination.Default: null.
string | null
Filter rows created before this time.Default: null.
integer
The maximum number of rows to return.Default: 100.
boolean
If true, return cursor pagination metadata along with items.Default: false.
boolean
Reverse pagination direction.Default: false.
string | null
Text to search for across all text and JSONB columns.Default: null.
string | null
Filter rows created after this time.Default: null.
string | null
Filter rows updated after this time.Default: null.
string | null
Filter rows updated before this time.Default: null.

Examples

Search table rows

core.table.insert_row

Insert a row into a table.

Inputs

object
required
The data to insert into the row.
string
required
The table to insert the row into.
boolean
If true, update the row if it already exists (based on primary key).Default: false.

Examples

Insert, update, and delete rows

core.table.insert_rows

Insert multiple rows into a table.

Inputs

array[object]
required
The list of data to insert into the table.
string
required
The table to insert the rows into.
boolean
If true, update the rows if they already exist (based on primary key).Default: false.

Examples

Insert, update, and delete rows

core.table.update_row

Update a row in a table.

Inputs

object
required
The new data for the row.
string
required
The ID of the row to update.
string
required
The table to update the row in.

Examples

Insert, update, and delete rows

core.table.delete_row

Delete a row from a table.

Inputs

string
required
The ID of the row to delete.
string
required
The table to delete the row from.

Examples

Insert, update, and delete rows

core.table.download

Download a table’s data by name as list of dicts, JSON string, NDJSON string, CSV or Markdown.

Inputs

string
required
The name of the table to download.
string | null
The format to download the table data in.Default: null.
integer
The maximum number of rows to download.Default: 1000.

Examples

Export table data