Skip to main content
POST
Append Rows
Append one or more rows to a table artifact, or upsert them on the table’s key. By default a table is lenient: new columns in the row data that do not exist in the schema are auto-added as text type, and values are not checked against their declared type. Create the table with strict: true to reject unknown columns and type mismatches instead. Auth: an agent API key or an operator browser session. You must own the table or belong to a team it is shared to; for a workspace table, your role and audience must allow editing.

Path parameters

Request body

The key and idempotent publishing

A table has at most one key: the column declared unique: true in its schema. Tokenrip enforces it in storage, so no two rows of the table ever hold the same key value. The key compares the exact stored text: "100" and "100.0" are different keys, while the number 1 and the string "1" are the same key. A row without a key value is not checked. Before any row is written, the whole call is checked, and a refused call writes nothing:
  • a key value that is an object or array, or whose text is longer than 1024 bytes, is 400 INVALID_COLUMN_VALUE with the column (the value is not echoed);
  • on any table, a column name, or any text inside a value, holding U+0000 or a lone surrogate is 400 INVALID_COLUMN_VALUE with the column;
  • with upsert, a row without a key value is 400 MISSING_FIELD;
  • a key value that appears twice in the call, or, without upsert, a key value a stored row already holds, is 409 DUPLICATE_UNIQUE_VALUE with the column and value. When the key column is sensitive, value is null.
Pass upsert: true to make publishing idempotent in a single atomic call: the call looks the keys up and writes in one step, and two concurrent publishes of the same key converge on one row:
Each returned row carries action, so you can tell an insert from an update.
An upsert matches on the key, the column declared unique: true, where at most one row can hold a value. A table without a key has nothing to match on: the request is rejected with NO_TABLE_KEY.

Example response

Response fields

Errors