Overwrite Table

Overwrite an existing Big Table by clearing all rows and (optionally) adding new data. Row IDs for any added rows are returned in the response in the same order as the input row data is passed in the request. Row data may be passed in JSON, CSV, or TSV format. If a column is not included in the passed row data, it will be empty in the added row. If a column is passed that does not exist in the updated table schema, or with a value that does not match the column's type, the default behavior is for no action to be taken and the API call to [return an error](/docs/classic-api/general/errors#invalid-row-data). However, you can control this behavior with the `onSchemaError` query parameter. <Warning> There is currently no way to supply values for user-specific columns in the API. Those columns will be cleared when using this endpoint. </Warning> ### Updating the Schema You can optionally update the table schema at the same time by providing a new schema in the JSON request body. If you do not provide a schema, the existing schema will be used. When using a CSV or TSV request body, you cannot pass a schema. If you need to update the schema, use the `onSchemaError=updateSchema` query parameter, or [stash](/docs/classic-api/stashing/introduction) the CSV/TSV data and pass a JSON request body referencing the stash ID. ## Examples <AccordionGroup> <Accordion title="Clear table data"> To clear all rows from a table, send a PUT request with an empty array in the `rows` field: ```json { "rows": [] } ``` </Accordion> <Accordion title="Reset table data"> If you want to reset a table's data with a small number of rows, you can do so by providing the data inline in the `rows` field (being sure that row object structure matches the table schema): ```json [ { "fullName": "Alex Bard", "ageInYears": 30, "hiredOn": "2021-07-03" } ] ``` However, this is only appropriate for relatively small initial datasets (around a few hundred rows or less, depending on schema complexity). If you need to work with a larger dataset you should utilize stashing. </Accordion> <Accordion title="Reset table data from Stash"> [Stashing](/docs/classic-api/stashing/introduction) is our process for handling the upload of large datasets. Break down your dataset into smaller, more manageable, pieces and [upload them to a single stash ID](/docs/classic-api/stashing/stash-data). Then, to reset a table's data from the stash, use the `$stashID` reference in the `rows` field instead of providing the data inline: ```json { "rows": { "$stashID": "20240215-job32" } } ``` </Accordion> <Accordion title="Batch update table rows"> This endpoint can be combined with the [Get Rows](/docs/classic-api/tables/get-rows) endpoint and [stashing](/docs/classic-api/stashing/introduction) to fetch the current table data, modify it, and then overwrite the table with the updated data: 1. Call the [Get Rows](/docs/classic-api/tables/get-rows) endpoint to fetch the current table data. Pass a reasonably high `limit` query parameter because you want to fetch all rows in as few requests as possible. 2. Modify the data as desired, and then stash the modified rows using the [Stash Data](/docs/classic-api/stashing/stash-data) endpoint. 3. If a `continuation` was returned in step 1, repeat steps 1-3, passing the `continuation` query parameter to [Get Rows](/docs/classic-api/tables/get-rows) until all rows have been fetched, modified, and stashed. 4. Finally, call this endpoint with same stash ID used in step 2. This will overwrite the table with the updated data: ```json { "rows": { "$stashID": "20240215-job32" } } ``` <Warning> **Risk of Data Loss** We strongly recommend you use the `If-Match` header to ensure the table is not modified between steps 1 and 4. See the [Data Versioning](/docs/classic-api/tables/data-versioning) guide for more information. </Warning> </Accordion> </AccordionGroup>

Authentication

AuthorizationBearer

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path parameters

tableIDstringRequired

Headers

x-glide-asynchronousenumOptional
Allow asynchronous processing, which will return a job ID. Note that this does not force asynchronouys processing. The caller must handle both synchronous and asynchronous responses.
Allowed values:
if-matchstringOptionalformat: "^"[0-9]+"$"

Query parameters

onSchemaErrorenumOptional
The action to take when the passed data does not match the table schema: - `abort`: Abort the entire operation and return an error. - `dropColumns`: Ignore the data that caused the error, and do not import those columns in the affected rows. - `updateSchema`: Update the schema as needed to add any missing columns or widen the data types of existing columns, and then import the data from them.
Allowed values:

Request

This endpoint expects an object or a list of maps from strings to any.
objectRequired
OR
A_collection_of_row_objectslist of maps from strings to anyRequired

A collection of row objects conforming to the schema of the table where keys are the column IDs and values are the column values:

1[
2 {
3 "fullName": "Alex Bard",
4 "invoiceDate": "2024-07-29T14:04:15.561Z",
5 "totalAmount": 34.50,
6 "amountPaid": 0
7 },
8 {
9 "fullName": "Alicia Hines",
10 "invoiceDate": "2023-06-15T10:30:00.000Z",
11 "totalAmount": 50.75,
12 "amountPaid": 20
13 }
14]

Response

dataobject

Errors

400
Bad Request Error
402
Payment Required Error
404
Not Found Error
412
Precondition Failed Error
422
Unprocessable Entity Error