openapi: 3.0.1 info: title: Pipedrive API v1 Activities DealProducts API version: 1.0.0 description: 'Activities are appointments/tasks/events on a calendar that can be associated with a deal, a lead, a person and an organization. Activities can be of different type (such as call, meeting, lunch or a custom type - see ActivityTypes object) and can be assigned to a particular user. Note that activities can also be created without a specific date/time. ' servers: - url: https://api.pipedrive.com/v1 tags: - name: DealProducts description: 'Deal products are goods or services attached to a deal. Each deal product links a product to a deal with configurable quantity, pricing, and discounts, and contributes to the total value of the deal. ' paths: /deals/products: get: summary: Get deal products of several deals description: Returns data about products attached to deals x-tool-description: Retrieves product attachments across multiple deals (up to 100 IDs) in single request. Essential for bulk product analysis, revenue calculations, sales analytics, and commission calculations across deal portfolios. x-token-cost: 10 operationId: getDealsProducts tags: - DealProducts security: - api_key: [] - oauth2: - products:read - products:full - deals:read - deals:full parameters: - in: query name: deal_ids required: true schema: type: array items: type: integer description: An array of integers with the IDs of the deals for which the attached products will be returned. A maximum of 100 deal IDs can be provided. - in: query name: cursor required: false schema: type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - in: query name: limit description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `deal_id`, `add_time`, `update_time`, `order_nr`.' schema: type: string default: id enum: - id - deal_id - add_time - update_time - order_nr - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc responses: '200': description: List of products attached to deals content: application/json: schema: title: GetDealsProductsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products attached to deals items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /deals/{id}/products: get: summary: List products attached to a deal description: Lists products attached to a deal. x-tool-description: 'Retrieves products attached to deal with detailed information: quantities, prices, and configurations. Essential for deal value analysis, product management, accurate summaries, and pricing calculations.' x-token-cost: 10 operationId: getDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - products:read - products:full - deals:read - deals:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: cursor required: false schema: type: string description: For pagination, the marker (an opaque string value) representing the first item on the next page - in: query name: limit description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed. schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `add_time`, `update_time`, `order_nr`.' schema: default: id type: string enum: - id - add_time - update_time - order_nr - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: default: asc type: string enum: - asc - desc responses: '200': description: List of products attached to deals content: application/json: schema: title: GetDealsProductsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products attached to deals items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a product to a deal description: Adds a product to a deal, creating a new item called a deal-product. x-tool-description: Attaches product to deal with configurable quantity, pricing, and discounts. Essential for sales processes, quote generation, and deal composition. Automatically updates deal values and maintains accurate sales tracking. x-token-cost: 5 operationId: addDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - products:full - deals:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: addDealProductRequest required: - item_price - quantity - product_id allOf: - required: - product_id - item_price - quantity title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: 'Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring ' default: true tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' responses: '201': description: Add a product to the deal content: application/json: schema: title: AddDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' example: success: true data: id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' delete: summary: Delete many products from a deal description: Deletes multiple products from a deal. If no product IDs are specified, up to 100 products will be removed from the deal. A maximum of 100 product IDs can be provided per request. x-tool-description: Bulk-deletes products from a deal to simplify management and cleanup. Supports selective deletion (by specifying product IDs) or full removal of up to 100 products per request, enabling efficient deal maintenance and product update workflows. x-token-cost: 15 operationId: deleteManyDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - products:full - deals:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: ids required: false description: Comma-separated list of deal product IDs to delete. If not provided, all deal products will be deleted up to 100 items. Maximum 100 IDs allowed. schema: type: string example: 1,2,3 responses: '200': description: Delete many products from a deal content: application/json: schema: title: DeleteManyDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: ids: type: array description: Array of IDs of products that were deleted from the deal items: type: integer additional_data: type: object nullable: true properties: more_items_in_collection: type: boolean description: Whether there are more products to delete (when the deal has more than 100 products) example: success: true data: ids: - 1 - 2 - 3 additional_data: more_items_in_collection: false /deals/{id}/products/{product_attachment_id}: patch: summary: Update the product attached to a deal description: Updates the details of the product that has been attached to a deal. x-tool-description: 'Modifies product attachment configuration within deal: quantity, pricing, discounts, and properties. Essential for negotiations, quantity updates, configuration corrections, and maintaining accurate deal values.' x-token-cost: 5 operationId: updateDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - products:full - deals:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: product_attachment_id required: true schema: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) requestBody: content: application/json: schema: title: updateDealProductRequest allOf: - title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: 'Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring ' default: true tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' responses: '200': description: Add a product to the deal content: application/json: schema: title: AddDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' example: success: true data: id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' delete: summary: Delete an attached product from a deal description: Deletes a product attachment from a deal, using the `product_attachment_id`. x-tool-description: Removes product attachment from deal by ID, automatically recalculating values and maintaining data integrity. Essential for negotiations, quote revisions, composition changes, and clean product-deal relationships. x-token-cost: 3 operationId: deleteDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - deals:full - products:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: product_attachment_id required: true schema: type: integer description: The product attachment ID responses: '200': description: Delete an attached product from a deal content: application/json: schema: title: DeleteDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of an attached product that was deleted from the deal example: success: true data: id: 123 /deals/{id}/products/bulk: post: summary: Add multiple products to a deal description: Adds multiple products to a deal in a single request. Maximum of 100 products allowed per request. x-tool-description: Bulk attaches multiple products to deal with configurable quantities, pricing, and discounts. Essential for efficient deal composition, batch product management, and streamlined sales processes. Automatically calculates deal values and maintains sales tracking. x-token-cost: 25 operationId: addManyDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - products:full - deals:full parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: createManyDealProductRequest type: object required: - data properties: data: type: array description: Array of products to attach to the deal. Each product object may have the following properties. maxItems: 100 items: title: addDealProductRequest required: - item_price - quantity - product_id allOf: - required: - product_id - item_price - quantity title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: 'Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring ' default: true tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' responses: '201': description: Add many products to a deal content: application/json: schema: title: AddManyDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array of created deal products items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: 'Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` ' - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: 'Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 ' - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: 'Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future ' example: success: true data: - id: 1 sum: 60.46 tax: 0 deal_id: 1 name: Product 1 product_id: 1 product_variation_id: null order_nr: 10 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 2 item_price: 30.23 tax_method: none discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: null - id: 2 sum: 40.5 tax: 0 deal_id: 1 name: Product 2 product_id: 2 product_variation_id: null order_nr: 20 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 40.5 tax_method: none discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: null components: securitySchemes: basic_authentication: type: http scheme: basic description: Base 64 encoded string containing the `client_id` and `client_secret` values. The header value should be `Basic `. api_key: type: apiKey name: x-api-token in: header oauth2: type: oauth2 description: For more information, see https://pipedrive.readme.io/docs/marketplace-oauth-authorization flows: authorizationCode: authorizationUrl: https://oauth.pipedrive.com/oauth/authorize tokenUrl: https://oauth.pipedrive.com/oauth/token refreshUrl: https://oauth.pipedrive.com/oauth/token scopes: base: Read settings of the authorized user and currencies in an account deals:read: Read most of the data about deals and related entities - deal fields, products, followers, participants; all notes, files, filters, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal) deals:full: Create, read, update and delete deals, its participants and followers; all files, notes, and filters. It also includes read access to deal fields, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal) mail:read: Read mail threads and messages mail:full: Read, update and delete mail threads. Also grants read access to mail messages activities:read: Read activities, its fields and types; all files and filters activities:full: Create, read, update and delete activities and all files and filters. Also includes read access to activity fields and types contacts:read: Read the data about persons and organizations, their related fields and followers; also all notes, files, filters contacts:full: Create, read, update and delete persons and organizations and their followers; all notes, files, filters. Also grants read access to contacts-related fields products:read: Read products, its fields, files, followers and products connected to a deal products:full: Create, read, update and delete products and its fields; add products to deals deal-fields:full: Create, read, update and delete deal fields product-fields:full: Create, read, update and delete product fields contact-fields:full: Create, read, update and delete person and organization fields projects:read: Read projects and its fields, tasks and project templates projects:full: Create, read, update and delete projects and its fields; add projects templates and project related tasks users:read: Read data about users (people with access to a Pipedrive account), their permissions, roles and followers recents:read: Read all recent changes occurred in an account. Includes data about activities, activity types, deals, files, filters, notes, persons, organizations, pipelines, stages, products and users search:read: Search across the account for deals, persons, organizations, files and products, and see details about the returned results admin: Allows to do many things that an administrator can do in a Pipedrive company account - create, read, update and delete pipelines and its stages; deal, person and organization fields; activity types; users and permissions, etc. It also allows the app to create webhooks and fetch and delete webhooks that are created by the app leads:read: Read data about leads and lead labels leads:full: Create, read, update and delete leads and lead labels phone-integration: Enables advanced call integration features like logging call duration and other metadata, and play call recordings inside Pipedrive goals:read: Read data on all goals goals:full: Create, read, update and delete goals video-calls: Allows application to register as a video call integration provider and create conference links messengers-integration: Allows application to register as a messengers integration provider and allows them to deliver incoming messages and their statuses