> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mercurjs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Batch Offer Inventory Items

> Link, update, or unlink inventory items on an offer.

Manages the inventory items backing an offer in one request and returns the refreshed offer.

## Path parameters

<ParamField path="id" type="string" required>
  The offer's ID.
</ParamField>

## Body parameters

<ParamField body="create" type="object[]">
  Inventory items to link to the offer.

  <Expandable title="properties">
    <ParamField body="inventory_item_id" type="string" required>ID of an existing inventory item.</ParamField>
    <ParamField body="required_quantity" type="number" default="1">Units consumed per sale; positive integer.</ParamField>
  </Expandable>
</ParamField>

<ParamField body="update" type="object[]">
  Existing links to update.

  <Expandable title="properties">
    <ParamField body="inventory_item_id" type="string" required>ID of the linked inventory item.</ParamField>
    <ParamField body="required_quantity" type="number" required>New units consumed per sale; positive integer.</ParamField>
  </Expandable>
</ParamField>

<ParamField body="delete" type="string[]">
  Inventory item IDs to unlink from the offer.
</ParamField>

## Response

<ResponseField name="created" type="object[]">
  Links created by this request.
</ResponseField>

<ResponseField name="updated" type="object[]">
  Links updated by this request.
</ResponseField>

<ResponseField name="deleted" type="string[]">
  Inventory item IDs unlinked by this request.
</ResponseField>

<ResponseField name="offer" type="object">
  <Expandable title="properties">
    <ResponseField name="id" type="string">The offer's ID.</ResponseField>
    <ResponseField name="sku" type="string">The seller's SKU for the listing.</ResponseField>
    <ResponseField name="inventory_items" type="object[]">The offer's inventory items after the batch, with `id`, `inventory_item_id`, `required_quantity`, and `sku`.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'http://localhost:9000/vendor/offers/offer_01HXYZ/inventory-items/batch' \
    -H 'Authorization: Bearer <token>' \
    -H 'x-seller-id: <seller_id>' \
    -H 'Content-Type: application/json' \
    -d '{
      "create": [{ "inventory_item_id": "iitem_01HABC", "required_quantity": 2 }],
      "update": [{ "inventory_item_id": "iitem_01HXYZ", "required_quantity": 1 }],
      "delete": ["iitem_01HDEF"]
    }'
  ```

  ```ts JS Client theme={null}
  const { offer, created, updated, deleted } =
    await client.vendor.offers.$id.inventoryItems.batch.mutate({
      $id: "offer_01HXYZ",
      create: [{ inventory_item_id: "iitem_01HABC", required_quantity: 2 }],
      update: [{ inventory_item_id: "iitem_01HXYZ", required_quantity: 1 }],
      delete: ["iitem_01HDEF"],
    })
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "created": [
      { "inventory_item_id": "iitem_01HABC", "required_quantity": 2 }
    ],
    "updated": [
      { "inventory_item_id": "iitem_01HXYZ", "required_quantity": 1 }
    ],
    "deleted": ["iitem_01HDEF"],
    "offer": {
      "id": "offer_01HXYZ",
      "sku": "ACME-SHIRT-M",
      "inventory_items": [
        { "inventory_item_id": "iitem_01HXYZ", "required_quantity": 1 },
        { "inventory_item_id": "iitem_01HABC", "required_quantity": 2 }
      ]
    }
  }
  ```
</ResponseExample>
