**Source URL:** https://limited.veevavault.dev/qualityone/vault-api/api-reference/22.1/vault-objects/update-object-records.md

# Update Object Records



Update Object Records in bulk. You can use this endpoint to update user records (`user__sys`).

* The maximum input size is 10 MB.

* The values in the input must be UTF-8 encoded.

* CSVs must follow the standard RFC 4180 format, with some [exceptions](/vault-api/references/csv-rfc-deviations).

* The maximum batch size is 500.

<Endpoint path="/api/{version}/vobjects/{object_name}" method="PUT"></Endpoint>

## Headers {#headers}

<FieldTable>
| Name | Description |
| --- | --- |
| `Content-Type` | `text/csv` or `application/json` |
| `Accept` | `application/json` (default) or `text/csv` |
</FieldTable>

## URI Path Parameters {#uri-path-parameters}

<FieldTable>
| Name | Description |
| --- | --- |
| `{object_name}` | The name of the object, for example, `product__v`. |
</FieldTable>

## Body Parameters {#body-parameters}

Include parameters as JSON or CSV. The following shows the required standard fields, but an Admin may set other standard or custom object fields as required in your Vault.

<FieldTable>
| Name | Description |
| --- | --- |
| `id` | The object record ID. You can only update an object record ID once per request. If you provide duplicate IDs, the bulk update fails any duplicate records. Instead of `id`, you can use a unique field defined by the `idParam` query parameter. |
| `{field_name}` | The field name to update on this object record. Use the [Object Metadata API](/vault-api/api-reference/22.1/vault-objects/retrieve-object-metadata) to retrieve all fields configured on objects. You can update any field with `editable: true`. |
</FieldTable>

## Query Parameters {#query-parameters}

<FieldTable>
| Name | Description |
| --- | --- |
| `idParam` | Optional: To identify objects in your input by a unique field, add `idParam={field_name}` to the request endpoint. You can use any object field that has `unique` set to `true` in the object metadata, with the exception of picklists. For example, `idParam=external_id__v`. |
</FieldTable>
<DownloadButton href="/sample-files/vault-update-object-records-sample-csv-input.csv" label="Download Input File"></DownloadButton>
**Additional Notes**:

* If an object is a parent in a parent-child relationship with another object, you cannot update its `status__v` field in bulk.

* If an object has a field default configured, the value you use for that field overrides the default. Learn more about the [order of operations for field defaults in Vault Help](https://platform.veevavault.help/en/lr/42778).

* If Dynamic Security (Custom Sharing Rules) is configured on an object, you can add or remove users and groups on manually assigned roles. For example, `editor__v.users`. This will overwrite any users currently in the role.

* You can also use this call to complete user tasks by setting the `complete__v` field to `true`.

* The **EDIT** permission is required on the object record when updating role assignments. This endpoint only supports updating standard roles (for example, viewer, editor, owner) and not custom roles. We recommend using the [Assign Users & Groups to Roles on Object Records](/vault-api/api-reference/22.1/vault-objects/object-roles/assign-users-groups-to-roles-on-object-records) and the [Remove Users & Groups from Roles on Object Records](/vault-api/api-reference/22.1/vault-objects/object-roles/remove-users-groups-from-roles-on-object-records) endpoints, which support all roles with better performance.

* When you create, add, or update `user__sys`, Vault synchronizes those changes with users across all Vaults to which that user is a member. This includes cross-domain Vaults.

* To use this endpoint to update checkbox fields (*Yes/No* fields with the *Show as checkbox* setting) to a `null` value, you must use API v24.3+.

## Request {#request}

<CodeExample title="">
```
curl -X PUT -H "Authorization: {SESSION_ID}" \
-H "Content-Type: text/csv" \
-H "Accept: text/csv" \
--data-binary @"C:\Vault\Object Records\update_object_records.csv" \
https://myvault.veevavault.com/api/v22.1/vobjects/product__v

```
</CodeExample>

## Response {#response}

<CodeExample title="">
```
{
   "responseStatus": "SUCCESS",
   "data": [
       {
           "responseStatus": "SUCCESS",
           "data": {
               "id": "00P000000000602",
               "url": "/api/v22.1/vobjects/product__v/00P000000000602"
           }
       },
       {
           "responseStatus": "SUCCESS",
           "data": {
               "id": "00P00000000K001",
               "url": "/api/v22.1/vobjects/product__v/00P00000000K001"
           }
       },
       {
           "responseStatus": "FAILURE",
           "errors": [
               {
                   "type": "INVALID_DATA",
                   "message": "The resource [00P00000000Q007] does not exist"
               }
           ]
       }
   ]
}

```
</CodeExample>

## Response Details {#response-details}

Vault returns a `responseStatus` for the request:

* `SUCCESS`: This request executed successfully. Individual records may be failures.

* `FAILURE`: This request failed to execute. For example, an invalid `sessionId`.

On `SUCCESS`, Vault returns a `responseStatus` for each individual record input. The response status of each record may be one of the following:

* `SUCCESS`: Vault successfully evaluated this record. This includes records that process with no changes (no-op).

* `FAILURE`: This record could not be evaluated and Vault made no field value changes. For example, an invalid or duplicate record ID.

##### About No-Ops {#about-no-ops}

An API call which causes no operation to occur is called a no-op. For example, a call to update values on an object record which already has all of the requested values. The call succeeds and no operation occurs.

When the API processes a record with no changes, Vault:

* updates the record’s `last_modified_date`.

* does not create an entry in the object record audit history.

* does not execute [SDK triggers](/vault-sdk/entry-points/triggers/).



---

**Previous:** [Create Object Records](/qualityone/vault-api/api-reference/22.1/vault-objects/create-object-records)  
**Next:** [Delete Object Records](/qualityone/vault-api/api-reference/22.1/vault-objects/delete-object-records)