Dealhubio Playbook API
Endpoints for exporting Playbook configuration and data in JSON format, and for generating a Generate Quote API request template based on the Playbook structure.
Endpoints for exporting Playbook configuration and data in JSON format, and for generating a Generate Quote API request template based on the Playbook structure.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/dealhubio:dealhubio-playbook-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Version Playbook 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: Playbook
description: Endpoints for exporting Playbook configuration and data in JSON format, and for generating a Generate Quote API request template based on the Playbook structure.
paths:
/api/v1/version/{versionId}/playbook/{playbookId}/generate-quote-template:
get:
tags:
- Playbook
summary: Get Generate Quote Template
description: 'Returns a preformatted JSON template for API quote generation based on the Playbook structure. Use this template as the starting point for Generate Quote API requests.
Date-type attributes and playbook questions are returned in the format `yyyy-mm-dd hh:mm:ss`.
Template generation rules:
- The template includes all required API fields.
- The template includes default values if they exist. Otherwise, it uses the first available answer.
- The template excludes calculated questions.'
operationId: getGenerateQuoteTemplate
parameters:
- name: versionId
in: path
required: true
schema:
type: string
description: Version name.
- name: playbookId
in: path
required: true
schema:
type: string
description: Playbook name (not the Playbook display name).
responses:
'200':
description: Success. Returns the Generate Quote template JSON.
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateQuoteTemplateResponse'
examples:
generateQuoteTemplateExample:
summary: Template JSON structure
value:
external_opportunity_id: ''
request_action: draft
line_item_details: basic
playbook: <playbook_name>
quote_name: ''
dealroom_publish_name: ''
total_sales_discount: 0
expiration_date: ''
document_type: PDF
timezone_offset: 0
partner_program:
- partner_level_name: ''
program_name: ''
quote_data:
- group_id: <group_id>
questions:
- <question_id_1>: ''
<question_id_2>: ''
line_items:
- sku: <SKU>
item_name: ''
bundle_ref_sku: ''
bundle_ref_id: 0
list_price: 0
net_price_per_unit: 0
net_price: 0
msrp: 0
msrp_discount: 0
sales_discount: 0
total_discount: 0
product_factors:
Quantity: 1
Duration: 1
attributes:
<attribute_name_1>: ''
<attribute_name_2>: 0
<attribute_name_3>: YYYY-MM-DD
partner_program_data:
- partner_program_name: ''
partner_level_item_price: 0
partner_level_item_discount: 0
sign_externally_comment: ''
'400':
description: Bad Request. Invalid versionId.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
'404':
description: Playbook not found.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
examples:
playbookNotFoundExample:
summary: Error response
value:
error: Playbook not found
code: 404
'500':
description: Failed to generate JSON.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
/api/v1/version/{versionName}/playbook/{playbookId}/export:
get:
tags:
- Playbook
summary: Get Playbook Data
description: 'Retrieves the details of the requested Playbook in a specific version, exporting the Playbook configuration and data in JSON format.
Date-type attributes and playbook questions are returned in the format `yyyy-mm-dd hh:mm:ss`.
The result might differ, depending on the requested features.'
operationId: exportPlaybookData
parameters:
- name: versionName
in: path
required: true
schema:
type: string
description: Version name.
- name: playbookId
in: path
required: true
schema:
type: string
description: Playbook name (not the Playbook display name).
responses:
'200':
description: Success. Returns the Playbook details if a valid identifier is provided.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookExportResponse'
examples:
exportPlaybookDataExample:
summary: Successful response
value:
playbook_metadata:
name: API
display: API
document_type:
- PDF
geo_factors_settings: true
present_proposal_summary: true
enable_partner_support: false
sync_document_settings:
enabled: RULE_BASED
based_on: '[QG1.name] = [QG2.question_1]'
sync_product_settings:
enabled: NEVER
based_on: null
playbook_data:
- group_id: QG1
group_name: QG1
group_type: QUESTIONS_GROUP
group_external_object: ''
question_data:
- question_id: name
question: name
question_type: Text list
answers: 1;2
default_answer: '1'
- question_id: address
question: address
question_type: Text list
answers: 1;2;3
default_answer: '1'
- group_id: QG2
group_name: QG2
group_type: REPEATABLE_GROUP
group_external_object: ''
question_data:
- question_id: question_1
question: question 1
question_type: Text list
answers: answer
default_answer: answer
- question_id: question_2
question: question 2
question_type: Text list
answers: answer 2
default_answer: answer 2
'400':
description: Bad Request. Invalid `versionName`.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
'404':
description: Playbook not found.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
examples:
playbookNotFoundExample:
summary: Error response
value:
error: Playbook not found
code: 404
'500':
description: Failed to export Playbook data.
content:
application/json:
schema:
$ref: '#/components/schemas/PlaybookErrorResponse'
components:
schemas:
PlaybookErrorResponse:
type: object
properties:
error:
type: string
description: Error message.
code:
type: integer
description: HTTP status code.
GenerateQuoteTemplateResponse:
type: object
description: Preformatted JSON template for the Generate Quote API, based on the Playbook structure.
properties:
external_opportunity_id:
type: string
maxLength: 50
description: Required. CRM opportunity ID. Required in all requests.
request_action:
type: string
enum:
- draft
- submit
- publish
- sign_externally
description: Required. Action for the quote. Enum, lowercase.
line_item_details:
type: string
enum:
- basic
- all
default: basic
description: Optional. Level of line item detail. `basic` includes SKU, bundle_ref, name, net price, list price, total discount, and product_factors.
playbook:
type: string
maxLength: 50
description: Optional. Unique name of the playbook (UTF-8). If missing, the system uses the first API-type playbook.
quote_name:
type: string
maxLength: 250
description: Optional. Quote or proposal name. The system default applies if missing; an error occurs if no default exists.
dealroom_publish_name:
type: string
maxLength: 250
description: Optional. DealRoom publish name. The system default applies if missing; an error occurs if no default exists.
total_sales_discount:
type: number
format: double
description: Optional. Total discount for all line items. Overrides individual line item discounts if provided.
expiration_date:
type: string
description: Optional. Quote expiration date as a Unix timestamp in milliseconds (GMT). Must not be in the past; the system default applies if missing.
document_type:
type: string
enum:
- DealRoom
- PDF
- WORD
- EXCEL
description: Required. Type of document.
timezone_offset:
type: number
minimum: -12
maximum: 14
default: 0
description: Optional. Timezone offset from GMT.
partner_program:
type: array
items:
$ref: '#/components/schemas/QuoteTemplatePartnerProgram'
description: Optional. Selected partner programs.
quote_data:
type: array
items:
$ref: '#/components/schemas/QuoteTemplateQuoteData'
description: Required. List of question groups and answers.
line_items:
type: array
items:
$ref: '#/components/schemas/QuoteTemplateLineItem'
description: Optional. List of line items.
sign_externally_comment:
type: string
maxLength: 1000
description: Conditionally required. Comment for external signing. Required if `request_action` = `sign_externally`.
PlaybookSyncSettings:
type: object
properties:
enabled:
type: string
description: 'Sync configuration mode. Valid values: `ALWAYS`, `RULE_BASED`, `DISABLED`.'
based_on:
type:
- string
- 'null'
description: Question ID used for the rule. Returns `null` when no rule applies.
PlaybookQuestion:
type: object
properties:
question_id:
type: string
description: Unique question ID.
question:
type: string
description: Question label/text.
question_type:
type: string
description: 'Type of question. Valid values: `text`, `text_list`, `numeric`, `date`.'
answers:
type: string
description: Possible answers, separated by a semicolon.
default_answer:
type:
- string
- 'null'
description: Default answer used for API template generation.
PlaybookGroup:
type: object
properties:
group_id:
type: string
description: Unique group identifier.
group_name:
type: string
description: Display name of the group.
group_type:
type: string
enum:
- QUESTIONS_GROUP
- REPEATABLE_GROUP
description: Group type.
group_external_object:
type:
- string
- 'null'
description: External object reference.
question_data:
type: array
items:
$ref: '#/components/schemas/PlaybookQuestion'
description: List of questions in the group.
QuoteTemplatePartnerProgram:
type: object
properties:
partner_level_name:
type: string
description: Partner level name.
program_name:
type: string
description: Partner program name.
QuoteTemplateQuoteData:
type: object
properties:
group_id:
type: string
maxLength: 50
description: DealHub group ID. Required for each group in `quote_data`.
questions:
type: array
items:
type: object
additionalProperties:
type: string
description: Keys are `question_id`, values are answers. Multi-select answers use the `;` delimiter.
description: Required. List of question answers. The template uses the default answer or the first answer for each question.
QuoteTemplateLineItem:
type: object
properties:
sku:
type: string
description: Required. Product catalog identifier. Must exist in the DealHub catalog.
item_name:
type: string
maxLength: 400
description: Optional. Catalog product name.
bundle_ref_sku:
type: string
description: Conditionally required. Bundle SKU reference. Required if part of a bundle; empty for the bundle product itself.
bundle_ref_id:
type: integer
description: Conditionally required. Unique bundle instance ID. Required for items within a bundle and for the bundle itself.
list_price:
type: number
format: double
description: Required. List price. Positive or negative.
net_price_per_unit:
type: number
format: double
description: Optional. Net price per unit.
net_price:
type: number
format: double
description: 'Required. Total net price: net per unit multiplied by product factors.'
msrp:
type: number
format: double
description: Required. Line item MSRP. Positive or negative.
msrp_discount:
type: number
format: double
description: Required. Discount applied to MSRP. Positive or negative.
sales_discount:
type: number
format: double
description: Required. Sales discount. Positive or negative.
total_discount:
type: number
format: double
description: Required. Total discount. Positive or negative.
product_factors:
type: object
additionalProperties: true
description: Required. Product-specific factors (quantity, duration) as key-value pairs.
attributes:
type: object
additionalProperties: true
description: Optional. Line-item-specific proposal attributes as key-value pairs.
partner_program_data:
type: array
items:
$ref: '#/components/schemas/QuoteTemplatePartnerProgramData'
description: Optional. Partner program-specific discounts.
QuoteTemplatePartnerProgramData:
type: object
description: Partner program-specific discounts.
properties:
partner_program_name:
type: string
maxLength: 200
description: Partner program name.
partner_level_item_price:
type: number
format: double
description: Partner level item price.
partner_level_item_discount:
type: number
format: double
description: Partner level item discount.
PlaybookMetadata:
type: object
properties:
name:
type: string
description: Internal playbook name.
display:
type: string
description: Playbook display name.
document_type:
type: array
items:
type: string
enum:
- PDF
- WORD
- EXCEL
- DEALROOM
description: List of allowed proposal document types.
geo_factors_settings:
type: boolean
description: Enables geo factor logic.
present_proposal_summary:
type: boolean
description: Shows the proposal summary.
enable_partner_support:
type: boolean
description: Indicates whether partner support is enabled.
sync_docs_settings:
allOf:
- $ref: '#/components/schemas/PlaybookSyncSettings'
description: Sync docs configuration.
sync_products_settings:
allOf:
- $ref: '#/components/schemas/PlaybookSyncSettings'
description: Sync products configuration.
PlaybookExportResponse:
type: object
properties:
playbook_metadata:
allOf:
- $ref: '#/components/schemas/PlaybookMetadata'
description: Playbook configuration metadata.
playbook_data:
type: array
items:
$ref: '#/components/schemas/PlaybookGroup'
description: List of question groups in the Playbook.
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