# Put Object

Updates a record of a given type by fully replacing its content.

Unlike [Patch Object](https://docs.contextual.io/documentation-and-resources/components-and-data/flows/node-reference/object/patch-object), Put expects a complete replacement object for the record. Any fields you omit from the input are omitted from the stored record after the update.

## Config tab

* **Name** - optional display name for the node in the editor
* **Config** - the native-object config used to access your Object Types
* **Type Id** - the Object Type to update
* **Object Id** - the record identifier to replace
* **Input** - the message or context path that contains the full replacement object
* **Concurrency control** - optional optimistic-locking toggle
* **Hash** - the message path that contains the record hash when concurrency control is enabled
* **Output** - the message path that receives the updated record
* **Response** - the message path that receives response metadata

`Type Id`, `Object Id`, and `Input` use the same typed-input pattern found on other Object nodes. In most flows, these values come from direct values, `msg`, or agent environment variables.

## Concurrency control

The optional **Concurrency control** setting enables optimistic locking by record hash.

When enabled, the node reads a hash value from the configured message path and sends it with the request. If the record has changed since that hash was captured, the update fails with a `412 Precondition Failed` response instead of silently overwriting a newer version.

The hash you pass here typically comes from a previously retrieved record's `_metaData.hash`. See [Automatic Record Metadata](https://docs.contextual.io/documentation-and-resources/components-and-data/object-types/object-type-details/data-schema/automatic-metadata).

## Source tab

The **Source** tab controls how the node behaves when it is processing a source stream rather than a single message.

* **Parallelism** can be set to `None`, `Ordered`, or `Unordered`
* `None` processes source items sequentially
* `Ordered` processes source items concurrently up to **Max** while preserving output order
* `Unordered` processes source items concurrently up to **Max** and emits results as they finish

These settings only apply when the node is operating on a source.
