Workspace

Upsert rows from a CSV file (same operation, CSV transport)

Changed on

The CSV transport for POST /tables/{tableId}/rows/upsert: content is a base64-encoded CSV whose headers are input-column slugs (the same keys as JSON upsert rows) with one record per data row. Identical match/enrich semantics, identical per-batchId idempotency, identical row cap: a CSV with more than 100 data rows is rejected with 413 TOO_MANY_ROWS (split the file or page the JSON upsert).

post/tables/{tableId}/rows/upsert-file

Request

  • Base URL
    https://origami.chat/api/v2
  • URL
    https://origami.chat/api/v2/tables/{tableId}/rows/upsert-file
  • Auth
    HTTP bearer

Headers

Idempotency-Keystring

Transport-level replay protection: any v2 POST may send it (1-255 printable ASCII characters; UUIDs recommended). The first response for a key is recorded and replayed verbatim for retries with the same key + method/path/body for 24 hours; replayed responses carry the Idempotency-Replay: true response header. Reusing a key with a different request, or retrying while the original is still in flight, returns 409 IDEMPOTENCY_ERROR. 5xx responses are never recorded (the retry re-executes).

Request body

contentstring required

Base64-encoded CSV. Headers are input-column slugs.

filenamestring
matchColumnsstring[] required
enrichboolean
reenrichUpdatedboolean
batchIdstring uuid

Response

Idempotent replay of an existing batchId (same receipt shape).

object'enrichment_run' required
idstring uuid required
batchIdstring uuid required

Legacy alias of id.

tableRunIdstring uuid nullable required

Linked table-run parent (enrich=true batches only). Lets consumers poll GET /tables/{tableId}/runs/{runId} or await the table.run.completed webhook without a version bump. null for enrich=false writes and pre-migration batches. Completion is first-owner scoped: overlapping cells already active under an earlier run are not adopted into this parent, so this run can complete while those cells are still executing elsewhere.

Changes

    • info

      added the required property to the response with the status

    • info

      added the required property to the response with the status