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

# Bulk-updates item categories in a single transaction (full replace).

> Bulk PUT with all-or-nothing semantics. PUT is a full replace: every field on each item is written verbatim. Each item must include id and name; an omitted state defaults to active. state is nullable on the wire, but an explicit null or state="deleted" on any item is rejected (400) for the whole batch — use bulk DELETE /api/item-categories to delete. Duplicate ids in the batch are rejected. A batch with a genuinely missing id returns 404; if all ids resolve but one belongs to another organization the batch returns 403. Capped at 200 items per request.



## OpenAPI

````yaml https://service.my.delogue.com/openapi/external.json put /api/item-categories
openapi: 3.1.1
info:
  title: Delogue External API - (Production)
  description: Integration endpoints for Delogue API
  version: 1.0.0
servers:
  - url: >-
      http://ca-delogue-service-prod.bravepebble-62e34dbe.westeurope.azurecontainerapps.io/
security: []
tags:
  - name: SubSuppliers
  - name: StyleSupplierFacilities
  - name: StyleSkus
  - name: Styles
  - name: SampleRequests
  - name: StyleRelations
  - name: Style Prices
  - name: StyleItems
  - name: StyleFiles
  - name: StyleCustomFields
  - name: StyleContacts
  - name: StyleCategories
  - name: StyleCareInstructions
  - name: SizeRanges
  - name: Seasons
  - name: SampleTypes
  - name: Organizations
  - name: MeasurementCharts
  - name: Items
  - name: ItemCategories
  - name: Groups
  - name: Facilities
  - name: ComplianceCustomFields
  - name: ComplianceCategories
  - name: Color Groups
  - name: Colors
  - name: CareInstructions
  - name: CareInstructionMaterials
  - name: CareInstructionLayers
  - name: CareInstructionIcons
  - name: Brands
  - name: Barcodes
paths:
  /api/item-categories:
    put:
      tags:
        - ItemCategories
      summary: Bulk-updates item categories in a single transaction (full replace).
      description: >-
        Bulk PUT with all-or-nothing semantics. PUT is a full replace: every
        field on each item is written verbatim. Each item must include id and
        name; an omitted state defaults to active. state is nullable on the
        wire, but an explicit null or state="deleted" on any item is rejected
        (400) for the whole batch — use bulk DELETE /api/item-categories to
        delete. Duplicate ids in the batch are rejected. A batch with a
        genuinely missing id returns 404; if all ids resolve but one belongs to
        another organization the batch returns 403. Capped at 200 items per
        request.
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ItemCategoryBulkUpdateDto'
          text/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ItemCategoryBulkUpdateDto'
          application/*+json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ItemCategoryBulkUpdateDto'
        required: true
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiResponseOfListOfItemCategoryDto'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiResponseOfListOfItemCategoryDto'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiResponseOfListOfItemCategoryDto'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiErrorResponse'
        '403':
          description: Forbidden
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
        '409':
          description: Conflict
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApiBulkErrorResponse'
      security:
        - {}
components:
  schemas:
    ItemCategoryBulkUpdateDto:
      type: object
      properties:
        id:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          format: int64
        name:
          type:
            - 'null'
            - string
        state:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/ItemCategoryState'
      additionalProperties: false
    ApiResponseOfListOfItemCategoryDto:
      required:
        - status
        - code
        - data
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
        code:
          type: string
        data:
          type:
            - 'null'
            - array
          items:
            $ref: '#/components/schemas/ItemCategoryDto'
      additionalProperties: false
    ApiBulkErrorResponse:
      required:
        - status
        - code
        - error
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
        code:
          type: string
        error:
          $ref: '#/components/schemas/BulkErrorDetail'
      additionalProperties: false
    ApiErrorResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/ApiResponseStatus'
        code:
          type: string
        error:
          $ref: '#/components/schemas/ErrorWrapper'
      additionalProperties: false
    ItemCategoryState: {}
    ApiResponseStatus: {}
    ItemCategoryDto:
      type: object
      properties:
        id:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          format: int64
        name:
          type:
            - 'null'
            - string
        state:
          $ref: '#/components/schemas/ItemCategoryState'
        usedInItems:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          format: int32
        beginDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        properties:
          type: array
          items:
            type: string
      additionalProperties: false
    BulkErrorDetail:
      required:
        - operation
        - total_items
        - failed_items
        - summary
        - details
      type: object
      properties:
        operation:
          type: string
        total_items:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          format: int32
        failed_items:
          pattern: ^-?(?:0|[1-9]\d*)$
          type:
            - integer
            - string
          format: int32
        summary:
          type: string
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailDto'
      additionalProperties: false
    ErrorWrapper:
      type: object
      properties:
        details:
          type: array
          items:
            $ref: '#/components/schemas/ErrorDetailDto'
      additionalProperties: false
    ErrorDetailDto:
      required:
        - type
        - field
        - value
      type: object
      properties:
        type:
          type: string
        field:
          type:
            - 'null'
            - string
        value:
          type:
            - 'null'
            - string
      additionalProperties: false

````