> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # BulkUpdateDataItems # Package: cms # Namespace: DataItemService # Method link: https://dev.wix.com/docs/api-reference/business-solutions/cms/data-items/bulk-update-data-items.md ## Permission Scopes: Write Data Items: SCOPE.DC-DATA.WRITE ## Introduction Updates multiple items in a collection. This method replaces each specified data item's existing data with the payload provided in the request. Each item in the request must include an ID. If an item is found in the specified collection with the same ID, that item is updated. If the collection doesn't contain an item with that ID, the update fails. When an item is updated, its `data._updatedDate` field is changed to the current date and time. > **Note:** > After each item is updated, it only contains the fields included in the request. If the existing item has fields with values and those fields > aren't included in the updated item, their values are lost. --- ## REST API ### Schema ``` Method: bulkUpdateDataItems Description: Updates multiple items in a collection. This method replaces each specified data item's existing data with the payload provided in the request. Each item in the request must include an GUID. If an item is found in the specified collection with the same GUID, that item is updated. If the collection doesn't contain an item with that GUID, the update fails. When an item is updated, its `data._updatedDate` field is changed to the current date and time. > **Note:** > After each item is updated, it only contains the fields included in the request. If the existing item has fields with values and those fields > aren't included in the updated item, their values are lost. URL: https://www.wixapis.com/wix-data/v2/bulk/items/update Method: POST # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: dataCollectionId, dataItems Method parameters: param name: appOptions | type: appOptions | description: Additional parameters specific to the [Wix app collection](https://support.wix.com/en/article/cms-formerly-content-manager-working-with-wix-app-collections) you are querying. When querying the Wix Stores [Products collection](https://dev.wix.com/docs/develop-websites/articles/wix-apps/wix-e-commerce-stores/wix-stores-products-collection-fields.md), pass the following optional parameters: - `includeHiddenProducts`: Whether to include hidden products in the response. Default: `false`. - `includeVariants`: Whether to include product variants in the query. Default: `false`. param name: condition | type: Condition - name: filter | type: object | description: Filter, changes to item(s) will only apply if they satisfy this filter. Learn more about filters in [API Query Language](https://dev.wix.com/docs/rest/articles/get-started/api-query-language.md#filters). param name: dataCollectionId | type: dataCollectionId | description: GUID of the collection in which to update items. | required: true param name: dataItems | type: array | description: Data items to update. | required: true - name: id | type: string | description: Data item GUID. - name: data | type: object | description: Data item contents. Property-value pairs representing the data item's payload. When retrieving a data item, it also includes the following read-only fields: + `_id`: Item GUID. + `_createdDate`: Date and time the item was added to the collection. + `_updatedDate`: Date and time the item was last modified. When the item is first inserted, `_createdDate` and `_updatedDate` have the same value. + `_ownerId`: GUID of the user who created the item. Can be modified with site owner permissions. param name: publishPluginOptions | type: PublishPluginOptions - name: includeDraftItems | type: boolean | description: Whether to include draft items. When `true`, both published and draft items are affected. Default: `false`. param name: returnEntity | type: returnEntity | description: Whether to return the updated data items. When `true`, the `results` objects contain a `dataItem` field. Default: `false` Return type: BulkUpdateDataItemsResponse - name: results | type: array | description: Information about the updated items. - name: action | type: BulkActionType | description: Action attempted for the data item. - enum: UNKNOWN_ACTION_TYPE, INSERT, UPDATE, DELETE, PATCH - name: itemMetadata | type: ItemMetadata | description: Item metadata. - name: id | type: string | description: Item GUID. Does not appear if the item GUID is missing. For example, when item creation fails. - name: originalIndex | type: integer | description: Original index of the item in the array specified in the request. Use this to match items in the request with those in the response. - name: success | type: boolean | description: Whether the requested action was successful. When `false`, the `error` field is populated. - name: error | type: ApplicationError | description: In case of failure, the error details. - name: code | type: string | description: Error code. - name: description | type: string | description: Description of the error. - name: data | type: object | description: Data related to the error. - name: dataItem | type: DataItem | description: Updated data item. Returned if `returnEntity` is set to `true` and the action is successful. - name: id | type: string | description: Data item GUID. - name: dataCollectionId | type: string | description: GUID of the collection this item belongs to - name: data | type: object | description: Data item contents. Property-value pairs representing the data item's payload. When retrieving a data item, it also includes the following read-only fields: + `_id`: Item GUID. + `_createdDate`: Date and time the item was added to the collection. + `_updatedDate`: Date and time the item was last modified. When the item is first inserted, `_createdDate` and `_updatedDate` have the same value. + `_ownerId`: GUID of the user who created the item. Can be modified with site owner permissions. - name: bulkActionMetadata | type: BulkActionMetadata | description: Bulk action metadata. - name: totalSuccesses | type: integer | description: Number of items successfully processed. - name: totalFailures | type: integer | description: Number of items that couldn't be processed. ``` ### Examples ### Update multiple items: Check item revision numbers to guarantee data integrity. ```curl curl -X POST \ 'https://www.wixapis.com/wix-data/v2/bulk/items/update' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' \ -d '{ "dataCollectionId": "cities", "dataItems": [ { "id": "40877d18-c5fe-4ed5-b495-d84bb4c027bd", "data": { "state": "California", "year": 2022, "city": "Los Angeles", "population": 3800000, "revision": 12 } }, { "id": "6c38b4f7-7b8d-4702-9283-66a5889f8e17", "data": { "state": "California", "year": 2022, "city": "San Francisco", "population": 840000, "revision": 14 } } ], "condition": { "filter": { "$or": [ { "$and": [ { "_id": "40877d18-c5fe-4ed5-b495-d84bb4c027bd" }, { "revision": 12 } ] }, { "$and": [ { "_id": "6c38b4f7-7b8d-4702-9283-66a5889f8e17" }, { "revision": 14 } ] } ] } } }' ``` ### Update multiple items conditionally: Only update cities with at least 1M residents. ```curl curl -X POST \ 'https://www.wixapis.com/wix-data/v2/bulk/items/update' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' \ -d '{ "dataCollectionId": "cities", "dataItems": [ { "id": "40877d18-c5fe-4ed5-b495-d84bb4c027bd", "data": { "state": "California", "year": 2022, "city": "Los Angeles", "population": 3800000 } }, { "id": "6c38b4f7-7b8d-4702-9283-66a5889f8e17", "data": { "state": "California", "year": 2022, "city": "San Francisco", "population": 840000 } } ], "condition": { "filter": { "population": { "$gte": 1000000 } } } }' ``` ### Bulk update existing items and return updated items ```curl curl -X POST \ 'https://www.wixapis.com/wix-data/v2/bulk/items/update' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' \ -d '{ "dataCollectionId": "cities", "dataItems": [ { "id": "40877d18-c5fe-4ed5-b495-d84bb4c027bd", "data": { "state": "California", "year": 2022, "city": "Los Angeles", "population": 3800000 } }, { "id": "6c38b4f7-7b8d-4702-9283-66a5889f8e17", "data": { "state": "California", "year": 2022, "city": "San Francisco", "population": 840000 } } ], "returnEntity": true }' ``` ### Bulk update existing items ```curl curl -X POST \ 'https://www.wixapis.com/wix-data/v2/bulk/items/update' \ -H 'Content-Type: application/json' \ -H 'Authorization: ' \ -d '{ "dataCollectionId": "cities", "dataItems": [ { "id": "40877d18-c5fe-4ed5-b495-d84bb4c027bd", "data": { "state": "California", "year": 2022, "city": "Los Angeles", "population": 3800000 } }, { "id": "6c38b4f7-7b8d-4702-9283-66a5889f8e17", "data": { "state": "California", "year": 2022, "city": "San Francisco", "population": 840000 } } ] }' ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.cms.DataItemService.bulkUpdateDataItems(dataCollectionId, items, options) Description: Updates multiple items in a collection. This method replaces each specified data item's existing data with the payload provided in the request. Each item in the request must include an GUID. If an item is found in the specified collection with the same GUID, that item is updated. If the collection doesn't contain an item with that GUID, the update fails. When an item is updated, its `data._updatedDate` field is changed to the current date and time. > **Note:** > After each item is updated, it only contains the fields included in the request. If the existing item has fields with values and those fields > aren't included in the updated item, their values are lost. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: dataCollectionId, items Method parameters: param name: dataCollectionId | type: string | description: GUID of the collection in which to update items. | required: true param name: items | type: array | description: Data items to update. | required: true - name: _id | type: string | description: Data item GUID. - name: _createdDate | type: Date | description: Date and time the item was added to the collection. - name: _updatedDate | type: Date | description: Date and time the item was last modified. When the item is first inserted, `_createdDate` and `_updatedDate` have the same value. - name: _owner | type: string | description: GUID of the user who created the item. Can be modified with site owner permissions. param name: options | type: WixDataBulkUpdateOptions none - name: dataItems | type: array | description: Data items to update. - name: _id | type: string | description: Data item GUID. - name: data | type: object | description: Data item contents. Property-value pairs representing the data item's payload. When retrieving a data item, it also includes the following read-only fields: + `_id`: Item GUID. + `_createdDate`: Date and time the item was added to the collection. + `_updatedDate`: Date and time the item was last modified. When the item is first inserted, `_createdDate` and `_updatedDate` have the same value. + `_ownerId`: GUID of the user who created the item. Can be modified with site owner permissions. - name: suppressHooks | type: boolean | description: Whether to suppress data hooks. When `true`, data hooks typically triggered by this endpoint don't run. **Note:** This option can only be used in code that runs in [the Wix site backend](https://dev.wix.com/docs/develop-websites/articles/coding-with-velo/backend-code/about-the-site-backend.md). Default: `false` - name: appOptions | type: object | description: Additional parameters specific to the [Wix app collection](https://support.wix.com/en/article/cms-formerly-content-manager-working-with-wix-app-collections) you are querying. When querying the Wix Stores [Products collection](https://dev.wix.com/docs/develop-websites/articles/wix-apps/wix-e-commerce-stores/wix-stores-products-collection-fields.md), pass the following optional parameters: - `includeHiddenProducts`: Whether to include hidden products in the response. Default: `false`. - `includeVariants`: Whether to include product variants in the query. Default: `false`. - name: condition | type: Condition | description: Condition for updating the items. When a condition is provided, the items are only updated if the condition is met. - name: filter | type: object | description: Filter, changes to item(s) will only apply if they satisfy this filter. Learn more about filters in [API Query Language](https://dev.wix.com/docs/rest/articles/get-started/api-query-language.md#filters). - name: saveReferences | type: boolean | description: Whether to save multi-reference fields. When `true`, multi-reference fields in the data items will be updated to match the provided values, replacing any existing references. Multi-reference field values must be arrays of referenced item GUIDs (strings) or referenced items containing an `_id` field. Default: `false` - name: showDrafts | type: boolean | description: When `true`, operations include draft items. Read operations include draft items in their response, and write operations modify draft items. Return type: PROMISE - name: inserted | type: integer | description: Number of inserted items. - name: updated | type: integer | description: Number of updated items. - name: removed | type: integer | description: Number of removed items. - name: skipped | type: integer | description: Number of skipped items. - name: errors | type: array | description: List of errors. - name: message | type: string | description: Description of the error. - name: code | type: string | description: Error code. - name: originalIndex | type: integer | description: Index of the item within the request array. Allows for correlation between request and response items. - name: item | type: string | description: Failed item (or GUID in case of `bulkRemove()`). - name: insertedItemIds | type: array | description: List of GUIDs of inserted items. - name: updatedItemIds | type: array | description: List of GUIDs of updated items. - name: removedItemIds | type: array | description: List of GUIDs of removed items. ``` ### Examples ### bulkUpdate ```javascript import { items } from '@wix/data'; async function bulkUpdate(dataCollectionId,items,options) { const response = await items.bulkUpdate(dataCollectionId,items,options); }; ``` ### bulkUpdate (with elevated permissions) ```javascript import { items } from '@wix/data'; import { auth } from '@wix/essentials'; async function myBulkUpdateMethod(dataCollectionId,items,options) { const elevatedBulkUpdate = auth.elevate(items.bulkUpdate); const response = await elevatedBulkUpdate(dataCollectionId,items,options); } ``` ### bulkUpdate (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { items } from '@wix/data'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { items }, // Include the auth strategy and host as relevant }); async function bulkUpdate(dataCollectionId,items,options) { const response = await myWixClient.items.bulkUpdate(dataCollectionId,items,options); }; ``` ---