---
title: "Bulk Update Inventory Products (BETA)"
method: PUT
path: "/products/{incomingIdentifier}/bulk"
tags: ["Product Inventory"]
---

# Bulk Update Inventory Products (BETA)

`PUT /products/{incomingIdentifier}/bulk`

## Request

- Base URL: `https://resources.uk.eagleeye.com`
- URL: `https://resources.uk.eagleeye.com/products/{incomingIdentifier}/bulk`
- Auth: none declared. Required headers: `X-EES-AUTH-CLIENT-ID`, `X-EES-AUTH-HASH`

This API endpoint allows the calling unit to update multiple inventory products for their child unit as specified by its `incomingIdentifier`. The request body must be a non-empty array of up to 100 products. The endpoint returns 200 when all requested products are updated, 207 when update is partially successful, and 400 when all requested products fail or the request payload does not satisfy schema validation.

## Path parameters

- `incomingIdentifier` string, string, required

## Headers

- `Accept-Encoding` '''' | ''gzip'' | ''deflate'' | ''gzip,deflate'' | ''deflate,gzip'', string
- `Connection` 'keep-alive' | 'close', string
- `Content-Type` string, string
- `X-EES-AUTH-CLIENT-ID` string, string, required
- `X-EES-AUTH-HASH` string, string, required
- `X-EES-TRANSACTION-ID` string, string

## Request body

- InventoryProductPostRequestEntity[]: A non-empty batch of products to update.
  - `id` string, required: The unique identifier of the inventory product.
  - `groupId` string, required: The identifier of the group this product belongs to.
  - `name` string: The display name of the product.
  - `description` string: An optional description of the product.
  - `imageUrl` string, nullable: URL of the product image.
  - `supplierId` string: The identifier of the product supplier.
  - `supplierName` string: The display name of the product supplier.
  - `brand` string: The brand of the product.
  - `brandType` string: The brand type classification of the product.
  - `lastSoldDate` string, ees-date-time, nullable: The date and time the product was last sold (ISO 8601 / ATOM format).
  - `tags` string[]: A list of tags associated with the product.

## Response `200`

All requested products were updated successfully.

- InventoryProductsBulkUpdateResponseEntity
  - `successful` object
    - `total` integer: Total number of products successfully updated.
    - `results` InventoryProductEntity[]: Updated inventory products.
      - `id` string: The unique identifier of the inventory product.
      - `groupId` string: The identifier of the group this product belongs to.
      - `name` string: The display name of the product.
      - `description` string: An optional description of the product.
      - `imageUrl` string, nullable: URL of the product image.
      - `supplierId` string: The identifier of the product supplier.
      - `supplierName` string: The display name of the product supplier.
      - `brand` string: The brand of the product.
      - `brandType` string: The brand type classification of the product.
      - `lastSoldDate` string, ees-date-time, nullable: The date and time the product was last sold (ISO 8601 / ATOM format).
      - `tags` string[]: A list of tags associated with the product.
      - `group` InventoryProductGroupExpandedEntity
        - `id` string: The unique identifier of the group.
        - `name` string: The display name of the group.
        - `type` string: The group type.
        - `description` string: A description of the group.
        - `parentId` string, nullable: The identifier of the parent group. Null for root groups.
        - `parent` InventoryProductGroupExpandedEntity (recursive)
  - `failed` object
    - `total` integer: Total number of products that could not be updated.
    - `results` object[]: Errors for products that could not be updated.
      - `id` string: The product identifier that failed update.
      - `errorCode` string: Error code for the failed update.
      - `errorMessage` string: Human readable error message.

## Other responses

- `207`: Some requested products were updated while others failed.
- `400`: Request failed due to schema validation errors or all submitted products failing update.
- `401`: EES AIR Refuse to process that particular Request due to Authentication error. This could be caused by missing mandatory AUTH header(s), invalid Hash calculation, invalid or inactive API Key used, etc
- `403`: EES AIR Refuse to process that particular Request due to Request Authorization error(s). This indicates that used API Key has not got required permissions to perform this operation.
- `404`: EES AIR Refuse to process that particular Request as requested/referenced resource could not be found.
- `415`: EES AIR is not able to understand that request due to not supported `Content-Type` value.
- `429`: EES AIR refuses to process that particular Request as Client's API Requests Limit was exceeded.
- `500`: EES AIR refuses to process that particular Request due to Unexpected Server Error.
- `503`: EES AIR refuses to process that particular Request due to Service(s) being Unavailable (i.e. Scheduled Maintenance)
- `504`: EES AIR refuses to process that particular Request due to Networking Issues

---

[API](https://skmtc.dev/eagleeye/apis/resource-api.md) - [All operations](https://skmtc.dev/eagleeye/apis/resource-api/llms.txt) - [OpenAPI document](https://skmtc.dev/eagleeye/apis/resource-api/revisions/10217d37fdc5?raw)
