Dealhubio Product Hierarchy API

The Product Hierarchy API from Dealhubio — 1 operation(s) for product hierarchy.

Operations 3

GET /api/v1/version/{version_id}/products_hierarchy Get Product Hierarchy #
POST /api/v1/version/{version_id}/products_hierarchy Create or Update Product Hierarchy #
DELETE /api/v1/version/{version_id}/products_hierarchy Delete from Product Hierarchy #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dealhubio:dealhubio-product-hierarchy-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dealhubio-product-hierarchy-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Version Product Hierarchy API
  description: 'This API provides a comprehensive set of services for managing versions and the associated product catalog within the DealHub CPQ system. It allows for system-to-system integration to get, create, duplicate, activate, and manage the content of versions.


    Several operations, such as duplicating, activating, and uploading a product catalog, are asynchronous. These endpoints return a `request_id` for tracking.


    All requests require a secret Bearer Token in the `Authorization` header, which is generated by a CPQ administrator.'
  version: 1.0.0
servers:
- url: https://api.dealhub.io
  description: The base URL for your DealHub instance.
security:
- bearerAuth: []
tags:
- name: Product Hierarchy
paths:
  /api/v1/version/{version_id}/products_hierarchy:
    get:
      tags:
      - Product Hierarchy
      summary: Get Product Hierarchy
      description: Retrieves the product hierarchy tree for a specific version.
      operationId: getProductHierarchy
      parameters:
      - name: version_id
        in: path
        required: true
        schema:
          type: string
          maxLength: 16
        description: The identifier of the version.
      responses:
        '200':
          description: Success. Returns the product hierarchy.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductHierarchyNode'
              examples:
                getProductHierarchyExample:
                  summary: Example of a product hierarchy response
                  value:
                  - element:
                      type: PRODUCT
                      mandatory: false
                      labelNameOrSku: product 1
                      alternative: false
                    children:
                    - element:
                        type: PRODUCT
                        mandatory: false
                        labelNameOrSku: product 3
                        alternative: false
                      children: []
                  - element:
                      type: PRODUCT
                      mandatory: false
                      labelNameOrSku: product 4
                      alternative: false
                    children:
                    - element:
                        type: LABEL
                        mandatory: true
                        labelNameOrSku: Label A
                        alternative: false
                      children:
                      - element:
                          type: PRODUCT
                          mandatory: false
                          labelNameOrSku: product 5
                          alternative: false
                        children: []
                      - element:
                          type: PRODUCT
                          mandatory: true
                          labelNameOrSku: product 6
                          alternative: false
                        children: []
                    - element:
                        type: LABEL
                        mandatory: false
                        labelNameOrSku: Label B
                        alternative: false
                      children:
                      - element:
                          type: PRODUCT
                          mandatory: false
                          labelNameOrSku: product 1
                          alternative: false
                        children:
                        - element:
                            type: PRODUCT
                            mandatory: false
                            labelNameOrSku: product 4
                            alternative: false
                          children: []
        '400':
          description: Bad Request. No Version was found matching the provided `version_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                notFoundExample:
                  summary: Version not found
                  value:
                    error: Entity (ID = 7b34133847401b12) not found
                    code: 400
        '403':
          description: Unauthenticated. The `Authorization` token is missing, invalid, or does not match the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                unauthenticatedExample:
                  summary: Unauthenticated
                  value:
                    error: Unauthenticated
                    code: 403
    post:
      tags:
      - Product Hierarchy
      summary: Create or Update Product Hierarchy
      description: Asynchronously creates or updates the product hierarchy for a 'DRAFT' version. This operation returns a `request_id` for tracking.
      operationId: updateProductHierarchy
      parameters:
      - name: version_id
        in: path
        required: true
        schema:
          type: string
          maxLength: 16
        description: The identifier of the 'DRAFT' version.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/ProductHierarchyNode'
            examples:
              updateProductHierarchyExample:
                summary: Example of updating a product hierarchy
                value:
                - element:
                    type: PRODUCT
                    mandatory: false
                    labelNameOrSku: product 1
                    alternative: false
                  children:
                  - element:
                      type: PRODUCT
                      mandatory: false
                      labelNameOrSku: product 3
                      alternative: false
                    children: []
                - element:
                    type: PRODUCT
                    mandatory: false
                    labelNameOrSku: product 4
                    alternative: false
                  children:
                  - element:
                      type: LABEL
                      mandatory: true
                      labelNameOrSku: Label A
                      alternative: false
                    children:
                    - element:
                        type: PRODUCT
                        mandatory: false
                        labelNameOrSku: product 5
                        alternative: false
                      children: []
                    - element:
                        type: PRODUCT
                        mandatory: true
                        labelNameOrSku: product 6
                        alternative: false
                      children: []
                  - element:
                      type: LABEL
                      mandatory: false
                      labelNameOrSku: Label B
                      alternative: false
                    children:
                    - element:
                        type: PRODUCT
                        mandatory: false
                        labelNameOrSku: product 1
                        alternative: false
                      children:
                      - element:
                          type: PRODUCT
                          mandatory: false
                          labelNameOrSku: product 4
                          alternative: false
                        children: []
      responses:
        '200':
          description: Success. The update process has started.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncResponse'
        '400':
          description: Bad Request. The Version was not found or is not in `DRAFT` status, or the submitted hierarchy failed validation (e.g., an unknown SKU, an invalid or missing `type`/`labelNameOrSku`, a structural rule violation, or the depth/size limits were exceeded).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                skuNotFoundExample:
                  summary: SKU does not exist in the products list
                  value:
                    error: The SKU [SKU-1] at [path] does not exist in the products list. Please add the SKU to the products catalog first.
                    code: 400
                invalidTypeExample:
                  summary: Invalid or missing type field
                  value:
                    error: The field type is invalid / The field type is not defined.
                    code: 400
                labelWithoutChildrenExample:
                  summary: Label without related products
                  value:
                    error: Label [name] is set without any related products.
                    code: 400
                mandatoryLabelExample:
                  summary: Mandatory label without mandatory products
                  value:
                    error: Label [name] is a mandatory label without any mandatory products.
                    code: 400
                maxDepthExample:
                  summary: Maximum hierarchy depth exceeded
                  value:
                    error: You have reached the maximum limit of 10 levels that can be added.
                    code: 400
                maxItemsExample:
                  summary: Maximum hierarchy size exceeded
                  value:
                    error: You can only add a maximum of 50,000 products or labels to the product hierarchy.
                    code: 400
                notFoundExample:
                  summary: Version not found
                  value:
                    error: Entity (ID = 7b34133847401b12) not found
                    code: 400
        '403':
          description: Unauthenticated. The `Authorization` token is missing, invalid, or does not match the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                unauthenticatedExample:
                  summary: Unauthenticated
                  value:
                    error: Unauthenticated
                    code: 403
    delete:
      tags:
      - Product Hierarchy
      summary: Delete from Product Hierarchy
      description: Asynchronously deletes specified items (products, bundles, or labels) from the product hierarchy of a 'DRAFT' version.
      operationId: deleteFromProductHierarchy
      parameters:
      - name: version_id
        in: path
        required: true
        schema:
          type: string
          maxLength: 16
        description: The identifier of the 'DRAFT' version.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                items_to_delete:
                  type: array
                  items:
                    type: object
                    properties:
                      labelNameOrSku:
                        type: string
      responses:
        '200':
          description: Success. The deletion process has started.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncResponse'
        '400':
          description: Bad Request. The Version was not found or is not in `DRAFT` status, or an item cannot be deleted because it has children, or is marked as mandatory or an alternative in the hierarchy.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                hasChildrenExample:
                  summary: Product has children
                  value:
                    error: Unable to delete product SKU-1 that has related product/s in the product hierarchy.
                    code: 400
                mandatoryOrAlternativeExample:
                  summary: Product is mandatory or alternative
                  value:
                    error: Unable to delete product SKU-1 that was set as mandatory in the product hierarchy.
                    code: 400
                notFoundExample:
                  summary: Version not found
                  value:
                    error: Entity (ID = 7b34133847401b12) not found
                    code: 400
        '403':
          description: Unauthenticated. The `Authorization` token is missing, invalid, or does not match the user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                unauthenticatedExample:
                  summary: Unauthenticated
                  value:
                    error: Unauthenticated
                    code: 403
components:
  schemas:
    ProductHierarchyElement:
      type: object
      required:
      - type
      - labelNameOrSku
      properties:
        type:
          type: string
          enum:
          - PRODUCT
          - BUNDLE
          - LABEL
          description: The type of the hierarchy item.
        labelNameOrSku:
          type: string
          description: The SKU of the product/bundle or the display name of the label.
        mandatory:
          type: boolean
          description: If `true`, the user is required to select this item.
        alternative:
          type: boolean
          description: Used to define a "Pick One" relationship among siblings.
    ProductHierarchyNode:
      type: object
      properties:
        element:
          $ref: '#/components/schemas/ProductHierarchyElement'
        children:
          type: array
          items:
            $ref: '#/components/schemas/ProductHierarchyNode'
          description: A nested list of child items.
    AsyncResponse:
      type: object
      properties:
        request_id:
          type: string
          description: The ID of the asynchronous request for tracking.
    ErrorResponse:
      type: object
      description: A generic error response. The specific message and code vary based on the context.
      properties:
        error:
          type: string
          description: Human-readable error message describing the issue.
        code:
          type: integer
          description: HTTP status code.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A secret token generated by a CPQ administrator.
x-provenance:
  method: searched
  source: https://developers.dealhub.io/reference
  harvested: '2026-10-22'
  tool: harvest-readme-openapi.py
  note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
  assembled_from:
  - https://developers.dealhub.io/reference/activateversion.md
  - https://developers.dealhub.io/reference/deleteallproducts.md
  - https://developers.dealhub.io/reference/deletefromproducthierarchy.md
  - https://developers.dealhub.io/reference/deleteproductsbysku.md
  - https://developers.dealhub.io/reference/duplicateversion.md
  - https://developers.dealhub.io/reference/exportplaybookdata.md
  - https://developers.dealhub.io/reference/extractproductsexcel.md
  - https://developers.dealhub.io/reference/getasyncrequeststatus.md
  - https://developers.dealhub.io/reference/getasyncrequestsummary.md
  - https://developers.dealhub.io/reference/getgeneratequotetemplate.md
  - https://developers.dealhub.io/reference/getproductcatalog.md
  - https://developers.dealhub.io/reference/getproducthierarchy.md
  - https://developers.dealhub.io/reference/getproductsbysku.md
  - https://developers.dealhub.io/reference/getversionbyid.md
  - https://developers.dealhub.io/reference/getversionbyname.md
  - https://developers.dealhub.io/reference/getversionproducts.md
  - https://developers.dealhub.io/reference/getversions.md
  - https://developers.dealhub.io/reference/updateproductcatalog.md
  - https://developers.dealhub.io/reference/updateproducthierarchy.md
  - https://developers.dealhub.io/reference/uploadproductcatalog.md
  merge:
    pages: 20
    deduped: 79
    conflicts_kept_first: 0