Keap Order Total Discounts API
Keap Order Total Discounts API — 7 operations across 4 paths on the Keap REST v2 contract, read from Keap's own published OpenAPI 3.1 document.
Keap Order Total Discounts API — 7 operations across 4 paths on the Keap REST v2 contract, read from Keap's own published OpenAPI 3.1 document.
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/keap-order-total-discounts-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: Keap Order Total Discounts API
description: Keap Public API Documentation
termsOfService: https://www.thryv.com/terms-of-use
contact:
name: Keap
url: https://developer.keap.com/get-support
email: api.keap@thryv.com
license:
name: Apache 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
version: v2
servers:
- url: https://api.infusionsoft.com/crm
security:
- oauth2: []
tags:
- name: Order Total Discounts
paths:
/rest/v2/discounts/orderTotals:
get:
tags:
- Order Total Discounts
summary: List all Order Total Discounts
description: Retrieves a list of Order Total Discounts
operationId: listOrderTotalDiscounts
parameters:
- name: filter
in: query
description: 'Filter to apply, allowed fields are:
- (Boolean) `apply_to_commissions`
- (DiscountStrategy) `discount_strategy`: GROSS or NET
- (DiscountType) `discount_type`: AMOUNT or PERCENT
- (Double) `discount_value`
You will need to apply the `==` operator to check the equality of one of the filters with your searched
word, in the encoded form `%3D%3D`. For the filters listed above, here are some examples:
- `filter=apply_to_commissions%3D%3Dtrue`
- `filter=discount_strategy%3D%3DGROSS`
- `filter=discount_type%3D%3DAMOUNT`
- `filter=discount_value%3D%3D10.0`
- `filter=discount_type%3D%3DAMOUNT%3Bdiscount_strategy%3D%3DNET`
'
required: false
schema:
type: string
- name: page_token
in: query
description: Page token
required: false
schema:
type: string
- name: order_by
in: query
description: 'Attribute and direction to order items.
One of the following fields:
- `apply_to_commissions`
- `discount_strategy`
- `discount_type`
- `discount_value`
- `id`
- `name`
One of the following directions:
- `asc`
- `desc`'
required: false
schema:
type: string
- name: page_size
in: query
description: Total number of items to return per page
required: false
schema:
type: integer
format: int32
maximum: 1000
minimum: 0
example: 0
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListOrderTotalDiscountsResponse'
post:
tags:
- Order Total Discounts
summary: Create an Order Total Discount
description: Creates an Order Total Discount
operationId: createOrderTotalDiscount
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderTotalDiscountRequest'
required: true
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/OrderTotalDiscount'
/rest/v2/discounts/orderTotals/{discount_id}/criteria:
post:
tags:
- Order Total Discounts
summary: Create an Order Total Discount Criteria
description: Creates an Order Total Discount Criteria
operationId: createOrderTotalDiscountCriteria
parameters:
- name: discount_id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateOrderTotalDiscountCriteria'
required: true
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/DiscountCriteria'
/rest/v2/discounts/orderTotals/{discount_id}:
get:
tags:
- Order Total Discounts
summary: Retrieve an Order Total Discount
description: Retrieves an Order Total Discount
operationId: getOrderTotalDiscount
parameters:
- name: discount_id
in: path
required: true
schema:
type: string
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OrderTotalDiscount'
delete:
tags:
- Order Total Discounts
summary: Delete an Order Total Discount
description: Deletes a specified Order Total Discount
operationId: deleteOrderTotalDiscount
parameters:
- name: discount_id
in: path
required: true
schema:
type: string
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'204':
description: No Content
patch:
tags:
- Order Total Discounts
summary: Update an Order Total Discount
description: Updates an Order Total Discount
operationId: updateOrderTotalDiscount
parameters:
- name: discount_id
in: path
required: true
schema:
type: string
- name: update_mask
in: query
description: An optional list of properties to be updated. If set, only the provided properties will be updated and others will be skipped.
required: false
schema:
type: array
items:
type: string
enum:
- name
- description
- apply_to_commissions
- discount_type
- discount_value
- discount_strategy
- criteria
uniqueItems: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateOrderTotalDiscountRequest'
required: true
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OrderTotalDiscount'
/rest/v2/discounts/orderTotals/{discount_id}/criteria/{criteria_id}:
delete:
tags:
- Order Total Discounts
summary: Delete an Order Total Discount Criteria
description: Deletes a specified Order Total Discount Criteria
operationId: deleteOrderTotalDiscountCriteria
parameters:
- name: discount_id
in: path
required: true
schema:
type: string
- name: criteria_id
in: path
required: true
schema:
type: string
responses:
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'501':
description: Method Not Implemented
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'204':
description: No Content
components:
schemas:
CreateOrderTotalDiscountRequest:
type: object
properties:
name:
type: string
description: Name of the discount
example: Bulk Order Discount
description:
type: string
description: Description of the discount
example: $50 off orders over $500
criteria:
type: array
description: List of criteria that must be met for this discount to apply
items:
$ref: '#/components/schemas/CreateOrderTotalDiscountCriteria'
apply_to_commissions:
type: boolean
description: Whether to apply this discount to commission calculations
example: true
discount_type:
type: string
description: 'Type of discount: AMOUNT (fixed amount) or PERCENT (percentage)'
enum:
- AMOUNT
- PERCENT
example: AMOUNT
discount_value:
type: number
format: double
description: Value of the discount (amount or percentage depending on discount_type)
example: 50.0
discount_strategy:
type: string
description: 'Strategy for applying discount: GROSS (before tax) or NET (after tax)'
enum:
- GROSS
- NET
example: GROSS
required:
- discount_type
- discount_value
- name
ErrorDetails:
type: object
properties:
domain:
type: string
resource:
type: string
ListOrderTotalDiscountsResponse:
type: object
properties:
discounts:
type: array
items:
$ref: '#/components/schemas/OrderTotalDiscount'
next_page_token:
type: string
CreateOrderTotalDiscountCriteria:
type: object
properties:
type:
type: string
description: 'Type of criteria: DATE_RANGE, PROMO_CODE, PRODUCT, SUBSCRIPTION_PLAN, or ORDER_TOTAL'
enum:
- DATE_RANGE
- PROMO_CODE
- PRODUCT
- SUBSCRIPTION_PLAN
- ORDER_TOTAL
example: DATE_RANGE
code:
type: string
description: Promotional code for PROMO_CODE criteria
example: SUMMER2024
range_start_time:
type: string
format: date-time
description: Start date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-01-01T00:00:00Z'
range_end_time:
type: string
format: date-time
description: End date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-12-31T23:59:59Z'
product_id:
type: string
description: Product ID for PRODUCT criteria
example: 456
product_quantity_min:
type: integer
format: int32
description: Minimum product quantity for PRODUCT criteria
example: 1
product_quantity_max:
type: integer
format: int32
description: Maximum product quantity for PRODUCT criteria
example: 10
plan_id:
type: string
description: Subscription plan ID for SUBSCRIPTION_PLAN criteria
example: 789
subscription_quantity:
type: integer
format: int32
description: Subscription quantity for SUBSCRIPTION_PLAN criteria
example: 1
total_amount:
type: number
format: double
description: Total amount threshold for ORDER_TOTAL criteria
example: 100.0
operator:
type: string
description: 'Comparison operator for ORDER_TOTAL criteria: LESS_THAN or GREATER_THAN'
enum:
- LESS_THAN
- GREATER_THAN
example: GREATER_THAN
OrderTotalDiscount:
type: object
properties:
id:
type: string
description: Unique identifier for this order total discount
example: 103
name:
type: string
description: Name of the discount
example: Bulk Order Discount
description:
type: string
description: Description of the discount
example: $50 off orders over $500
criteria:
type: array
description: List of criteria that must be met for this discount to apply
items:
$ref: '#/components/schemas/DiscountCriteria'
apply_to_commissions:
type: boolean
description: Whether to apply this discount to commission calculations
example: true
discount_type:
type: string
description: 'Type of discount: AMOUNT (fixed amount) or PERCENT (percentage)'
enum:
- AMOUNT
- PERCENT
example: AMOUNT
discount_value:
type: number
format: double
description: Value of the discount (amount or percentage depending on discount_type)
example: 50.0
discount_strategy:
type: string
description: 'Strategy for applying discount: GROSS (before tax) or NET (after tax)'
enum:
- GROSS
- NET
example: GROSS
UpdateOrderTotalDiscountCriteria:
type: object
properties:
code:
type: string
description: Promotional code for PROMO_CODE criteria
example: SUMMER2024
criteria_id:
type: string
description: Unique identifier for this criteria
example: 501
range_start_time:
type: string
format: date-time
description: Start date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-01-01T00:00:00Z'
range_end_time:
type: string
format: date-time
description: End date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-12-31T23:59:59Z'
product_id:
type: string
description: Product ID for PRODUCT criteria
example: 456
product_quantity_min:
type: integer
format: int32
description: Minimum product quantity for PRODUCT criteria
example: 1
product_quantity_max:
type: integer
format: int32
description: Maximum product quantity for PRODUCT criteria
example: 10
plan_id:
type: string
description: Subscription plan ID for SUBSCRIPTION_PLAN criteria
example: 789
subscription_quantity:
type: integer
format: int32
description: Subscription quantity for SUBSCRIPTION_PLAN criteria
example: 1
total_amount:
type: number
format: double
description: Total amount threshold for ORDER_TOTAL criteria
example: 100.0
operator:
type: string
description: 'Comparison operator for ORDER_TOTAL criteria: LESS_THAN or GREATER_THAN'
enum:
- LESS_THAN
- GREATER_THAN
example: GREATER_THAN
required:
- criteria_id
DiscountCriteria:
type: object
properties:
type:
type: string
description: 'Type of criteria: DATE_RANGE, PROMO_CODE, PRODUCT, SUBSCRIPTION_PLAN, or ORDER_TOTAL'
enum:
- DATE_RANGE
- PROMO_CODE
- PRODUCT
- SUBSCRIPTION_PLAN
- ORDER_TOTAL
example: DATE_RANGE
code:
type: string
description: Promotional code for PROMO_CODE criteria
example: SUMMER2024
criteria_id:
type: string
description: Unique identifier for this criteria
example: 501
range_start_time:
type: string
format: date-time
description: Start date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-01-01T00:00:00Z'
range_end_time:
type: string
format: date-time
description: End date/time for DATE_RANGE criteria (ISO-8601 format)
example: '2024-12-31T23:59:59Z'
product_id:
type: string
description: Product ID for PRODUCT criteria
example: 456
product_quantity_min:
type: integer
format: int32
description: Minimum product quantity for PRODUCT criteria
example: 1
product_quantity_max:
type: integer
format: int32
description: Maximum product quantity for PRODUCT criteria
example: 10
plan_id:
type: string
description: Subscription plan ID for SUBSCRIPTION_PLAN criteria
example: 789
subscription_quantity:
type: integer
format: int32
description: Subscription quantity for SUBSCRIPTION_PLAN criteria
example: 1
total_amount:
type: number
format: double
description: Total amount threshold for ORDER_TOTAL criteria
example: 100.0
operator:
type: string
description: 'Comparison operator for ORDER_TOTAL criteria: LESS_THAN or GREATER_THAN'
enum:
- LESS_THAN
- GREATER_THAN
example: GREATER_THAN
UpdateOrderTotalDiscountRequest:
type: object
properties:
name:
type: string
description: Name of the discount
example: Bulk Order Discount
description:
type: string
description: Description of the discount
example: $50 off orders over $500
criteria:
type: array
description: List of criteria that must be met for this discount to apply
items:
$ref: '#/components/schemas/UpdateOrderTotalDiscountCriteria'
apply_to_commissions:
type: boolean
description: Whether to apply this discount to commission calculations
example: true
discount_type:
type: string
description: 'Type of discount: AMOUNT (fixed amount) or PERCENT (percentage)'
enum:
- AMOUNT
- PERCENT
example: AMOUNT
discount_value:
type: number
format: double
description: Value of the discount (amount or percentage depending on discount_type)
example: 50.0
discount_strategy:
type: string
description: 'Strategy for applying discount: GROSS (before tax) or NET (after tax)'
enum:
- GROSS
- NET
example: GROSS
Error:
type: object
properties:
code:
type: integer
format: int32
message:
type: string
status:
type: string
details:
type: array
items:
$ref: '#/components/schemas/ErrorDetails'
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://accounts.infusionsoft.com/app/oauth/authorize
tokenUrl: https://api.infusionsoft.com/token
scopes: {}