openapi: 3.2.0 info: title: Infusionsoft Products API license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: '1.0' description: 'Operations tagged Products across 4 of this provider''s published API definitions: infusionsoft-keap-sdk-v2-swagger-original.yml, infusionsoft-rest-v2-2025-11-05-openapi-original.json, infusionsoft-rest-v2-openapi-original.json, infusionsoft-rest-v2-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.keap.com/crm - url: https://api.infusionsoft.com/crm/rest - url: https://api.infusionsoft.com/crm tags: - name: Products paths: /rest/v2/products: get: tags: - Products summary: List Products description: Retrieves a list of Products operationId: listProducts parameters: - name: filter in: query description: 'Filter to apply, allowed fields are: - (String) `name` - Wildcard matching allowed - (String) `sku` - Wildcard matching allowed - (String) `description` - Wildcard matching allowed - (String) `short_description` - Wildcard matching allowed - (String) `product_id` - supports comparison operators: `==`, `>`, `<`, `>=`, `<=` - (List[String]) `product_ids` - accepts a comma-separated list of product IDs 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 fields which allow wildcard matching, you may use the * wildcard character (or its encoded form %2A) for case-insensitive partial matching on text fields. Example of a valid pattern of wildcard usage: - `field==foo*` finds anything in `field` that begins with `foo` For the filters listed above, here are some examples: - `filter=name%3D%3Dtestsearch` - `filter=name%3D%3Dtest*` (starts with "test") - `filter=sku%3D%3Dtestsearch` - `filter=sku%3D%3DSKU*` (starts with "SKU") - `filter=product_id>5` (product ID greater than 5) - `filter=product_id>=10` (product ID greater than or equal to 10) - `filter=product_id%3D%3D42` (product ID equals 42) - `filter=product_ids%3D%3D1,2,3,4,5` (products with IDs 1, 2, 3, 4, or 5) - `filter=name%3D%3Dtestsearch%3Bsku%3D%3Dtestsearch` ' required: false schema: type: string - name: order_by in: query description: 'Attribute and direction to order items. One of the following fields: - `name` - `sku` - `last_updated_time` 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 - name: page_token in: query description: Page token required: false schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListProductsResponse_List' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] post: tags: - Products summary: Create a Product description: Creates a new product operationId: createProduct requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateProductRequest_Detail' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/RestV2Product_Detail' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}:adjustInventory: post: tags: - Products summary: Adjust Inventory of a Product description: Increase or decrease the quantity of the Product operationId: adjustInventory parameters: - name: product_id in: path description: product_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProductInventoryRequest_Detail' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RestV2Product_Detail' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/options: get: tags: - Products summary: List Product Options description: Retrieves all options of a Product operationId: listProductOptions parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ListProductOptionsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] post: tags: - Products summary: Create a Product Option description: Creates a new product option operationId: createProductOption parameters: - name: product_id in: path description: product_id required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateProductOptionRequest' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ProductOption' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/options/{product_option_id}/listItems: post: tags: - Products summary: Add a Product Option List Option Value description: Adds product option values to a product option of type LIST operationId: addProductOptionListOptionValue parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id required: true schema: type: string requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/CreateProductOptionListOption' required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ProductOption' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/images: post: tags: - Products summary: Create the Product Image description: Creates the Product Image file and uploads it to the specified Product operationId: createProductImage parameters: - name: product_id in: path description: The product ID required: true schema: type: string - name: legacy in: query description: Set to 'true' if the product image should also be used in legacy cart features. Only one image is allowed. If an image already exists, it will be replaced by the current image. required: false schema: type: boolean requestBody: content: multipart/form-data: schema: type: object properties: file: type: string format: binary description: The image file to upload required: - file responses: '201': description: Created '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] delete: tags: - Products summary: Delete the Product Image description: Deletes the Product Image from the specified Product operationId: deleteProductImage parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}: get: tags: - Products summary: Get a Product description: Gets a single Product operationId: getProduct parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RestV2Product_Detail' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] delete: tags: - Products summary: Delete a Product description: Deletes a single product operationId: deleteProduct parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] patch: tags: - Products summary: Update a Product description: Updates a product operationId: updateProduct parameters: - name: product_id in: path description: product_id 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: - active - name - description - price - sku - shippable - short_description - subscription_only - storefront_hidden - weight - taxable - country_taxable - city_taxable - state_taxable - inventory_limit - out_of_stock_enabled - email_for_inventory_notifications - top_html - bottom_html - is_package - needs_digital_delivery - delivery_description uniqueItems: true requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProductRequest_Detail' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RestV2Product_Detail' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/options/{product_option_id}: get: tags: - Products summary: Get Product Option description: Retrieves a Product Option operationId: getProductOption parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id required: true schema: type: string responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProductOption' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] delete: tags: - Products summary: Delete a Product Option description: Deletes a single product option operationId: deleteProductOption parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] patch: tags: - Products summary: Updates a Product Option description: Updates a product option operationId: updateProductOption parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id 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: - option_label - display_order - required - minimum_characters - maximum_characters - allow_spaces - only_starts_with - only_ends_with - only_contains - error_message uniqueItems: true requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProductOptionRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProductOption' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/options/{product_option_id}/listItems/{item_id}: delete: tags: - Products summary: Delete a Product Option List Item description: Deletes a single option value in a Product Option of type LIST operationId: deleteProductOptionListOptionValue parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id required: true schema: type: string - name: item_id in: path description: item_id required: true schema: type: string responses: '204': description: No Content '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] patch: tags: - Products summary: Updates a Product Option List Option Value description: Updates a single product option value operationId: updateProductOptionListOptionValue parameters: - name: product_id in: path description: product_id required: true schema: type: string - name: product_option_id in: path description: product_option_id required: true schema: type: string - name: item_id in: path description: item_id 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: - item_label - item_code - item_display_order - price_adjustment uniqueItems: true requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateProductOptionListOption' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ProductOption' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /rest/v2/products/{product_id}/images/legacyImageData: get: tags: - Products summary: Retrieve Product Legacy Image Data description: Retrieves the product's legacy image operationId: getFileData parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: string format: byte '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/Error' '405': description: Method Not Allowed 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' security: - oauth2: [] servers: - url: https://api.keap.com/crm /v2/products: get: tags: - Products summary: List Products description: Retrieves a list of Products operationId: listProductsUsingGET_1 parameters: - name: filter in: query description: 'Filter to apply, allowed fields are: - (String) `name` ' schema: type: string - name: order_by in: query description: 'Attribute and direction to order items. One of the following fields: - `name` One of the following directions: - `asc` - `desc`' schema: type: string - name: page_size in: query description: Total number of items to return per page schema: maximum: 1000 minimum: 1 type: integer format: int32 example: 0 - name: page_token in: query description: Page token schema: type: string responses: '200': description: OK content: application/json: schema: title: ListProductsResponse type: object properties: next_page_token: type: string products: type: array items: title: RestV2Product type: object properties: active: type: boolean description: True means active, False means inactive categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description id: type: string description: The product ID inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name options: type: array description: List of product options. Can be empty. items: title: ProductOptions type: object properties: fixed_options: type: array description: List of option values for the fixed option items: title: ProductFixedOption type: object properties: code: type: string description: An internal code to reference the option value price_adjustment: type: number description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. format: double value: type: string description: The displayable label given to the option name: type: string description: The option name required: type: boolean description: If the user is required to select/fill in an option for the product type: type: string description: Can be FIXED or VARIABLE. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE variable_setting: title: ProductVariableSetting type: object properties: contain_spaces: type: boolean description: If spaces are allowed for the option contains: type: string description: Requires the value (excluding start and end) to contain given type. Can be LETTER, NUMBER, or BOTH. end_with: type: string description: Requires the value to end with the given type. Can be LETTER, NUMBER, or BOTH. max_chars: type: integer description: Max allowable chars. Its value must be greater than min_chars format: int32 min_chars: type: integer description: Minimum allowable characters format: int32 start_with: type: string description: Requires the value to start with the given type. Can be LETTER, NUMBER, or BOTH. validation_msg: type: string description: Customized validation message to display when option criteria aren’t met price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: title: SubscriptionPlan type: object properties: active: type: boolean description: If the subscription plan is active or not. allow_prorating: type: boolean description: Whether or not the plan will allow prorating. cycle_type: type: string description: 'The cycle type of the subscription plan. Possible values: YEARLY, MONTHLY, WEEKLY, DAILY' enum: - DAILY - WEEKLY - MONTHLY - YEARLY display_order_index: type: integer description: The order index where this plan will be displayed on a page against other plans. Smaller number indicates plan will be displayed higher in the list. format: int32 frequency: type: integer description: Total number of times of a cycle type which constitutes a plan cycle. Minimum value is 1. format: int32 id: type: string description: Id of the subscription plan. plan_price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale product_id: type: string total_cycles: type: integer description: Total number of cycles the plan will run before ending. Value of 0 indicates plan will never end. format: int32 taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: Product weight format: double '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false post: tags: - Products summary: Create a Product description: Creates a new product operationId: createProductUsingPOST_1 requestBody: description: createProductRequest content: application/json: schema: title: CreateProductRequest required: - name - price - short_description type: object properties: active: type: boolean description: True means active, False means inactive city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name price: type: integer description: The product price. The value is in the currency’s smallest unit. e.g. $12.50 is 1250. Must be greater than or equal to 0. format: int64 shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: The product weight. Must be greater than or equal to 0. format: double required: true responses: '201': description: Created content: application/json: schema: title: RestV2Product type: object properties: active: type: boolean description: True means active, False means inactive categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description id: type: string description: The product ID inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name options: type: array description: List of product options. Can be empty. items: title: ProductOptions type: object properties: fixed_options: type: array description: List of option values for the fixed option items: title: ProductFixedOption type: object properties: code: type: string description: An internal code to reference the option value price_adjustment: type: number description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. format: double value: type: string description: The displayable label given to the option name: type: string description: The option name required: type: boolean description: If the user is required to select/fill in an option for the product type: type: string description: Can be FIXED or VARIABLE. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE variable_setting: title: ProductVariableSetting type: object properties: contain_spaces: type: boolean description: If spaces are allowed for the option contains: type: string description: Requires the value (excluding start and end) to contain given type. Can be LETTER, NUMBER, or BOTH. end_with: type: string description: Requires the value to end with the given type. Can be LETTER, NUMBER, or BOTH. max_chars: type: integer description: Max allowable chars. Its value must be greater than min_chars format: int32 min_chars: type: integer description: Minimum allowable characters format: int32 start_with: type: string description: Requires the value to start with the given type. Can be LETTER, NUMBER, or BOTH. validation_msg: type: string description: Customized validation message to display when option criteria aren’t met price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: title: SubscriptionPlan type: object properties: active: type: boolean description: If the subscription plan is active or not. allow_prorating: type: boolean description: Whether or not the plan will allow prorating. cycle_type: type: string description: 'The cycle type of the subscription plan. Possible values: YEARLY, MONTHLY, WEEKLY, DAILY' enum: - DAILY - WEEKLY - MONTHLY - YEARLY display_order_index: type: integer description: The order index where this plan will be displayed on a page against other plans. Smaller number indicates plan will be displayed higher in the list. format: int32 frequency: type: integer description: Total number of times of a cycle type which constitutes a plan cycle. Minimum value is 1. format: int32 id: type: string description: Id of the subscription plan. plan_price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale product_id: type: string total_cycles: type: integer description: Total number of cycles the plan will run before ending. Value of 0 indicates plan will never end. format: int32 taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: Product weight format: double '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false x-codegen-request-body-name: createProductRequest servers: - url: https://api.infusionsoft.com/crm/rest /v2/products/{product_id}: get: tags: - Products summary: Get a Product description: Gets a single Product operationId: getProductUsingGET parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '200': description: OK content: application/json: schema: title: RestV2Product type: object properties: active: type: boolean description: True means active, False means inactive categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description id: type: string description: The product ID inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name options: type: array description: List of product options. Can be empty. items: title: ProductOptions type: object properties: fixed_options: type: array description: List of option values for the fixed option items: title: ProductFixedOption type: object properties: code: type: string description: An internal code to reference the option value price_adjustment: type: number description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. format: double value: type: string description: The displayable label given to the option name: type: string description: The option name required: type: boolean description: If the user is required to select/fill in an option for the product type: type: string description: Can be FIXED or VARIABLE. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE variable_setting: title: ProductVariableSetting type: object properties: contain_spaces: type: boolean description: If spaces are allowed for the option contains: type: string description: Requires the value (excluding start and end) to contain given type. Can be LETTER, NUMBER, or BOTH. end_with: type: string description: Requires the value to end with the given type. Can be LETTER, NUMBER, or BOTH. max_chars: type: integer description: Max allowable chars. Its value must be greater than min_chars format: int32 min_chars: type: integer description: Minimum allowable characters format: int32 start_with: type: string description: Requires the value to start with the given type. Can be LETTER, NUMBER, or BOTH. validation_msg: type: string description: Customized validation message to display when option criteria aren’t met price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: title: SubscriptionPlan type: object properties: active: type: boolean description: If the subscription plan is active or not. allow_prorating: type: boolean description: Whether or not the plan will allow prorating. cycle_type: type: string description: 'The cycle type of the subscription plan. Possible values: YEARLY, MONTHLY, WEEKLY, DAILY' enum: - DAILY - WEEKLY - MONTHLY - YEARLY display_order_index: type: integer description: The order index where this plan will be displayed on a page against other plans. Smaller number indicates plan will be displayed higher in the list. format: int32 frequency: type: integer description: Total number of times of a cycle type which constitutes a plan cycle. Minimum value is 1. format: int32 id: type: string description: Id of the subscription plan. plan_price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale product_id: type: string total_cycles: type: integer description: Total number of cycles the plan will run before ending. Value of 0 indicates plan will never end. format: int32 taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: Product weight format: double '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false delete: tags: - Products summary: Delete a Product description: Deletes a single product operationId: deleteProductUsingDELETE_1 parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '204': description: No Content '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false patch: tags: - Products summary: Update a Product description: Updates a product operationId: updateProductUsingPATCH_1 parameters: - name: product_id in: path description: product_id 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. allowEmptyValue: false style: form explode: true schema: type: array items: type: string enum: - active - name - description - price - sku - shippable - short_description - subscription_only - storefront_hidden - weight - taxable - country_taxable - city_taxable - state_taxable - inventory_limit - out_of_stock_enabled - email_for_inventory_notifications requestBody: description: updateProductRequest content: application/json: schema: title: UpdateProductRequest type: object properties: active: type: boolean description: True means active, False means inactive city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 name: type: string description: Product name out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory price: type: integer description: The product price. The value is in the currency’s smallest unit. e.g. $12.50 is 1250. Must be greater than or equal to 0. format: int64 shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: The product weight. Must be greater than or equal to 0. format: double required: true responses: '200': description: OK content: application/json: schema: title: RestV2Product type: object properties: active: type: boolean description: True means active, False means inactive categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description id: type: string description: The product ID inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name options: type: array description: List of product options. Can be empty. items: title: ProductOptions type: object properties: fixed_options: type: array description: List of option values for the fixed option items: title: ProductFixedOption type: object properties: code: type: string description: An internal code to reference the option value price_adjustment: type: number description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. format: double value: type: string description: The displayable label given to the option name: type: string description: The option name required: type: boolean description: If the user is required to select/fill in an option for the product type: type: string description: Can be FIXED or VARIABLE. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE variable_setting: title: ProductVariableSetting type: object properties: contain_spaces: type: boolean description: If spaces are allowed for the option contains: type: string description: Requires the value (excluding start and end) to contain given type. Can be LETTER, NUMBER, or BOTH. end_with: type: string description: Requires the value to end with the given type. Can be LETTER, NUMBER, or BOTH. max_chars: type: integer description: Max allowable chars. Its value must be greater than min_chars format: int32 min_chars: type: integer description: Minimum allowable characters format: int32 start_with: type: string description: Requires the value to start with the given type. Can be LETTER, NUMBER, or BOTH. validation_msg: type: string description: Customized validation message to display when option criteria aren’t met price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: title: SubscriptionPlan type: object properties: active: type: boolean description: If the subscription plan is active or not. allow_prorating: type: boolean description: Whether or not the plan will allow prorating. cycle_type: type: string description: 'The cycle type of the subscription plan. Possible values: YEARLY, MONTHLY, WEEKLY, DAILY' enum: - DAILY - WEEKLY - MONTHLY - YEARLY display_order_index: type: integer description: The order index where this plan will be displayed on a page against other plans. Smaller number indicates plan will be displayed higher in the list. format: int32 frequency: type: integer description: Total number of times of a cycle type which constitutes a plan cycle. Minimum value is 1. format: int32 id: type: string description: Id of the subscription plan. plan_price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale product_id: type: string total_cycles: type: integer description: Total number of cycles the plan will run before ending. Value of 0 indicates plan will never end. format: int32 taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: Product weight format: double '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false x-codegen-request-body-name: updateProductRequest servers: - url: https://api.infusionsoft.com/crm/rest /v2/products/{product_id}/images: post: tags: - Products summary: Create the Product Image description: Creates the Product Image file and uploads it to the specified Product operationId: createProductImageUsingPOST_1 parameters: - name: product_id in: path description: product_id required: true schema: type: string requestBody: content: multipart/form-data: schema: required: - file type: object properties: file: type: string description: File to upload format: binary required: true responses: '201': description: Created '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false delete: tags: - Products summary: Delete the Product Image description: Deletes the Product Image from the specified Product operationId: deleteProductImageUsingDELETE_1 parameters: - name: product_id in: path description: product_id required: true schema: type: string responses: '204': description: No Content '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '404': description: Not Found content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false servers: - url: https://api.infusionsoft.com/crm/rest /v2/products/{product_id}:adjustInventory: post: tags: - Products summary: Adjust Inventory of a Product description: Increase or decrease the quantity of the Product operationId: adjustInventoryUsingPOST parameters: - name: product_id in: path description: product_id required: true schema: type: string requestBody: description: updateProductInventoryRequest content: application/json: schema: title: UpdateProductInventoryRequest required: - quantity - type type: object properties: quantity: type: integer description: The amount to increment or decrement by. Must be greater than or equal to 0. format: int32 type: type: string description: The direction to alter the quantity in enum: - INCREASE - DECREASE required: true responses: '200': description: OK content: application/json: schema: title: RestV2Product type: object properties: active: type: boolean description: True means active, False means inactive categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string city_taxable: type: boolean description: If city-based taxes should be applied to this product country_taxable: type: boolean description: If country-based taxes should be applied to this product description: type: string description: Product long description id: type: string description: The product ID inventory: title: ProductInventory type: object properties: email_for_inventory_notifications: type: string description: The email address for notifications about inventory inventory_count: type: integer description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. format: int32 inventory_limit: type: integer description: The inventory limit for this product. Must be greater than or equal to 0. format: int32 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory name: type: string description: Product name options: type: array description: List of product options. Can be empty. items: title: ProductOptions type: object properties: fixed_options: type: array description: List of option values for the fixed option items: title: ProductFixedOption type: object properties: code: type: string description: An internal code to reference the option value price_adjustment: type: number description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. format: double value: type: string description: The displayable label given to the option name: type: string description: The option name required: type: boolean description: If the user is required to select/fill in an option for the product type: type: string description: Can be FIXED or VARIABLE. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE variable_setting: title: ProductVariableSetting type: object properties: contain_spaces: type: boolean description: If spaces are allowed for the option contains: type: string description: Requires the value (excluding start and end) to contain given type. Can be LETTER, NUMBER, or BOTH. end_with: type: string description: Requires the value to end with the given type. Can be LETTER, NUMBER, or BOTH. max_chars: type: integer description: Max allowable chars. Its value must be greater than min_chars format: int32 min_chars: type: integer description: Minimum allowable characters format: int32 start_with: type: string description: Requires the value to start with the given type. Can be LETTER, NUMBER, or BOTH. validation_msg: type: string description: Customized validation message to display when option criteria aren’t met price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale shippable: type: boolean description: If the product requires shipping short_description: type: string description: Product short description sku: type: string description: Product SKU state_taxable: type: boolean description: If state-based taxes should be applied to this product storefront_hidden: type: boolean description: If the product should not be shown in the storefront subscription_only: type: boolean description: If the product is a subscription-only product subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: title: SubscriptionPlan type: object properties: active: type: boolean description: If the subscription plan is active or not. allow_prorating: type: boolean description: Whether or not the plan will allow prorating. cycle_type: type: string description: 'The cycle type of the subscription plan. Possible values: YEARLY, MONTHLY, WEEKLY, DAILY' enum: - DAILY - WEEKLY - MONTHLY - YEARLY display_order_index: type: integer description: The order index where this plan will be displayed on a page against other plans. Smaller number indicates plan will be displayed higher in the list. format: int32 frequency: type: integer description: Total number of times of a cycle type which constitutes a plan cycle. Minimum value is 1. format: int32 id: type: string description: Id of the subscription plan. plan_price: title: CurrencyValue type: object properties: amount: type: integer description: The price amount in the smallest currency unit format: int64 currency_code: type: string description: Three-letter ISO currency code formatted_amount: type: string description: The product amount formatted using the tenant's currency locale product_id: type: string total_cycles: type: integer description: Total number of cycles the plan will run before ending. Value of 0 indicates plan will never end. format: int32 taxable: type: boolean description: Whether or not the product should be taxed weight: type: number description: Product weight format: double '401': description: Unauthorized content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '403': description: Forbidden content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' '500': description: Internal Server Error content: application/json: schema: title: Error type: object properties: cause: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' deprecated: false x-codegen-request-body-name: updateProductInventoryRequest servers: - url: https://api.infusionsoft.com/crm/rest components: schemas: UpdateProductRequest_Detail: type: object properties: name: type: string description: Product name example: Premium Widget sku: type: string description: Product SKU example: PROD-001 price: type: integer format: int64 description: The product price. The value is in the currency's smallest unit. e.g. $12.50 is 1250. Must be greater than or equal to 0. example: 1250 active: type: boolean description: True means active, False means inactive example: true description: type: string description: Product long description example: A high-quality widget shippable: type: boolean description: If the product requires shipping example: true weight: type: number format: double description: The product weight. Must be greater than or equal to 0. example: 2.5 taxable: type: boolean description: Whether or not the product should be taxed example: true short_description: type: string description: Product short description example: Premium widget subscription_only: type: boolean description: If the product is a subscription-only product example: false storefront_hidden: type: boolean description: If the product should not be shown in the storefront example: false country_taxable: type: boolean description: If country-based taxes should be applied to this product example: false state_taxable: type: boolean description: If state-based taxes should be applied to this product example: true city_taxable: type: boolean description: If city-based taxes should be applied to this product example: false inventory_limit: type: integer format: int32 description: The inventory limit for this product. Must be greater than or equal to 0. example: 100 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory example: false email_for_inventory_notifications: type: string description: The email address for notifications about inventory example: notify@example.com top_html: type: string bottom_html: type: string is_package: type: boolean needs_digital_delivery: type: boolean delivery_description: type: string CreateProductOptionTextOption: type: object properties: minimum_characters: type: integer format: int32 description: Minimum allowable characters. Minimum is 0. maximum_characters: type: integer format: int32 description: Maximum allowable characters. Minimum is 0. allow_spaces: type: boolean description: Whether or not to allow whitespace in the text. only_starts_with: type: string description: Restricts the text to start with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_ends_with: type: string description: Restricts the text to end with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_contains: type: string description: Restricts the text to contain certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH error_message: type: string description: An error message to display if any rules are broken. Cannot be whitespace only. ProductFixedOption_Detail: type: object properties: value: type: string description: The displayable label given to the option example: Red code: type: string description: An internal code to reference the option value example: RED price_adjustment: type: number format: double description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. example: 500 ListProductOptionsResponse: type: object properties: product_options: type: array items: $ref: '#/components/schemas/ProductOption' ListOption: type: object properties: item_id: type: string description: The unique id of this option’s item value. item_label: type: string description: The displayable name of the option item. item_code: type: string description: An internal code (e.g. sku) to associate the item option. item_display_order: type: integer format: int64 description: The order in which this item will be displayed among other items. Minimum is 0. Lower values indicate higher priority in order. price_adjustment: type: number format: double description: An amount to adjust to the product price is selected. Negative value indicates subtraction from price. ListProductsResponse_List: type: object properties: products: type: array items: $ref: '#/components/schemas/RestV2Product_List' next_page_token: type: string ProductOption: type: object properties: id: type: string description: The unique id of the product option required: type: boolean description: Whether this option is required for product purchase. option_label: type: string description: The displayable name of the option. E.g. Size product_id: type: string description: The product id that this option belongs to. option_type: type: string description: The type of option. Possible valid values are LIST and TEXT. enum: - LIST - TEXT display_order: type: integer format: int32 description: The order in which this option will be displayed among other options. Minimum is 0. Lower values indicate higher priority in order. list_items: type: array description: Appears only for option_type of LIST. A fixed list of available selectable items for this product option. e.g (Medium) items: $ref: '#/components/schemas/ListOption' text_rules: $ref: '#/components/schemas/TextOption' description: The option is a user-defined free-form field. The settings define the restrictions on what can be entered. TextOption: type: object properties: minimum_characters: type: integer format: int32 description: Minimum allowable characters. Minimum is 0. maximum_characters: type: integer format: int32 description: Maximum allowable characters. Minimum is 0. allow_spaces: type: boolean description: Whether or not to allow whitespace in the text. only_starts_with: type: string description: Restricts the text to start with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_ends_with: type: string description: Restricts the text to end with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_contains: type: string description: Restricts the text to contain certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH error_message: type: string description: An error message to display if any rules are broken. SubscriptionPlan_Detail: type: object properties: id: type: string description: The subscription plan id example: 1 active: type: boolean description: If the subscription plan should be active/available for purchase example: true prorate: type: boolean description: If the subscription plan should allow prorating example: false billing_cycle: type: string description: How frequent to bill. enum: - DAILY - WEEKLY - MONTHLY - YEARLY example: MONTHLY billing_frequency: type: integer format: int32 description: How many times per billing cycle to bill example: 1 number_of_cycles: type: integer format: int32 description: How many billing cycles to bill. Optional field i.e. can be no value or 0. example: 12 plan_price: $ref: '#/components/schemas/CurrencyValue_Detail' description: The price of the subscription plan order_index: type: integer format: int32 description: Determines the order in which the plan will be displayed example: 0 Error: type: object properties: code: type: integer format: int32 message: type: string status: type: string details: type: array items: $ref: '#/components/schemas/ErrorDetails' UpdateProductOptionRequest: type: object properties: required: type: boolean description: Whether this option is required for product purchase. option_label: type: string description: The displayable name of the option (e.g. Size). Cannot be whitespace only. display_order: type: integer format: int32 description: The order in which this option will be displayed among other options. Minimum is 0. Lower values indicate higher priority in order. minimum_characters: type: integer format: int32 description: Used only for option_type of `TEXT`. Minimum allowable characters. Minimum is 0. maximum_characters: type: integer format: int32 description: Used only for option_type of `TEXT`. Maximum allowable characters. Minimum is 0. allow_spaces: type: boolean description: Used only for option_type of `TEXT`. Whether or not to allow whitespace in the text. only_starts_with: type: string description: Used only for option_type of `TEXT`. Restricts the text to start with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_ends_with: type: string description: Used only for option_type of `TEXT`. Restricts the text to end with certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH only_contains: type: string description: Used only for option_type of `TEXT`. Restricts the text to contain certain character types. Valid values are NONE, LETTER, DIGIT, BOTH. enum: - NONE - LETTER - DIGIT - BOTH error_message: type: string description: Used only for option_type of `TEXT`. An error message to display if any rules are broken. Cannot be whitespace only. ProductVariableSetting_List: type: object properties: contains: type: string description: Requires the value (excluding start and end) to contain given type. enum: - LETTER - NUMBER - BOTH example: BOTH min_chars: type: integer format: int32 description: Minimum allowable characters example: 1 max_chars: type: integer format: int32 description: Max allowable chars. Its value must be greater than min_chars example: 50 contain_spaces: type: boolean description: If spaces are allowed for the option example: true start_with: type: string description: Requires the value to start with the given type. enum: - LETTER - NUMBER - BOTH example: LETTER end_with: type: string description: Requires the value to end with the given type. enum: - LETTER - NUMBER - BOTH example: LETTER validation_msg: type: string description: Customized validation message to display when option criteria aren't met example: Invalid input format RestV2Product_Detail: type: object properties: id: type: string description: The product ID example: 1 name: type: string description: Product name example: Premium Widget price: $ref: '#/components/schemas/CurrencyValue_Detail' description: The product price active: type: boolean description: True means active, False means inactive example: true description: type: string description: Product long description example: A high-quality widget for all your needs sku: type: string description: Product SKU example: PROD-001 shippable: type: boolean description: If the product requires shipping example: true weight: type: number format: double description: Product weight example: 2.5 taxable: type: boolean description: Whether or not the product should be taxed example: true categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string options: type: array description: List of product options. Can be empty. items: $ref: '#/components/schemas/ProductOptions_Detail' inventory: $ref: '#/components/schemas/ProductInventory_Detail' description: The inventory details for this product short_description: type: string description: Product short description example: Premium widget subscription_only: type: boolean description: If the product is a subscription-only product example: false storefront_hidden: type: boolean description: If the product should not be shown in the storefront example: false country_taxable: type: boolean description: If country-based taxes should be applied to this product example: false state_taxable: type: boolean description: If state-based taxes should be applied to this product example: true city_taxable: type: boolean description: If city-based taxes should be applied to this product example: false subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: $ref: '#/components/schemas/SubscriptionPlan_Detail' top_html: type: string bottom_html: type: string is_package: type: boolean needs_digital_delivery: type: boolean has_legacy_image: type: boolean delivery_description: type: string create_time: type: string update_time: type: string UpdateProductInventoryRequest_Detail: type: object properties: type: type: string enum: - INCREASE - DECREASE quantity: type: integer format: int32 ProductOptions_List: type: object properties: name: type: string description: The option name example: Color type: type: string description: The option type. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE example: FIXED required: type: boolean description: If the user is required to select/fill in an option for the product example: true fixed_options: type: array description: List of option values for the fixed option items: $ref: '#/components/schemas/ProductFixedOption_List' variable_setting: $ref: '#/components/schemas/ProductVariableSetting_List' description: The option is a user-defined free-form field. The settings define the restrictions on what can be entered. SubscriptionPlan_List: type: object properties: id: type: string description: The subscription plan id example: 1 active: type: boolean description: If the subscription plan should be active/available for purchase example: true prorate: type: boolean description: If the subscription plan should allow prorating example: false billing_cycle: type: string description: How frequent to bill. enum: - DAILY - WEEKLY - MONTHLY - YEARLY example: MONTHLY billing_frequency: type: integer format: int32 description: How many times per billing cycle to bill example: 1 number_of_cycles: type: integer format: int32 description: How many billing cycles to bill. Optional field i.e. can be no value or 0. example: 12 plan_price: $ref: '#/components/schemas/CurrencyValue_List' description: The price of the subscription plan order_index: type: integer format: int32 description: Determines the order in which the plan will be displayed example: 0 ProductFixedOption_List: type: object properties: value: type: string description: The displayable label given to the option example: Red code: type: string description: An internal code to reference the option value example: RED price_adjustment: type: number format: double description: Positive value indicates additional amount added to the original price. Negative value indicates subtraction from the original price. example: 500 UpdateProductOptionListOption: type: object properties: item_label: type: string description: The displayable name of the option item. Cannot be whitespace only. item_code: type: string description: An internal code (e.g. sku) to associate the item option. item_display_order: type: integer format: int64 description: The order in which this item will be displayed among other items. Minimum is 0. Lower values indicate higher priority in order. price_adjustment: type: number format: double description: An amount to adjust to the product price is selected. Negative value indicates subtraction from price. ErrorDetails: type: object properties: domain: type: string resource: type: string ProductInventory_List: type: object properties: inventory_limit: type: integer format: int32 description: The inventory limit for this product. Must be greater than or equal to 0. example: 100 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory example: false email_for_inventory_notifications: type: string description: The email address for notifications about inventory example: notify@example.com ProductOptions_Detail: type: object properties: name: type: string description: The option name example: Color type: type: string description: The option type. If FIXED, then fixed_options will be returned. If VARIABLE, then variable_setting will be returned. enum: - FIXED - VARIABLE example: FIXED required: type: boolean description: If the user is required to select/fill in an option for the product example: true fixed_options: type: array description: List of option values for the fixed option items: $ref: '#/components/schemas/ProductFixedOption_Detail' variable_setting: $ref: '#/components/schemas/ProductVariableSetting_Detail' description: The option is a user-defined free-form field. The settings define the restrictions on what can be entered. ProductVariableSetting_Detail: type: object properties: contains: type: string description: Requires the value (excluding start and end) to contain given type. enum: - LETTER - NUMBER - BOTH example: BOTH min_chars: type: integer format: int32 description: Minimum allowable characters example: 1 max_chars: type: integer format: int32 description: Max allowable chars. Its value must be greater than min_chars example: 50 contain_spaces: type: boolean description: If spaces are allowed for the option example: true start_with: type: string description: Requires the value to start with the given type. enum: - LETTER - NUMBER - BOTH example: LETTER end_with: type: string description: Requires the value to end with the given type. enum: - LETTER - NUMBER - BOTH example: LETTER validation_msg: type: string description: Customized validation message to display when option criteria aren't met example: Invalid input format RestV2Product_List: type: object properties: id: type: string description: The product ID example: 1 name: type: string description: Product name example: Premium Widget price: $ref: '#/components/schemas/CurrencyValue_List' description: The product price active: type: boolean description: True means active, False means inactive example: true description: type: string description: Product long description example: A high-quality widget for all your needs sku: type: string description: Product SKU example: PROD-001 shippable: type: boolean description: If the product requires shipping example: true weight: type: number format: double description: Product weight example: 2.5 taxable: type: boolean description: Whether or not the product should be taxed example: true categories: type: array description: List of category ids to indicate which categories this product will belong to. Can be empty. items: type: string options: type: array description: List of product options. Can be empty. items: $ref: '#/components/schemas/ProductOptions_List' inventory: $ref: '#/components/schemas/ProductInventory_List' description: The inventory details for this product short_description: type: string description: Product short description example: Premium widget subscription_only: type: boolean description: If the product is a subscription-only product example: false storefront_hidden: type: boolean description: If the product should not be shown in the storefront example: false country_taxable: type: boolean description: If country-based taxes should be applied to this product example: false state_taxable: type: boolean description: If state-based taxes should be applied to this product example: true city_taxable: type: boolean description: If city-based taxes should be applied to this product example: false subscription_plans: type: array description: List of subscription plans associated with the product. Can be empty. items: $ref: '#/components/schemas/SubscriptionPlan_List' top_html: type: string bottom_html: type: string is_package: type: boolean needs_digital_delivery: type: boolean has_legacy_image: type: boolean delivery_description: type: string create_time: type: string update_time: type: string CurrencyValue_Detail: type: object properties: amount: type: integer format: int64 description: The price amount in the smallest currency unit example: 10000 currency_code: type: string description: Three-letter ISO currency code example: USD formatted_amount: type: string description: The product amount formatted using the tenant's currency locale example: $100.00 ProductInventory_Detail: type: object properties: inventory_limit: type: integer format: int32 description: The inventory limit for this product. Must be greater than or equal to 0. example: 100 inventory_count: type: integer format: int32 description: The current inventory count for this product. Must be greater than or equal to 0. This field is omitted in List responses. example: 75 out_of_stock_enabled: type: boolean description: The flag to enable out of stock inventory example: false email_for_inventory_notifications: type: string description: The email address for notifications about inventory example: notify@example.com CreateProductOptionListOption: type: object properties: item_label: type: string description: The displayable name of the option item. Cannot be whitespace only. item_code: type: string description: An internal code (e.g. sku) to associate the item option. item_display_order: type: integer format: int64 description: The order in which this item will be displayed among other items. Minimum is 0. Lower values indicate higher priority in order. price_adjustment: type: number format: double description: An amount to adjust to the product price is selected. Negative value indicates subtraction from price. CreateProductOptionRequest: type: object properties: required: type: boolean default: false description: Whether this option is required for product purchase. option_type: type: string description: The type of option. Possible valid values are LIST and TEXT. enum: - LIST - TEXT option_label: type: string description: The displayable name of the option (e.g. Size). Cannot be whitespace only. display_order: type: integer format: int32 description: The order in which this option will be displayed among other options. Minimum is 0. Lower values indicate higher priority in order. list_items: type: array description: Appears only for option_type of LIST. A fixed list of available selectable items for this product option. items: $ref: '#/components/schemas/CreateProductOptionListOption' text_rules: $ref: '#/components/schemas/CreateProductOptionTextOption' description: The option is a user-defined free-form field. The settings define the restrictions on what can be entered. required: - option_type CreateProductRequest_Detail: type: object properties: name: type: string description: Product name example: Premium Widget sku: type: string description: Product SKU example: PROD-001 price: type: integer format: int64 description: The product price. The value is in the currency's smallest unit. e.g. $12.50 is 1250. Must be greater than or equal to 0. example: 1250 active: type: boolean description: True means active, False means inactive example: true description: type: string description: Product long description example: A high-quality widget shippable: type: boolean description: If the product requires shipping example: true weight: type: number format: double description: The product weight. Must be greater than or equal to 0. example: 2.5 taxable: type: boolean description: Whether or not the product should be taxed example: true inventory: $ref: '#/components/schemas/ProductInventory_Detail' description: The inventory details for this product short_description: type: string description: Product short description example: Premium widget subscription_only: type: boolean description: If the product is a subscription-only product example: false storefront_hidden: type: boolean description: If the product should not be shown in the storefront example: false country_taxable: type: boolean description: If country-based taxes should be applied to this product example: false state_taxable: type: boolean description: If state-based taxes should be applied to this product example: true city_taxable: type: boolean description: If city-based taxes should be applied to this product example: false top_html: type: string bottom_html: type: string is_package: type: boolean needs_digital_delivery: type: boolean delivery_description: type: string required: - name - price - short_description CurrencyValue_List: type: object properties: amount: type: integer format: int64 description: The price amount in the smallest currency unit example: 10000 currency_code: type: string description: Three-letter ISO currency code example: USD formatted_amount: type: string description: The product amount formatted using the tenant's currency locale example: $100.00 Throwable: title: Throwable type: object properties: cause: $ref: '#/components/schemas/Throwable' localizedMessage: type: string message: type: string stackTrace: type: array items: title: StackTraceElement type: object properties: classLoaderName: type: string className: type: string fileName: type: string lineNumber: type: integer format: int32 methodName: type: string moduleName: type: string moduleVersion: type: string nativeMethod: type: boolean suppressed: type: array items: $ref: '#/components/schemas/Throwable' securitySchemes: oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://accounts.infusionsoft.com/app/oauth/authorize tokenUrl: https://api.infusionsoft.com/token scopes: {} x-refined-from: - infusionsoft-keap-sdk-v2-swagger-original.yml - infusionsoft-rest-v2-2025-11-05-openapi-original.json - infusionsoft-rest-v2-openapi-original.json - infusionsoft-rest-v2-openapi.json