openapi: 3.0.0
info:
  title: Composite Items
  description: A form or version of an composite item that differs in some respect from other forms of the same or from a standard. You can create your composite items by associating multiple items and their respective quantities.
  contact: {}
  version: 1.0.0
servers:
  - url: https://www.zohoapis.com/inventory/v1
    description: API Endpoint
tags:
  - name: compositeitems
    description: CompositeItems Module
paths:
  /compositeitems:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: create_composite_item
      summary: Creating a Composite Item
      description: A new composite item can be created after creating items that we want to associcate with composite item. User can attach image for composite item by calling Different API 'https://www.zohoapis.com/inventory/v1/compositeitems/{composite_item_id}/image', passing form-data parameter image i.e. -F image=bag_s.jpg
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/creating-a-composite-item-request'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/creating-a-composite-item-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    get:
      tags:
        - compositeitems
      operationId: list_composite_items
      summary: List All Composite Items
      description: List of all composite items.
      parameters:
        - name: page
          in: query
          description: Page Number
          required: false
          schema:
            type: integer
          example: 1
        - name: per_page
          in: query
          description: Items to be displayed per page
          required: false
          schema:
            type: integer
          example: 25
        - name: sort_column
          in: query
          description: 'column to be used for sorting. Allowed values: <code>name</code>,<code>sku</code>,<code>rate</code>,<code>tax_name</code>,<code>purchase_rate</code>,<code>created_time</code>,<code>last_modified_time</code>,<code>reorder_level</code>'
          required: false
          schema:
            type: string
          example: ''
        - name: sort_order
          in: query
          description: order used for sorting
          required: false
          schema:
            type: string
          example: A
        - name: filter_by
          in: query
          description: 'Filter items by status. Allowed values: <code>Status.All</code>,<code>Status.Active</code>,<code>Status.Inactive</code>,<code>Status.Lowstock</code>,<code>Status.Unmapped</code>,<code>Source.Crm</code>,<code>ComboType.Assembly</code>,<code>ComboType.Kit</code>'
          required: false
          schema:
            type: string
          example: ''
        - name: usestate
          in: query
          description: Whether current filter needs to be saved
          required: false
          schema:
            type: boolean
          example: true
        - name: response_option
          in: query
          description: response format number
          required: false
          schema:
            type: integer
          example: 0
        - name: search_text
          in: query
          description: Search composite items by name or other attributes.
          required: false
          schema:
            type: string
        - name: name
          in: query
          description: Search composite items by exact name.
          required: false
          schema:
            type: string
        - name: name_contains
          in: query
          description: Search composite items where name contains the given value.
          required: false
          schema:
            type: string
        - name: name_startswith
          in: query
          description: Search composite items where name starts with the given value.
          required: false
          schema:
            type: string
        - name: sku
          in: query
          description: Search composite items by exact SKU.
          required: false
          schema:
            type: string
        - name: sku_contains
          in: query
          description: Search composite items where SKU contains the given value.
          required: false
          schema:
            type: string
        - name: status
          in: query
          description: 'Filter by status. Allowed values: <code>all</code>, <code>active</code>, <code>inactive</code>.'
          required: false
          schema:
            type: string
        - name: category_id
          in: query
          description: Filter composite items by category ID.
          required: false
          schema:
            type: string
        - name: warehouse_id
          in: query
          description: Filter composite items by warehouse ID.
          required: false
          schema:
            type: string
        - name: tax_id
          in: query
          description: Filter composite items by tax ID.
          required: false
          schema:
            type: string
        - name: last_modified_time
          in: query
          description: Filter composite items modified after the given date and time in UTC format.
          required: false
          schema:
            type: string
        - name: combo_type
          in: query
          description: 'Filter by composite item type. Allowed values: <code>assembly</code>, <code>kit</code>.'
          required: false
          schema:
            type: string
        - name: account_id
          in: query
          description: Filter composite items by sales account ID.
          required: false
          schema:
            type: string
        - name: purchase_account_id
          in: query
          description: Filter composite items by purchase account ID.
          required: false
          schema:
            type: string
        - name: location_id
          in: query
          description: Filter composite items by location ID.
          required: false
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/list-all-composite-items-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.READ
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /compositeitems/{composite_item_id}:
    x-mcp-group:
      - Composite Items
    get:
      tags:
        - compositeitems
      operationId: get_composite_item
      summary: Retrieving a Composite Item
      description: Retrieving details of an existing compostie item.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/retrieving-a-composite-item-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.READ
    put:
      tags:
        - compositeitems
      operationId: update_composite_item
      summary: Updating a composite item
      description: Updating details of an existing composite item.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/updating-a-composite-item-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/updating-a-composite-item-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.UPDATE
    delete:
      tags:
        - compositeitems
      operationId: delete_composite_item
      summary: Deleting a Composite Item
      description: Deleting an existing Composite Item.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/deleting-a-composite-item-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.DELETE
    parameters:
      - name: composite_item_id
        in: path
        required: true
        description: Unique identifier of the composite item.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /compositeitems/{composite_item_id}/active:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: mark_composite_item_active
      summary: Mark as Active
      description: Changing status of an existing composite item to active.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/mark-as-active-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    parameters:
      - name: composite_item_id
        in: path
        required: true
        description: Unique identifier of the composite item.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /compositeitems/{composite_item_id}/inactive:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: mark_composite_item_inactive
      summary: Mark as Inactive
      description: Changing status of an existing composite item to inactive.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/mark-as-inactive-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    parameters:
      - name: composite_item_id
        in: path
        required: true
        description: Unique identifier of the composite item.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /compositeitems/{composite_item_id}/image:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: upload_composite_item_image
      summary: Upload Composite Item Images
      description: 'Uploads an image for a composite item. Accepted image formats: <code>gif</code>, <code>png</code>, <code>jpeg</code>, <code>jpg</code>, <code>bmp</code>, <code>webp</code>. Maximum file size is 7 MB.'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                image:
                  type: string
                  format: binary
                  description: Image file to upload.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/upload-composite-item-image-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    delete:
      tags:
        - compositeitems
      operationId: delete_composite_item_image
      summary: Delete Composite Item Image
      description: Deletes the images associated with a composite item.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete-composite-item-image-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.DELETE
    parameters:
      - name: composite_item_id
        in: path
        required: true
        description: Unique identifier of the composite item.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /bundles:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: create_assemblies
      summary: Create Assemblies
      description: Assemblies is the technique of putting together different components in desired quantities to produce a single commodity. These components could be goods, services and other non-inventory items of your choice.
      parameters:
        - name: ignore_auto_number_generation
          in: query
          description: Ignore auto-generation of reference number. If <code>true</code>, the reference number provided in the request body is used as-is.
          required: false
          schema:
            type: boolean
          example: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/create-bundle-request'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/create-bundle-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    get:
      tags:
        - compositeitems
      operationId: list_assemblies
      summary: Assemblies History
      description: List of all Assemblies of a given composite item.
      parameters:
        - name: composite_item_id
          in: query
          description: Unique ID generated for the composite item by the server. This is used as identifier
          required: true
          schema:
            type: string
          example: 504366000000053250
        - name: item_id
          in: query
          description: Filter assemblies by item ID.
          required: false
          schema:
            type: string
        - name: warehouse_id
          in: query
          description: Filter assemblies by warehouse ID.
          required: false
          schema:
            type: string
        - name: filter_by
          in: query
          description: 'Filter assemblies by date or status. Allowed values: <code>WorkOrderDate.All</code>, <code>WorkOrderDate.Today</code>, <code>WorkOrderDate.ThisWeek</code>, <code>WorkOrderDate.ThisMonth</code>, <code>WorkOrderDate.ThisQuarter</code>, <code>WorkOrderDate.ThisYear</code>, <code>Status.All</code>, <code>Status.Pending</code>, <code>Status.Built</code>, <code>Status.Confirmed</code>.'
          required: false
          schema:
            type: string
          example: Status.All
        - name: sort_column
          in: query
          description: 'Column used for sorting. Allowed values: <code>date</code>, <code>total</code>, <code>created_time</code>, <code>last_modified_time</code>, <code>reference_number</code>.'
          required: false
          schema:
            type: string
          example: created_time
        - name: sort_order
          in: query
          description: 'Order used for sorting. Allowed values: <code>A</code> for ascending, <code>D</code> for descending.'
          required: false
          schema:
            type: string
          example: D
        - name: search_text
          in: query
          description: Search assemblies by keyword.
          required: false
          schema:
            type: string
        - name: location_id
          in: query
          description: Filter assemblies by location ID.
          required: false
          schema:
            type: string
        - name: project_id
          in: query
          description: Filter assemblies by project ID.
          required: false
          schema:
            type: string
        - name: reference_number
          in: query
          description: Search assemblies by exact reference number.
          required: false
          schema:
            type: string
        - name: reference_number_contains
          in: query
          description: Search assemblies where reference number contains the given value.
          required: false
          schema:
            type: string
        - name: date_start
          in: query
          description: Filter assemblies with date on or after the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
        - name: date_end
          in: query
          description: Filter assemblies with date on or before the given date (yyyy-mm-dd).
          required: false
          schema:
            type: string
            format: date
        - name: status
          in: query
          description: 'Filter assemblies by status. Allowed values: <code>draft</code>, <code>confirmed</code>, <code>bundled</code>.'
          required: false
          schema:
            type: string
        - name: page
          in: query
          description: Page number to be fetched. Default value is 1.
          required: false
          schema:
            type: integer
            default: 1
          example: 1
        - name: per_page
          in: query
          description: Number of records to be fetched per page. Default value is 200.
          required: false
          schema:
            type: integer
            default: 200
          example: 200
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bundling-history-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.READ
    parameters:
      - $ref: '#/components/parameters/organization_id'
  /bundles/{bundle_id}:
    x-mcp-group:
      - Composite Items
    get:
      tags:
        - compositeitems
      operationId: get_assembly
      summary: Retrieve Assemblies
      description: Fetches the details for an existing Assemblies.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/retrieve-bundle-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.READ
    put:
      tags:
        - compositeitems
      operationId: update_assembly
      summary: Update an Assembly
      description: Updates the details of an existing assembly.
      parameters:
        - name: ignore_auto_number_generation
          in: query
          description: Ignore auto-generation of reference number. If <code>true</code>, the reference number provided in the request body is used as-is.
          required: false
          schema:
            type: boolean
          example: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/update-bundle-request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/update-bundle-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.UPDATE
    delete:
      tags:
        - compositeitems
      operationId: delete_assembly
      summary: Delete Assemblies
      description: Deletes an existing Assemblies from Zoho Inventory.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/delete-bundle-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.DELETE
    parameters:
      - name: bundle_id
        in: path
        required: true
        description: Unique identifier of the bundle.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /bundles/{bundle_id}/bundled:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: mark_assembly_as_built
      summary: Mark Assembly as Assembled
      description: Marks an existing assembly as built, indicating that the composite item has been assembled from its components.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/mark-assembly-as-built-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    parameters:
      - name: bundle_id
        in: path
        required: true
        description: Unique identifier of the bundle.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
  /bundles/{bundle_id}/confirmed:
    x-mcp-group:
      - Composite Items
    post:
      tags:
        - compositeitems
      operationId: mark_assembly_as_confirmed
      summary: Mark Assembly as Confirmed
      description: Marks an existing assembly as confirmed.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/mark-assembly-as-confirmed-response'
      deprecated: false
      security:
        - Zoho_Auth:
            - ZohoInventory.compositeitems.CREATE
    parameters:
      - name: bundle_id
        in: path
        required: true
        description: Unique identifier of the bundle.
        schema:
          type: string
        example: 504366000000053250
      - $ref: '#/components/parameters/organization_id'
components:
  parameters:
    organization_id:
      name: organization_id
      description: ID of the organization
      in: query
      required: true
      schema:
        type: string
      example: '10234695'
  schemas:
    gendoc-attributes-schema:
      $ref: '#/components/schemas/composite_item'
    name:
      description: Name of the composite item
      type: string
      example: Combo of Apple IPhone and Smartwatch
    composite_item_name:
      description: Name of the composite item
      type: string
      example: Combo of Apple IPhone and Smartwatch
    sku:
      description: Stock Keeping Unit value of the item. It should be unique throughout the product
      type: string
      example: SKUIS
    composite_item_sku:
      description: Stock Keeping Unit value of the composite item. It should be unique throughout the product
      type: string
      example: SKUIS
    unit:
      description: Unit of Item
      type: string
      example: units
    reference_number:
      description: Reference number for the Assemblies.
      type: string
      example: REF-B-00005
    description:
      description: Sample Description.
      type: string
      example: Just a sample description
    purchase_description:
      description: Purchase description of the item
      type: string
      example: Composite item purchase description
    composite_item_id:
      description: Unique ID generated for the composite item by the server. This is used as identifier
      type: string
      example: 504366000000053250
    bundle_id:
      description: Unique ID generated for the Assemblies by the server. This is used as identifier
      type: string
      example: 504366000000053250
    item_id:
      description: Unique ID generated by the server for the Item. This is used as an identifier.
      type: string
      example: 4815000000044208
    rate:
      description: Selling price of the item
      type: number
      format: double
      example: 85000
    pricebook_rate:
      description: Price list applied on the item's selling price.
      type: number
      format: double
      example: 85000
    purchase_rate:
      description: Buying price of the item
      type: number
      format: double
      example: 30000
    initial_stock:
      description: Initial stock of item
      type: number
      format: double
      example: 2
    initial_stock_rate:
      description: Average purchase price of initial stock. This is required for FIFO cost lot tracking and inventory valuation
      type: number
      format: double
      example: 30000
    upc:
      description: Unique Product Code, 12 digit unique code of the item
      type: string
      example: 746325287436
    ean:
      description: European Article Number, 13 digit barcode number of the item
      type: string
      example: 5789414385764
    isbn:
      description: International Standard Book Number, 13 digit unique commercial book identifier barcode of the item
      type: string
      example: 368302334
    part_number:
      description: MPN - Manufacturing Part Number, unambiguously identifies a part design
      type: string
      example: JHFKE7GK7
    status:
      description: Status of the Item
      type: string
      example: active
    is_combo_product:
      description: Defines whether the item is composite or not <code>true for composite items</code>
      type: boolean
      example: true
    item_type:
      description: Type of item <code>Always inventory</code>
      type: string
      example: inventory
    is_taxable:
      description: To check if the item is taxable or not <code>true if the item is taxable, else false </code>
      type: boolean
      example: true
    reorder_level:
      description: Reorder point of the item
      type: number
      format: double
      example: 1
    vendor_id:
      description: Unique ID generated by the server for preferred vendor to buy this composite item
      type: string
      example: 504366000000053250
    vendor_name:
      description: Name of the preferred vendor
      type: string
      example: Mr. vendor combo
    line_items:
      description: A assemblies can contain multiple line items. Each line item contains <code>item_id</code>,<code>name</code>,<code>description</code>,<code>quantity_consumed</code>,<code>unit</code>,<code>account_id</code>,<code>location_id</code>.
      type: array
      items:
        type: object
        properties:
          item_id:
            $ref: '#/components/schemas/item_id'
          line_item_id:
            $ref: '#/components/schemas/line_item_id'
          item_order:
            description: Sort order of the line item.
            type: integer
            example: 1
          name:
            $ref: '#/components/schemas/name'
          description:
            $ref: '#/components/schemas/description'
          quantity_consumed:
            $ref: '#/components/schemas/quantity_consumed'
          unit:
            $ref: '#/components/schemas/unit'
          account_id:
            $ref: '#/components/schemas/account_id'
          account_name:
            $ref: '#/components/schemas/account_name'
          location_id:
            $ref: '#/components/schemas/location_id'
          location_name:
            $ref: '#/components/schemas/location_name'
          rate:
            $ref: '#/components/schemas/rate'
    line_item_id:
      description: Unique ID generated by the server for mapping the associated item with composite item
      type: string
      example: 504366000000053250
    quantity:
      description: Quantity of item associated with the composite item
      type: number
      format: double
      example: 1
    quantity_to_bundle:
      description: Quantity of Assembly to be Assembled.
      type: number
      format: double
      example: 1
    quantity_consumed:
      description: Quantity of item to be Assembled.
      type: number
      format: double
      example: 1
    location_id:
      description: Location ID
      type: string
      example: '460000000038080'
    location_name:
      description: Name of the location
      type: string
      example: Head Office
    tax_id:
      description: Unique ID generated by the server for the tax .
      type: string
      example: 504366000000053100
    tax_name:
      description: Name of the tax applied on selling this item
      type: string
      example: VAT
    tax_percentage:
      description: Percentage at which the item is taxed
      type: number
      format: double
      example: 13
    tax_type:
      description: Type of tax. It can either Tax or Group Tax
      type: string
      example: tax
    customfield_id:
      description: Unique ID generated by the server for the custom field.
      type: string
      example: 504366000000053400
    label:
      description: Label of the custom field.
      type: string
      example: VAT ID
    value:
      description: Value of the custom field.
      type: string
      example: GBGD078
    custom_fields:
      description: Custom fields are used to add more information about the item
      type: array
      items:
        type: object
        properties:
          customfield_id:
            $ref: '#/components/schemas/customfield_id'
          value:
            $ref: '#/components/schemas/value'
          label:
            $ref: '#/components/schemas/label'
    date:
      description: The date on which Assemblies is done
      type: string
      format: date
      example: '2017-01-05'
    page:
      description: Page Number
      type: integer
      example: 1
    per_page:
      description: Items to be displayed per page
      type: integer
      example: 25
    sort_column:
      description: 'column to be used for sorting. Allowed values: <code>name</code>,<code>sku</code>,<code>rate</code>,<code>tax_name</code>,<code>purchase_rate</code>,<code>created_time</code>,<code>last_modified_time</code>,<code>reorder_level</code>'
      type: string
    sort_order:
      description: order used for sorting
      type: string
      example: A
    filter_by:
      description: 'Filter items by status. Allowed values: <code>Status.All</code>,<code>Status.Active</code>,<code>Inactive</code>,<code>Lowstock</code>'
      type: string
    usestate:
      description: Whether current filter needs to be saved
      type: boolean
      example: true
    response_option:
      description: response format number
      type: integer
      example: 0
    operation_type:
      description: Type of operation
      type: string
      example: Updated
    available_stock:
      description: Stock based on Shipments and Receives
      type: number
      format: double
      example: 2
    actual_available_stock:
      description: Stock based on Shipments and Receives minus ordered stock
      type: number
      format: double
      example: 2
    purchase_account_id:
      description: Unique ID generated by the server for the type of purchase
      type: string
      example: 504366000000034000
    purchase_account_name:
      description: Type of purchase under which the composite item was bought
      type: string
      example: Cost of Goods Sold
    account_id:
      description: Unique ID generated by the server for the type of sale of this item
      type: string
      example: 504366000000000400
    account_name:
      description: Type of sale under which the composite item is sold
      type: string
      example: sales
    inventory_account_id:
      description: Unique ID generated by the server for the type of inventory for this item
      type: string
      example: 504366000000034000
    inventory_account_name:
      description: Name of inventory type
      type: string
      example: Inventory Asset
    product_type:
      description: Type of the product.
      type: string
      example: goods
    source:
      description: source
      type: string
      example: user
    stock_on_hand:
      description: Stock based on Invoices and Bills
      type: number
      format: double
      example: 2
    asset_value:
      description: value of the composite items based on purchase rate
      type: number
      format: double
    image_id:
      description: Unique identifier generated by the server for item image
      type: string
      example: 8408722000000019000
    image_name:
      description: Name of the image
      type: string
      example: img1.jpg
    image_type:
      description: Type of the image <code>Only images with gif,png,jpeg,jpg,bmp extensions are allowed</code>
      type: string
      example: jpg
    mapped_items:
      description: Items that are associated with the composite item
      type: array
      items:
        type: object
        properties:
          line_item_id:
            $ref: '#/components/schemas/line_item_id'
          item_id:
            $ref: '#/components/schemas/item_id'
          item_order:
            description: Sort order of the mapped item.
            type: integer
            example: 1
          name:
            $ref: '#/components/schemas/name'
          rate:
            $ref: '#/components/schemas/rate'
          purchase_rate:
            $ref: '#/components/schemas/purchase_rate'
          sku:
            $ref: '#/components/schemas/sku'
          image_id:
            $ref: '#/components/schemas/image_id'
          image_name:
            $ref: '#/components/schemas/image_name'
          purchase_description:
            $ref: '#/components/schemas/purchase_description'
          image_type:
            $ref: '#/components/schemas/image_type'
          unit:
            $ref: '#/components/schemas/unit'
          is_combo_product:
            $ref: '#/components/schemas/is_combo_product'
          description:
            $ref: '#/components/schemas/description'
          quantity:
            $ref: '#/components/schemas/quantity'
          stock_on_hand:
            $ref: '#/components/schemas/stock_on_hand'
          available_stock:
            $ref: '#/components/schemas/available_stock'
          actual_available_stock:
            $ref: '#/components/schemas/actual_available_stock'
    created_time:
      description: Time at which the contact was created.
      type: string
      example: '2013-08-05'
    last_modified_time:
      description: Search using the Last Modified Time of the Base Currency Adjustment
      type: string
    tax_specification:
      description: Type of tax. It can be <code> intra</code> or <code> inter</code>
      type: string
      example: intra
      x-node_available_in:
        - in
      x-node_unavailable_in: []
    item_tax_preferences:
      type: array
      description: List of tax preferences of the item
      items:
        type: object
        properties:
          tax_id:
            $ref: '#/components/schemas/tax_id'
          tax_specification:
            $ref: '#/components/schemas/tax_specification'
      x-node_available_in:
        - in
      x-node_unavailable_in: []
    hsn_or_sac:
      description: HSN Code of the item
      type: string
      example: 85423100
      x-node_available_in:
        - in
      x-node_unavailable_in: []
    is_completed:
      description: Denotes the status of the assemblies. Currently, this has to be true since we didnt support any other status as of now.
      type: boolean
      example: true
    composite_item:
      type: object
      properties:
        composite_item_id:
          $ref: '#/components/schemas/composite_item_id'
        name:
          $ref: '#/components/schemas/name'
        unit:
          $ref: '#/components/schemas/unit'
        tax_id:
          $ref: '#/components/schemas/tax_id'
        description:
          $ref: '#/components/schemas/description'
        tax_name:
          $ref: '#/components/schemas/tax_name'
        tax_percentage:
          $ref: '#/components/schemas/tax_percentage'
        tax_type:
          $ref: '#/components/schemas/tax_type'
        purchase_account_id:
          $ref: '#/components/schemas/purchase_account_id'
        purchase_account_name:
          $ref: '#/components/schemas/purchase_account_name'
        account_id:
          $ref: '#/components/schemas/account_id'
        account_name:
          $ref: '#/components/schemas/account_name'
        inventory_account_id:
          $ref: '#/components/schemas/inventory_account_id'
        inventory_account_name:
          $ref: '#/components/schemas/inventory_account_name'
        status:
          $ref: '#/components/schemas/status'
        source:
          $ref: '#/components/schemas/source'
        is_combo_product:
          $ref: '#/components/schemas/is_combo_product'
        item_type:
          $ref: '#/components/schemas/item_type'
        rate:
          $ref: '#/components/schemas/rate'
        pricebook_rate:
          $ref: '#/components/schemas/pricebook_rate'
        purchase_rate:
          $ref: '#/components/schemas/purchase_rate'
        reorder_level:
          $ref: '#/components/schemas/reorder_level'
        initial_stock:
          $ref: '#/components/schemas/initial_stock'
        initial_stock_rate:
          $ref: '#/components/schemas/initial_stock_rate'
        vendor_id:
          $ref: '#/components/schemas/vendor_id'
        vendor_name:
          $ref: '#/components/schemas/vendor_name'
        stock_on_hand:
          $ref: '#/components/schemas/stock_on_hand'
        asset_value:
          $ref: '#/components/schemas/asset_value'
        available_stock:
          $ref: '#/components/schemas/available_stock'
        actual_available_stock:
          $ref: '#/components/schemas/actual_available_stock'
        sku:
          $ref: '#/components/schemas/sku'
        upc:
          $ref: '#/components/schemas/upc'
        ean:
          $ref: '#/components/schemas/ean'
        isbn:
          $ref: '#/components/schemas/isbn'
        part_number:
          $ref: '#/components/schemas/part_number'
        image_id:
          $ref: '#/components/schemas/image_id'
        image_name:
          $ref: '#/components/schemas/image_name'
        image_type:
          $ref: '#/components/schemas/image_type'
        is_taxable:
          $ref: '#/components/schemas/is_taxable'
        product_type:
          $ref: '#/components/schemas/product_type'
        purchase_description:
          $ref: '#/components/schemas/purchase_description'
        category_id:
          description: Unique identifier of the category.
          type: string
          example: 504366000000053500
        category_name:
          description: Name of the category.
          type: string
          example: Hardware
        combo_type:
          description: 'Type of composite item. Allowed values: <code>assembly</code>, <code>kit</code>.'
          type: string
          example: assembly
        brand:
          description: Brand name of the composite item.
          type: string
          example: Acme Corp
        manufacturer:
          description: Manufacturer of the composite item.
          type: string
          example: Acme Manufacturing
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        mapped_items:
          $ref: '#/components/schemas/mapped_items'
        item_tax_preferences:
          $ref: '#/components/schemas/item_tax_preferences'
        hsn_or_sac:
          $ref: '#/components/schemas/hsn_or_sac'
        created_time:
          $ref: '#/components/schemas/created_time'
        last_modified_time:
          $ref: '#/components/schemas/last_modified_time'
    creating-a-composite-item-request:
      required:
        - name
        - sku
        - mapped_items
        - rate
        - item_type
        - product_type
      type: object
      properties:
        name:
          $ref: '#/components/schemas/name'
        mapped_items:
          description: Items that are associated with the composite item
          type: array
          items:
            type: object
            required:
              - item_id
            properties:
              quantity:
                $ref: '#/components/schemas/quantity'
              item_id:
                $ref: '#/components/schemas/item_id'
              line_item_id:
                $ref: '#/components/schemas/line_item_id'
              item_order:
                description: Sort order of the mapped item.
                type: integer
                example: 1
        description:
          $ref: '#/components/schemas/description'
        is_combo_product:
          $ref: '#/components/schemas/is_combo_product'
        vendor_id:
          $ref: '#/components/schemas/vendor_id'
        purchase_rate:
          $ref: '#/components/schemas/purchase_rate'
        purchase_description:
          $ref: '#/components/schemas/purchase_description'
        initial_stock:
          $ref: '#/components/schemas/initial_stock'
        initial_stock_rate:
          $ref: '#/components/schemas/initial_stock_rate'
        tax_id:
          $ref: '#/components/schemas/tax_id'
        sku:
          $ref: '#/components/schemas/sku'
        isbn:
          $ref: '#/components/schemas/isbn'
        ean:
          $ref: '#/components/schemas/ean'
        part_number:
          $ref: '#/components/schemas/part_number'
        reorder_level:
          $ref: '#/components/schemas/reorder_level'
        unit:
          $ref: '#/components/schemas/unit'
        upc:
          $ref: '#/components/schemas/upc'
        item_type:
          $ref: '#/components/schemas/item_type'
        rate:
          $ref: '#/components/schemas/rate'
        label_rate:
          description: Label rate (MRP) of the composite item.
          type: number
          format: double
          example: 90000
        is_taxable:
          $ref: '#/components/schemas/is_taxable'
        tax_exemption_id:
          description: Unique identifier of the tax exemption.
          type: string
          example: 504366000000053600
        brand:
          description: Brand name of the composite item.
          type: string
          example: Acme Corp
        manufacturer:
          description: Manufacturer of the composite item.
          type: string
          example: Acme Manufacturing
        alias_name:
          description: Alias name for the composite item.
          type: string
          example: Combo Phone+Watch
        category_id:
          description: Unique identifier of the category.
          type: string
          example: 504366000000053500
        can_be_sold:
          description: Whether the composite item can be sold.
          type: boolean
          example: true
        can_be_purchased:
          description: Whether the composite item can be purchased.
          type: boolean
          example: true
        is_returnable:
          description: Whether the composite item is returnable.
          type: boolean
          example: true
        minimum_order_quantity:
          description: Minimum order quantity for the composite item.
          type: number
          format: double
          example: 1
        maximum_order_quantity:
          description: Maximum order quantity for the composite item.
          type: number
          format: double
          example: 100
        track_serial_number:
          description: Whether serial number tracking is enabled for the composite item.
          type: boolean
          example: false
        track_batch_number:
          description: Whether batch number tracking is enabled for the composite item.
          type: boolean
          example: false
        package_details:
          description: Package details of the composite item.
          type: object
          properties:
            length:
              description: Length of the package.
              type: number
              format: double
              example: 10
            width:
              description: Width of the package.
              type: number
              format: double
              example: 5
            height:
              description: Height of the package.
              type: number
              format: double
              example: 3
            weight:
              description: Weight of the package.
              type: number
              format: double
              example: 0.5
            weight_unit:
              description: 'Unit of weight. Allowed values: <code>kg</code>, <code>g</code>, <code>lb</code>, <code>oz</code>.'
              type: string
              example: kg
            dimension_unit:
              description: 'Unit of dimensions. Allowed values: <code>cm</code>, <code>in</code>.'
              type: string
              example: cm
        tags:
          description: Tags associated with the composite item (reporting tags).
          type: array
          items:
            type: object
            properties:
              tag_id:
                description: Unique identifier of the tag.
                type: string
                example: 504366000000053700
              tag_option_id:
                description: Unique identifier of the tag option.
                type: string
                example: 504366000000053700
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        account_id:
          $ref: '#/components/schemas/account_id'
        purchase_account_id:
          $ref: '#/components/schemas/purchase_account_id'
        inventory_account_id:
          $ref: '#/components/schemas/inventory_account_id'
        item_tax_preferences:
          $ref: '#/components/schemas/item_tax_preferences'
        hsn_or_sac:
          $ref: '#/components/schemas/hsn_or_sac'
        product_type:
          description: Type of the product.
          type: string
          example: goods
        combo_type:
          description: 'Type of composite item. Allowed values: <code>assembly</code>, <code>kit</code>.'
          type: string
          example: assembly
    creating-a-composite-item-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The item has been added.
          readOnly: true
        composite_item:
          $ref: '#/components/schemas/composite_item'
    list-all-composite-items-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        composite_items:
          type: array
          items:
            type: object
            properties:
              composite_item_id:
                $ref: '#/components/schemas/composite_item_id'
              name:
                $ref: '#/components/schemas/name'
              status:
                $ref: '#/components/schemas/status'
              source:
                $ref: '#/components/schemas/source'
              description:
                $ref: '#/components/schemas/description'
              rate:
                $ref: '#/components/schemas/rate'
              tax_id:
                $ref: '#/components/schemas/tax_id'
              tax_name:
                $ref: '#/components/schemas/tax_name'
              tax_percentage:
                $ref: '#/components/schemas/tax_percentage'
              purchase_description:
                $ref: '#/components/schemas/purchase_description'
              purchase_rate:
                $ref: '#/components/schemas/purchase_rate'
              is_combo_product:
                $ref: '#/components/schemas/is_combo_product'
              item_type:
                $ref: '#/components/schemas/item_type'
              product_type:
                $ref: '#/components/schemas/product_type'
              is_taxable:
                $ref: '#/components/schemas/is_taxable'
              stock_on_hand:
                $ref: '#/components/schemas/stock_on_hand'
              available_stock:
                $ref: '#/components/schemas/available_stock'
              actual_available_stock:
                $ref: '#/components/schemas/actual_available_stock'
              sku:
                $ref: '#/components/schemas/sku'
              upc:
                $ref: '#/components/schemas/upc'
              ean:
                $ref: '#/components/schemas/ean'
              isbn:
                $ref: '#/components/schemas/isbn'
              part_number:
                $ref: '#/components/schemas/part_number'
              reorder_level:
                $ref: '#/components/schemas/reorder_level'
              image_id:
                $ref: '#/components/schemas/image_id'
              image_name:
                $ref: '#/components/schemas/image_name'
              image_type:
                $ref: '#/components/schemas/image_type'
              unit:
                $ref: '#/components/schemas/unit'
              category_id:
                description: Unique identifier of the category.
                type: string
                example: 504366000000053500
              category_name:
                description: Name of the category.
                type: string
                example: Hardware
              combo_type:
                description: Type of composite item.
                type: string
                example: assembly
              brand:
                description: Brand name of the composite item.
                type: string
                example: Acme Corp
              manufacturer:
                description: Manufacturer of the composite item.
                type: string
                example: Acme Manufacturing
              purchase_account_id:
                $ref: '#/components/schemas/purchase_account_id'
              purchase_account_name:
                $ref: '#/components/schemas/purchase_account_name'
              account_id:
                $ref: '#/components/schemas/account_id'
              account_name:
                $ref: '#/components/schemas/account_name'
              custom_fields:
                $ref: '#/components/schemas/custom_fields'
              created_time:
                $ref: '#/components/schemas/created_time'
              last_modified_time:
                $ref: '#/components/schemas/last_modified_time'
        page_context:
          $ref: '#/components/schemas/page_context'
    retrieving-a-composite-item-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        composite_item_id:
          $ref: '#/components/schemas/composite_item_id'
        name:
          $ref: '#/components/schemas/name'
        status:
          $ref: '#/components/schemas/status'
        source:
          $ref: '#/components/schemas/source'
        unit:
          $ref: '#/components/schemas/unit'
        tax_id:
          $ref: '#/components/schemas/tax_id'
        description:
          $ref: '#/components/schemas/description'
        tax_name:
          $ref: '#/components/schemas/tax_name'
        tax_percentage:
          $ref: '#/components/schemas/tax_percentage'
        tax_type:
          $ref: '#/components/schemas/tax_type'
        purchase_account_id:
          $ref: '#/components/schemas/purchase_account_id'
        purchase_account_name:
          $ref: '#/components/schemas/purchase_account_name'
        account_id:
          $ref: '#/components/schemas/account_id'
        account_name:
          $ref: '#/components/schemas/account_name'
        inventory_account_id:
          $ref: '#/components/schemas/inventory_account_id'
        inventory_account_name:
          $ref: '#/components/schemas/inventory_account_name'
        is_combo_product:
          $ref: '#/components/schemas/is_combo_product'
        item_type:
          $ref: '#/components/schemas/item_type'
        rate:
          $ref: '#/components/schemas/rate'
        pricebook_rate:
          $ref: '#/components/schemas/pricebook_rate'
        purchase_rate:
          $ref: '#/components/schemas/purchase_rate'
        reorder_level:
          $ref: '#/components/schemas/reorder_level'
        initial_stock:
          $ref: '#/components/schemas/initial_stock'
        initial_stock_rate:
          $ref: '#/components/schemas/initial_stock_rate'
        vendor_id:
          $ref: '#/components/schemas/vendor_id'
        vendor_name:
          $ref: '#/components/schemas/vendor_name'
        stock_on_hand:
          $ref: '#/components/schemas/stock_on_hand'
        asset_value:
          $ref: '#/components/schemas/asset_value'
        available_stock:
          $ref: '#/components/schemas/available_stock'
        actual_available_stock:
          $ref: '#/components/schemas/actual_available_stock'
        sku:
          $ref: '#/components/schemas/sku'
        upc:
          $ref: '#/components/schemas/upc'
        ean:
          $ref: '#/components/schemas/ean'
        isbn:
          $ref: '#/components/schemas/isbn'
        part_number:
          $ref: '#/components/schemas/part_number'
        image_id:
          $ref: '#/components/schemas/image_id'
        image_name:
          $ref: '#/components/schemas/image_name'
        purchase_description:
          $ref: '#/components/schemas/purchase_description'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        mapped_items:
          $ref: '#/components/schemas/mapped_items'
        is_taxable:
          $ref: '#/components/schemas/is_taxable'
        product_type:
          $ref: '#/components/schemas/product_type'
        image_type:
          $ref: '#/components/schemas/image_type'
        category_id:
          description: Unique identifier of the category.
          type: string
          example: 504366000000053500
        category_name:
          description: Name of the category.
          type: string
          example: Hardware
        combo_type:
          description: 'Type of composite item. Allowed values: <code>assembly</code>, <code>kit</code>.'
          type: string
          example: assembly
        brand:
          description: Brand name of the composite item.
          type: string
          example: Acme Corp
        manufacturer:
          description: Manufacturer of the composite item.
          type: string
          example: Acme Manufacturing
        alias_name:
          description: Alias name for the composite item.
          type: string
          example: Combo Phone+Watch
        assembly_type:
          description: Assembly type of the composite item.
          type: string
          example: stock
        label_rate:
          description: Label rate (MRP) of the composite item.
          type: number
          format: double
          example: 90000
        sales_rate:
          description: Selling rate of the composite item.
          type: number
          format: double
          example: 85000
        can_be_sold:
          description: Whether the composite item can be sold.
          type: boolean
          example: true
        can_be_purchased:
          description: Whether the composite item can be purchased.
          type: boolean
          example: true
        track_inventory:
          description: Whether inventory tracking is enabled for the composite item.
          type: boolean
          example: true
        is_returnable:
          description: Whether the composite item is returnable.
          type: boolean
          example: true
        tax_exemption_id:
          description: Unique identifier of the tax exemption.
          type: string
          example: 504366000000053600
        tax_exemption_code:
          description: Tax exemption code.
          type: string
          example: GST_FREE
        minimum_order_quantity:
          description: Minimum order quantity for the composite item.
          type: number
          format: double
          example: 1
        maximum_order_quantity:
          description: Maximum order quantity for the composite item.
          type: number
          format: double
          example: 100
        committed_stock:
          description: Stock committed against sales orders.
          type: number
          format: double
          example: 0
        available_for_sale_stock:
          description: Stock available for sale after deducting committed stock.
          type: number
          format: double
          example: 2
        track_serial_number:
          description: Whether serial number tracking is enabled for the composite item.
          type: boolean
          example: false
        track_batch_number:
          description: Whether batch number tracking is enabled for the composite item.
          type: boolean
          example: false
        is_linked_with_zohocrm:
          description: Whether the composite item is linked with Zoho CRM.
          type: boolean
          example: false
        package_details:
          description: Package details of the composite item.
          type: object
          properties:
            length:
              description: Length of the package.
              type: number
              format: double
              example: 10
            width:
              description: Width of the package.
              type: number
              format: double
              example: 5
            height:
              description: Height of the package.
              type: number
              format: double
              example: 3
            weight:
              description: Weight of the package.
              type: number
              format: double
              example: 0.5
            weight_unit:
              description: Unit of weight.
              type: string
              example: kg
            dimension_unit:
              description: Unit of dimensions.
              type: string
              example: cm
        tags:
          description: Tags associated with the composite item (reporting tags).
          type: array
          items:
            type: object
            properties:
              tag_id:
                description: Unique identifier of the tag.
                type: string
                example: 504366000000053700
              tag_option_id:
                description: Unique identifier of the tag option.
                type: string
                example: 504366000000053700
              tag_option_name:
                description: Name of the tag option.
                type: string
                example: Region A
        item_tax_preferences:
          $ref: '#/components/schemas/item_tax_preferences'
        hsn_or_sac:
          $ref: '#/components/schemas/hsn_or_sac'
        created_time:
          $ref: '#/components/schemas/created_time'
        last_modified_time:
          $ref: '#/components/schemas/last_modified_time'
    updating-a-composite-item-request:
      required:
        - name
        - sku
        - mapped_items
        - rate
        - item_type
        - product_type
      type: object
      properties:
        composite_item_id:
          $ref: '#/components/schemas/composite_item_id'
        name:
          $ref: '#/components/schemas/name'
        unit:
          $ref: '#/components/schemas/unit'
        tax_id:
          $ref: '#/components/schemas/tax_id'
        description:
          $ref: '#/components/schemas/description'
        tax_name:
          $ref: '#/components/schemas/tax_name'
        tax_percentage:
          $ref: '#/components/schemas/tax_percentage'
        tax_type:
          $ref: '#/components/schemas/tax_type'
        purchase_account_id:
          $ref: '#/components/schemas/purchase_account_id'
        purchase_account_name:
          $ref: '#/components/schemas/purchase_account_name'
        account_id:
          $ref: '#/components/schemas/account_id'
        account_name:
          $ref: '#/components/schemas/account_name'
        inventory_account_id:
          $ref: '#/components/schemas/inventory_account_id'
        inventory_account_name:
          $ref: '#/components/schemas/inventory_account_name'
        status:
          $ref: '#/components/schemas/status'
        source:
          $ref: '#/components/schemas/source'
        is_combo_product:
          $ref: '#/components/schemas/is_combo_product'
        item_type:
          $ref: '#/components/schemas/item_type'
        rate:
          $ref: '#/components/schemas/rate'
        pricebook_rate:
          $ref: '#/components/schemas/pricebook_rate'
        purchase_rate:
          $ref: '#/components/schemas/purchase_rate'
        reorder_level:
          $ref: '#/components/schemas/reorder_level'
        initial_stock:
          $ref: '#/components/schemas/initial_stock'
        initial_stock_rate:
          $ref: '#/components/schemas/initial_stock_rate'
        vendor_id:
          $ref: '#/components/schemas/vendor_id'
        vendor_name:
          $ref: '#/components/schemas/vendor_name'
        stock_on_hand:
          $ref: '#/components/schemas/stock_on_hand'
        asset_value:
          $ref: '#/components/schemas/asset_value'
        available_stock:
          $ref: '#/components/schemas/available_stock'
        actual_available_stock:
          $ref: '#/components/schemas/actual_available_stock'
        sku:
          $ref: '#/components/schemas/sku'
        upc:
          $ref: '#/components/schemas/upc'
        ean:
          $ref: '#/components/schemas/ean'
        isbn:
          $ref: '#/components/schemas/isbn'
        part_number:
          $ref: '#/components/schemas/part_number'
        image_id:
          $ref: '#/components/schemas/image_id'
        image_name:
          $ref: '#/components/schemas/image_name'
        purchase_description:
          $ref: '#/components/schemas/purchase_description'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        mapped_items:
          $ref: '#/components/schemas/mapped_items'
        item_tax_preferences:
          $ref: '#/components/schemas/item_tax_preferences'
        hsn_or_sac:
          $ref: '#/components/schemas/hsn_or_sac'
        product_type:
          description: Type of the product.
          type: string
          example: goods
        combo_type:
          description: 'Type of composite item. Allowed values: <code>assembly</code>, <code>kit</code>.'
          type: string
          example: assembly
    updating-a-composite-item-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Item details have been saved.
          readOnly: true
        composite_item:
          $ref: '#/components/schemas/composite_item'
    deleting-a-composite-item-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The item has been deleted.
          readOnly: true
    mark-as-active-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Re-activation complete! The item is back in business!
          readOnly: true
    mark-as-inactive-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The item has been marked as inactive.
          readOnly: true
    serial_numbers:
      description: Serial numbers for the line item. Applicable only for items with serial tracking enabled.
      type: array
      items:
        type: string
        example: PKG-003
    batches:
      description: Batch details for the line item. Reference an existing batch using <code>batch_id</code>. Applicable only for items with batch tracking enabled.
      type: array
      items:
        type: object
        required:
          - batch_id
          - out_quantity
        properties:
          batch_id:
            description: Unique identifier of an existing batch.
            type: string
            example: '6780203000000176162'
          out_quantity:
            description: Quantity consumed from the batch.
            type: number
            format: float
            example: 1
          storages:
            description: Bin/storage locations from which stock was consumed for this batch.
            type: array
            x-node_available_in:
              - Batch with Bin tracked items
            items:
              type: object
              required:
                - storage_id
                - out_quantity
              properties:
                storage_id:
                  description: Unique identifier of the bin/storage location.
                  type: string
                  example: '6780203000000093226'
                out_quantity:
                  description: Quantity consumed from the bin.
                  type: number
                  format: float
                  example: 1
    storages:
      description: Bin/storage locations consumed for the line item. Applicable only for items with bin tracking enabled.
      type: array
      items:
        type: object
        required:
          - storage_id
          - out_quantity
        properties:
          storage_id:
            description: Unique identifier of the bin/storage location.
            type: string
            example: '6780203000000093227'
          out_quantity:
            description: Quantity consumed from the bin.
            type: number
            format: float
            example: 1
          serial_numbers:
            description: Serial numbers consumed from this bin.
            type: array
            x-node_available_in:
              - Serial with Bin tracked items
            items:
              type: string
              example: PKG-002
    finished_product_serial_numbers:
      description: Serial numbers to be assigned to the finished product. Use when the composite item has serial tracking enabled.
      type: array
      items:
        type: string
        example: ASM-001
    finished_product_batches:
      description: Batches to be created for the finished product. Use when the composite item has batch tracking enabled.
      type: array
      items:
        type: object
        required:
          - batch_number
          - in_quantity
        properties:
          batch_number:
            description: Batch number for the new finished product batch.
            type: string
            example: ASMBA-001
          external_batch_number:
            description: External batch number from the manufacturer.
            type: string
            example: MFR-ASMBA-001
          manufacturer_date:
            description: Manufacturing date of the batch.
            type: string
            example: '2026-05-12'
          expiry_date:
            description: Expiration date of the batch.
            type: string
            example: '2026-12-24'
          in_quantity:
            description: Inward quantity for the batch.
            type: number
            format: float
            example: 1
          storages:
            description: Bin/storage locations allocated for the finished product batch.
            type: array
            x-node_available_in:
              - Batch with Bin tracked items
            items:
              type: object
              required:
                - storage_id
                - in_quantity
              properties:
                storage_id:
                  description: Unique identifier of the bin/storage location.
                  type: string
                  example: '6780203000000093225'
                in_quantity:
                  description: Inward quantity into the bin.
                  type: number
                  format: float
                  example: 1
    finished_product_storages:
      description: Bin/storage locations to store the finished product. Use when the composite item has bin tracking enabled.
      type: array
      items:
        type: object
        required:
          - storage_id
          - in_quantity
        properties:
          storage_id:
            description: Unique identifier of the bin/storage location.
            type: string
            example: '6780203000000093225'
          in_quantity:
            description: Inward quantity into the bin.
            type: number
            format: float
            example: 1
          serial_numbers:
            description: Serial numbers allocated to this bin for the finished product.
            type: array
            x-node_available_in:
              - Serial with Bin tracked items
            items:
              type: string
              example: ASM-001
    create-bundle-request:
      required:
        - reference_number
        - date
        - composite_item_id
        - composite_item_name
        - quantity_to_bundle
        - line_items
        - is_completed
      type: object
      properties:
        reference_number:
          $ref: '#/components/schemas/reference_number'
        date:
          $ref: '#/components/schemas/date'
        description:
          $ref: '#/components/schemas/description'
        composite_item_id:
          $ref: '#/components/schemas/composite_item_id'
        composite_item_name:
          $ref: '#/components/schemas/composite_item_name'
        composite_item_sku:
          $ref: '#/components/schemas/composite_item_sku'
        quantity_to_bundle:
          $ref: '#/components/schemas/quantity_to_bundle'
        status:
          description: 'Status of the assembly. Allowed values: <code>draft</code>, <code>confirmed</code>, <code>bundled</code>.'
          type: string
          example: draft
        warehouse_id:
          description: Warehouse ID for the assembly.
          type: string
          example: '460000000038080'
        location_id:
          $ref: '#/components/schemas/location_id'
        line_items:
          description: A assemblies can contain multiple line items. Each line item contains <code>item_id</code>,<code>name</code>,<code>description</code>,<code>quantity_consumed</code>,<code>unit</code>,<code>account_id</code>,<code>location_id</code>.
          type: array
          items:
            type: object
            required:
              - item_id
              - name
              - quantity_consumed
              - account_id
              - location_id
            properties:
              item_id:
                $ref: '#/components/schemas/item_id'
              name:
                $ref: '#/components/schemas/name'
              sku:
                description: SKU of the component item.
                type: string
                example: SK123
              description:
                $ref: '#/components/schemas/description'
              quantity_consumed:
                $ref: '#/components/schemas/quantity_consumed'
              total_quantity_consumed:
                description: Total quantity consumed for this component.
                type: number
                format: double
                example: 2
              unit:
                $ref: '#/components/schemas/unit'
              rate:
                $ref: '#/components/schemas/rate'
              account_id:
                $ref: '#/components/schemas/account_id'
              account_name:
                $ref: '#/components/schemas/account_name'
              location_id:
                $ref: '#/components/schemas/location_id'
              location_name:
                $ref: '#/components/schemas/location_name'
              warehouse_id:
                description: Warehouse ID for the component item.
                type: string
                example: '460000000038080'
              item_order:
                description: Sort order of the line item.
                type: integer
                example: 1
              serial_numbers:
                $ref: '#/components/schemas/serial_numbers'
              batches:
                $ref: '#/components/schemas/batches'
              storages:
                $ref: '#/components/schemas/storages'
        finished_product_serial_numbers:
          $ref: '#/components/schemas/finished_product_serial_numbers'
        finished_product_batches:
          $ref: '#/components/schemas/finished_product_batches'
        finished_product_storages:
          $ref: '#/components/schemas/finished_product_storages'
        is_completed:
          $ref: '#/components/schemas/is_completed'
        custom_fields:
          description: Custom fields for the assembly.
          type: array
          items:
            type: object
            properties:
              customfield_id:
                $ref: '#/components/schemas/customfield_id'
              label:
                $ref: '#/components/schemas/label'
              value:
                $ref: '#/components/schemas/value'
    create-bundle-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Assembly has been created.
          readOnly: true
        bundle_id:
          $ref: '#/components/schemas/bundle_id'
        reference_number:
          $ref: '#/components/schemas/reference_number'
        transaction_number:
          description: Auto-generated transaction number.
          type: string
          example: WO-00001
        date:
          $ref: '#/components/schemas/date'
        description:
          $ref: '#/components/schemas/description'
        composite_item_id:
          $ref: '#/components/schemas/composite_item_id'
        composite_item_name:
          $ref: '#/components/schemas/composite_item_name'
        composite_item_sku:
          $ref: '#/components/schemas/composite_item_sku'
        quantity_to_bundle:
          $ref: '#/components/schemas/quantity_to_bundle'
        status:
          description: Status of the assembly.
          type: string
          example: pending
        total:
          description: Total cost of the assembly.
          type: number
          format: double
          example: 85000
        warehouse_id:
          description: Warehouse ID associated with the assembly.
          type: string
          example: '460000000038080'
        warehouse_name:
          description: Warehouse name associated with the assembly.
          type: string
          example: Main Warehouse
        is_completed:
          $ref: '#/components/schemas/is_completed'
        line_items:
          $ref: '#/components/schemas/line_items'
        custom_fields:
          $ref: '#/components/schemas/custom_fields'
        created_time:
          $ref: '#/components/schemas/created_time'
        last_modified_time:
          $ref: '#/components/schemas/last_modified_time'
    bundling-history-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        bundles:
          type: array
          items:
            type: object
            properties:
              bundle_id:
                $ref: '#/components/schemas/bundle_id'
              reference_number:
                $ref: '#/components/schemas/reference_number'
              date:
                $ref: '#/components/schemas/date'
              description:
                $ref: '#/components/schemas/description'
              composite_item_id:
                $ref: '#/components/schemas/composite_item_id'
              composite_item_name:
                $ref: '#/components/schemas/composite_item_name'
              composite_item_sku:
                $ref: '#/components/schemas/composite_item_sku'
              quantity_to_bundle:
                $ref: '#/components/schemas/quantity_to_bundle'
              status:
                description: Status of the assembly.
                type: string
                example: pending
              total:
                description: Total cost of the assembly.
                type: number
                format: double
                example: 85000
              transaction_number:
                description: Auto-generated transaction number.
                type: string
                example: WO-00001
              warehouse_id:
                description: Warehouse ID associated with the assembly.
                type: string
                example: '460000000038080'
              warehouse_name:
                description: Warehouse name associated with the assembly.
                type: string
                example: Main Warehouse
              location_id:
                $ref: '#/components/schemas/location_id'
              location_name:
                $ref: '#/components/schemas/location_name'
              line_items:
                $ref: '#/components/schemas/line_items'
              custom_fields:
                $ref: '#/components/schemas/custom_fields'
              created_time:
                $ref: '#/components/schemas/created_time'
              last_modified_time:
                $ref: '#/components/schemas/last_modified_time'
              created_by_id:
                description: Unique identifier of the user who created the assembly.
                type: string
                example: 504366000000040000
        page_context:
          $ref: '#/components/schemas/page_context'
    retrieve-bundle-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: success
          readOnly: true
        bundle:
          type: object
          properties:
            bundle_id:
              $ref: '#/components/schemas/bundle_id'
            reference_number:
              $ref: '#/components/schemas/reference_number'
            transaction_number:
              description: Auto-generated transaction number.
              type: string
              example: WO-00001
            date:
              $ref: '#/components/schemas/date'
            description:
              $ref: '#/components/schemas/description'
            composite_item_id:
              $ref: '#/components/schemas/composite_item_id'
            composite_item_name:
              $ref: '#/components/schemas/composite_item_name'
            composite_item_sku:
              $ref: '#/components/schemas/composite_item_sku'
            quantity_to_bundle:
              $ref: '#/components/schemas/quantity_to_bundle'
            status:
              description: Status of the assembly.
              type: string
              example: pending
            total:
              description: Total cost of the assembly.
              type: number
              format: double
              example: 85000
            warehouse_id:
              description: Warehouse ID associated with the assembly.
              type: string
              example: '460000000038080'
            warehouse_name:
              description: Warehouse name associated with the assembly.
              type: string
              example: Main Warehouse
            location_id:
              $ref: '#/components/schemas/location_id'
            location_name:
              $ref: '#/components/schemas/location_name'
            project_id:
              description: Unique identifier of the associated project.
              type: string
              example: 504366000000070000
            project_name:
              description: Name of the associated project.
              type: string
              example: Assembly Project
            line_items:
              $ref: '#/components/schemas/line_items'
            is_completed:
              $ref: '#/components/schemas/is_completed'
            custom_fields:
              $ref: '#/components/schemas/custom_fields'
            created_time:
              $ref: '#/components/schemas/created_time'
            last_modified_time:
              $ref: '#/components/schemas/last_modified_time'
            created_by_id:
              description: Unique identifier of the user who created the assembly.
              type: string
              example: 504366000000040000
    delete-bundle-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Assembly has been deleted.
          readOnly: true
    page_context:
      type: object
      properties:
        page:
          description: Current page number.
          type: integer
          example: 1
        per_page:
          description: Number of records per page.
          type: integer
          example: 10
        has_more_page:
          description: Whether there are more pages.
          type: boolean
          example: true
        report_name:
          description: Name of the report.
          type: string
          example: Composite Items
        applied_filter:
          description: Filter applied on the list.
          type: string
          example: Status.All
        sort_column:
          description: Column used for sorting.
          type: string
          example: name
        sort_order:
          description: Order used for sorting.
          type: string
          example: A
    upload-composite-item-image-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The composite item image has been uploaded.
          readOnly: true
    delete-composite-item-image-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The composite item image has been deleted.
          readOnly: true
    update-bundle-request:
      type: object
      allOf:
        - $ref: '#/components/schemas/create-bundle-request'
    update-bundle-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: Assembly has been updated.
          readOnly: true
        bundle:
          type: object
          properties:
            bundle_id:
              $ref: '#/components/schemas/bundle_id'
            reference_number:
              $ref: '#/components/schemas/reference_number'
            transaction_number:
              description: Auto-generated transaction number.
              type: string
              example: WO-00001
            date:
              $ref: '#/components/schemas/date'
            description:
              $ref: '#/components/schemas/description'
            composite_item_id:
              $ref: '#/components/schemas/composite_item_id'
            composite_item_name:
              $ref: '#/components/schemas/composite_item_name'
            composite_item_sku:
              $ref: '#/components/schemas/composite_item_sku'
            quantity_to_bundle:
              $ref: '#/components/schemas/quantity_to_bundle'
            status:
              description: Status of the assembly.
              type: string
              example: pending
            total:
              description: Total cost of the assembly.
              type: number
              format: double
              example: 85000
            warehouse_id:
              description: Warehouse ID associated with the assembly.
              type: string
              example: '460000000038080'
            warehouse_name:
              description: Warehouse name associated with the assembly.
              type: string
              example: Main Warehouse
            location_id:
              $ref: '#/components/schemas/location_id'
            location_name:
              $ref: '#/components/schemas/location_name'
            project_id:
              description: Unique identifier of the associated project.
              type: string
              example: 504366000000070000
            project_name:
              description: Name of the associated project.
              type: string
              example: Assembly Project
            line_items:
              $ref: '#/components/schemas/line_items'
            is_completed:
              $ref: '#/components/schemas/is_completed'
            custom_fields:
              $ref: '#/components/schemas/custom_fields'
            created_time:
              $ref: '#/components/schemas/created_time'
            last_modified_time:
              $ref: '#/components/schemas/last_modified_time'
            created_by_id:
              description: Unique identifier of the user who created the assembly.
              type: string
              example: 504366000000040000
    mark-assembly-as-built-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The assembly has been marked as built.
          readOnly: true
        bundle:
          type: object
          properties:
            bundle_id:
              $ref: '#/components/schemas/bundle_id'
            reference_number:
              $ref: '#/components/schemas/reference_number'
            transaction_number:
              description: Auto-generated transaction number.
              type: string
              example: WO-00001
            date:
              $ref: '#/components/schemas/date'
            description:
              $ref: '#/components/schemas/description'
            composite_item_id:
              $ref: '#/components/schemas/composite_item_id'
            composite_item_name:
              $ref: '#/components/schemas/composite_item_name'
            composite_item_sku:
              $ref: '#/components/schemas/composite_item_sku'
            quantity_to_bundle:
              $ref: '#/components/schemas/quantity_to_bundle'
            status:
              description: Status of the assembly.
              type: string
              example: built
            total:
              description: Total cost of the assembly.
              type: number
              format: double
              example: 85000
            warehouse_id:
              description: Warehouse ID associated with the assembly.
              type: string
              example: '460000000038080'
            warehouse_name:
              description: Warehouse name associated with the assembly.
              type: string
              example: Main Warehouse
            location_id:
              $ref: '#/components/schemas/location_id'
            location_name:
              $ref: '#/components/schemas/location_name'
            line_items:
              $ref: '#/components/schemas/line_items'
            is_completed:
              $ref: '#/components/schemas/is_completed'
            custom_fields:
              $ref: '#/components/schemas/custom_fields'
            created_time:
              $ref: '#/components/schemas/created_time'
            last_modified_time:
              $ref: '#/components/schemas/last_modified_time'
    mark-assembly-as-confirmed-response:
      type: object
      properties:
        code:
          type: integer
          example: 0
          readOnly: true
        message:
          type: string
          example: The assembly has been marked as confirmed.
          readOnly: true
        bundle:
          type: object
          properties:
            bundle_id:
              $ref: '#/components/schemas/bundle_id'
            reference_number:
              $ref: '#/components/schemas/reference_number'
            transaction_number:
              description: Auto-generated transaction number.
              type: string
              example: WO-00001
            date:
              $ref: '#/components/schemas/date'
            description:
              $ref: '#/components/schemas/description'
            composite_item_id:
              $ref: '#/components/schemas/composite_item_id'
            composite_item_name:
              $ref: '#/components/schemas/composite_item_name'
            composite_item_sku:
              $ref: '#/components/schemas/composite_item_sku'
            quantity_to_bundle:
              $ref: '#/components/schemas/quantity_to_bundle'
            status:
              description: Status of the assembly.
              type: string
              example: confirmed
            total:
              description: Total cost of the assembly.
              type: number
              format: double
              example: 85000
            warehouse_id:
              description: Warehouse ID associated with the assembly.
              type: string
              example: '460000000038080'
            warehouse_name:
              description: Warehouse name associated with the assembly.
              type: string
              example: Main Warehouse
            location_id:
              $ref: '#/components/schemas/location_id'
            location_name:
              $ref: '#/components/schemas/location_name'
            line_items:
              $ref: '#/components/schemas/line_items'
            is_completed:
              $ref: '#/components/schemas/is_completed'
            custom_fields:
              $ref: '#/components/schemas/custom_fields'
            created_time:
              $ref: '#/components/schemas/created_time'
            last_modified_time:
              $ref: '#/components/schemas/last_modified_time'
  securitySchemes:
    Zoho_Auth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: https://accounts.zoho.com/oauth/v2/auth
          scopes:
            ZohoInventory.compositeitems.CREATE: Create Compositeitems
            ZohoInventory.compositeitems.READ: Read Compositeitems
            ZohoInventory.compositeitems.UPDATE: Update Compositeitems
            ZohoInventory.compositeitems.DELETE: Delete Compositeitems
