BatchUpsertTableRows - Amazon Honeycode


The BatchUpsertTableRows API allows you to upsert one or more rows in a table. The upsert operation takes a filter expression as input and evaluates it to find matching rows on the destination table. If matching rows are found, it will update the cells in the matching rows to new values specified in the request. If no matching rows are found, a new row is added at the end of the table and the cells in that row are set to the new values specified in the request.

You can specify the values to set in some or all of the columns in the table for the matching or newly appended rows. If a column is not explicitly specified for a particular row, then that column will not be updated for that row. To clear out the data in a specific cell, you need to set the value as an empty string ("").

Request Syntax

POST /workbooks/workbookId/tables/tableId/rows/batchupsert HTTP/1.1 Content-type: application/json { "clientRequestToken": "string", "rowsToUpsert": [ { "batchItemId": "string", "cellsToUpdate": { "string" : { "fact": "string", "facts": [ "string" ] } }, "filter": { "contextRowId": "string", "formula": "string" } } ] }

URI Request Parameters

The request uses the following URI parameters.


The ID of the table where the rows are being upserted.

If a table with the specified id could not be found, this API throws ResourceNotFoundException.

Length Constraints: Fixed length of 36.

Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

Required: Yes


The ID of the workbook where the rows are being upserted.

If a workbook with the specified id could not be found, this API throws ResourceNotFoundException.

Length Constraints: Fixed length of 36.

Pattern: [0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}

Required: Yes

Request Body

The request accepts the following data in JSON format.


The request token for performing the update action. Request tokens help to identify duplicate requests. If a call times out or fails due to a transient error like a failed network connection, you can retry the call with the same request token. The service ensures that if the first call using that request token is successfully performed, the second call will not perform the action again.

Note that request tokens are valid only for a few minutes. You cannot use request tokens to dedupe requests spanning hours or days.

Type: String

Length Constraints: Minimum length of 32. Maximum length of 64.

Pattern: ^(?!\s*$).+

Required: No


The list of rows to upsert in the table. Each item in this list needs to have a batch item id to uniquely identify the element in the request, a filter expression to find the rows to update for that element and the cell values to set for each column in the upserted rows. You need to specify at least one item in this list.

Note that if one of the filter formulas in the request fails to evaluate because of an error or one of the column ids in any of the rows does not exist in the table, then the request fails and no updates are made to the table.

Type: Array of UpsertRowData objects

Required: Yes

Response Syntax

HTTP/1.1 200 Content-type: application/json { "failedBatchItems": [ { "errorMessage": "string", "id": "string" } ], "rows": { "string" : { "rowIds": [ "string" ], "upsertAction": "string" } }, "workbookCursor": number }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.


The list of batch items in the request that could not be updated or appended in the table. Each element in this list contains one item from the request that could not be updated in the table along with the reason why that item could not be updated or appended.

Type: Array of FailedBatchItem objects

Array Members: Minimum number of 0 items. Maximum number of 100 items.


A map with the batch item id as the key and the result of the upsert operation as the value. The result of the upsert operation specifies whether existing rows were updated or a new row was appended, along with the list of row ids that were affected.

Type: String to UpsertRowsResult object map

Key Length Constraints: Minimum length of 1. Maximum length of 64.

Key Pattern: ^(?!\s*$).+


The updated workbook cursor after updating or appending rows in the table.

Type: Long


For information about the errors that are common to all actions, see Common Errors.


You do not have sufficient access to perform this action. Check that the workbook is owned by you and your IAM policy allows access to the resource in the request.

HTTP Status Code: 403


There were unexpected errors from the server.

HTTP Status Code: 500


The request timed out.

HTTP Status Code: 504


A Workbook, Table, App, Screen or Screen Automation was not found with the given ID.

HTTP Status Code: 404


The request caused service quota to be breached.

HTTP Status Code: 402


Remote service is unreachable.

HTTP Status Code: 503


Tps(transactions per second) rate reached.

HTTP Status Code: 429


Request is invalid. The message in the response contains details on why the request is invalid.

HTTP Status Code: 400

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: