> ## Documentation Index
> Fetch the complete documentation index at: https://docs.journeybee.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a formula on a pricing calculator



## OpenAPI

````yaml /openapi.json patch /pricing-calculators/{uuid}/formulas/{subUuid}
openapi: 3.1.0
info:
  title: Journeybee API
  description: >-
    Public REST API for the Journeybee PRM platform.


    Manage partners, leads, deals, products, pricing calculators, tasks, and
    more programmatically.


    All endpoints require authentication via API key. Use `Authorization: Bearer
    <api_key>` or `Api-Key <api_key>` header.


    See the [Authentication guide](/guides/authentication) for details.
  version: 1.0.0
servers:
  - url: https://api.journeybee.io/v1
    description: Production
security:
  - apiKey: []
tags:
  - name: Account
    description: >-
      Authenticated company account info, API key permissions, and enabled
      modules
  - name: Analytics
    description: >-
      Dashboard analytics and reporting — commission, engagement, LMS, and
      partner revenue metrics
  - name: Assets
    description: File and media asset management
  - name: Attributions
    description: Attribution type definitions
  - name: Audit Log
    description: Unified audit log of company activity (read-only)
  - name: Automations
    description: Workflow automation rule configurations
  - name: Campaign Audience
    description: Audience filters on a campaign
  - name: Campaign Partners
    description: Partners shared into a campaign audience
  - name: Campaigns
    description: Partner marketing campaigns
  - name: Card Assignees
    description: Assigned users on a card
  - name: Card Partners
    description: Partners linked to a card
  - name: Card Tags
    description: Tags on a card
  - name: Cards
    description: Kanban project cards
  - name: Categories
    description: Partner categories
  - name: Certification Categories
    description: Categories on a certification
  - name: Certification Enrollments
    description: User enrollments in a certification
  - name: Certification Folders
    description: Folders on a certification
  - name: Certification Resources
    description: Curriculum resources in a certification
  - name: Certifications
    description: LMS certifications
  - name: Commissions
    description: >-
      Commission rule configurations with calculation entries,
      tier/category/partnership scoping
  - name: Contacts
    description: Partner contacts across partnerships
  - name: Currencies
    description: Available currencies
  - name: Custom Field Options
    description: Options on select/multi-select custom fields
  - name: Custom Field Rules
    description: Visibility and requirement rules on custom fields
  - name: Custom Field Values
    description: Custom field values
  - name: Custom Fields
    description: Custom field definitions
  - name: Deal Commission
    description: Commission calculation on a deal
  - name: Deal Custom Field Values
    description: Custom field values on a deal
  - name: Deal Notes
    description: Notes on a deal
  - name: Deal Payments
    description: Payment records on a deal (read-only)
  - name: Deal Products
    description: Products attached to a deal
  - name: Deal Stages
    description: Deal pipeline stages
  - name: Deal Tags
    description: Tags on a deal
  - name: Deal Tasks
    description: Tasks on a deal
  - name: Deals
    description: Deal management
  - name: Folders
    description: Content folders
  - name: Integrations
    description: Company integration settings
  - name: Lead Attributions
    description: Attribution records on a lead
  - name: Lead Contacts
    description: Partner contacts on a lead
  - name: Lead Custom Field Values
    description: Custom field values on a lead
  - name: Lead Distributor
    description: Distributors for a lead
  - name: Lead Notes
    description: Notes on a lead
  - name: Lead Products
    description: Products attached to a lead
  - name: Lead Quotes
    description: >-
      Quotes on a lead — generated from pricing calculators with line items and
      totals
  - name: Lead Tags
    description: Tags on a lead
  - name: Lead Tasks
    description: Tasks on a lead
  - name: Lead Users
    description: Assigned users on a lead
  - name: Leads
    description: Lead management
  - name: Marketing Templates
    description: Marketing email templates
  - name: Partner Contacts
    description: Contacts on a partner
  - name: Partner Custom Field Values
    description: Custom field values on a partner
  - name: Partner Domains
    description: Domains on a partner
  - name: Partner Notes
    description: Notes on a partner
  - name: Partner Resellers
    description: Reseller assignments on a distributor
  - name: Partner Stages
    description: Partner pipeline stages
  - name: Partner Tags
    description: Tags on a partner
  - name: Partner Users
    description: Assigned users on a partner
  - name: Partners
    description: Core partner CRUD
  - name: Pricing Calculator Fields
    description: Input fields on a pricing calculator
  - name: Pricing Calculator Formulas
    description: Discount/tax/surcharge formulas on a pricing calculator
  - name: Pricing Calculator Products
    description: Products attached to a pricing calculator
  - name: Pricing Calculators
    description: Pricing calculator configurations
  - name: Products
    description: Product catalog
  - name: Resource Blocks
    description: Content blocks within a resource
  - name: Resource Categories
    description: Categories on a resource
  - name: Resource Folders
    description: Folders on a resource
  - name: Resource Tags
    description: Tags on a resource
  - name: Resources
    description: Learning resources
  - name: Room Blocks
    description: Content blocks within a room
  - name: Room Categories
    description: Category-based room access control
  - name: Room Partnerships
    description: Direct partnership room access
  - name: Room Stages
    description: Stage-based room access control
  - name: Room Tags
    description: Tag-based room access control
  - name: Room Tiers
    description: Tier-based room access control
  - name: Rooms
    description: Partner portal rooms
  - name: Tags
    description: Tag definitions
  - name: Task Users
    description: Assigned users on a task
  - name: Tasks
    description: Task management
  - name: Tiers
    description: Partner tiers
  - name: Users
    description: Company team members
  - name: Webhook Events
    description: Outbound webhook payloads sent to your configured URLs when events occur
paths:
  /pricing-calculators/{uuid}/formulas/{subUuid}:
    patch:
      tags:
        - Pricing Calculator Formulas
      summary: Update a formula on a pricing calculator
      operationId: updatePricingCalculatorFormula
      parameters:
        - schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          in: path
          name: uuid
          required: true
        - schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          in: path
          name: subUuid
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                formula_type:
                  type: string
                  enum:
                    - discount
                    - tax
                    - surcharge
                name:
                  type: string
                calculation_type:
                  type: string
                  enum:
                    - fixed
                    - percentage
                    - formula
                condition:
                  anyOf:
                    - type: string
                    - type: 'null'
                value:
                  anyOf:
                    - type: number
                    - type: 'null'
                formula_config:
                  anyOf:
                    - type: object
                      properties:
                        version:
                          type: number
                          enum:
                            - 2
                        condition:
                          anyOf:
                            - anyOf:
                                - anyOf:
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - comparison
                                        variable_name:
                                          type: string
                                          maxLength: 100
                                        operator:
                                          type: string
                                          enum:
                                            - '>='
                                            - <=
                                            - '>'
                                            - <
                                            - '=='
                                            - '!='
                                        value:
                                          type: string
                                          maxLength: 200
                                      required:
                                        - kind
                                        - variable_name
                                        - operator
                                        - value
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - group
                                        operator:
                                          type: string
                                          enum:
                                            - all
                                            - any
                                        conditions:
                                          minItems: 1
                                          type: array
                                          items:
                                            anyOf:
                                              - type: object
                                                properties:
                                                  kind:
                                                    type: string
                                                    enum:
                                                      - comparison
                                                  variable_name:
                                                    type: string
                                                    maxLength: 100
                                                  operator:
                                                    type: string
                                                    enum:
                                                      - '>='
                                                      - <=
                                                      - '>'
                                                      - <
                                                      - '=='
                                                      - '!='
                                                  value:
                                                    type: string
                                                    maxLength: 200
                                                required:
                                                  - kind
                                                  - variable_name
                                                  - operator
                                                  - value
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  kind:
                                                    type: string
                                                    enum:
                                                      - group
                                                  operator:
                                                    type: string
                                                    enum:
                                                      - all
                                                      - any
                                                  conditions:
                                                    minItems: 1
                                                    type: array
                                                    items:
                                                      anyOf:
                                                        - type: object
                                                          properties:
                                                            kind:
                                                              type: string
                                                              enum:
                                                                - comparison
                                                            variable_name:
                                                              type: string
                                                              maxLength: 100
                                                            operator:
                                                              type: string
                                                              enum:
                                                                - '>='
                                                                - <=
                                                                - '>'
                                                                - <
                                                                - '=='
                                                                - '!='
                                                            value:
                                                              type: string
                                                              maxLength: 200
                                                          required:
                                                            - kind
                                                            - variable_name
                                                            - operator
                                                            - value
                                                          additionalProperties: false
                                                        - type: object
                                                          properties:
                                                            kind:
                                                              type: string
                                                              enum:
                                                                - group
                                                            operator:
                                                              type: string
                                                              enum:
                                                                - all
                                                                - any
                                                            conditions:
                                                              minItems: 1
                                                              type: array
                                                              items:
                                                                anyOf:
                                                                  - type: object
                                                                    properties:
                                                                      kind: {}
                                                                      variable_name: {}
                                                                      operator: {}
                                                                      value: {}
                                                                    required:
                                                                      - kind
                                                                      - variable_name
                                                                      - operator
                                                                      - value
                                                                    additionalProperties: false
                                                                  - type: object
                                                                    properties:
                                                                      kind: {}
                                                                      operator: {}
                                                                      conditions: {}
                                                                    required:
                                                                      - kind
                                                                      - operator
                                                                      - conditions
                                                                    additionalProperties: false
                                                          required:
                                                            - kind
                                                            - operator
                                                            - conditions
                                                          additionalProperties: false
                                                required:
                                                  - kind
                                                  - operator
                                                  - conditions
                                                additionalProperties: false
                                      required:
                                        - kind
                                        - operator
                                        - conditions
                                      additionalProperties: false
                                - type: object
                                  properties:
                                    variable_name:
                                      type: string
                                      maxLength: 100
                                    operator:
                                      type: string
                                      enum:
                                        - '>='
                                        - <=
                                        - '>'
                                        - <
                                        - '=='
                                        - '!='
                                    value:
                                      type: string
                                      maxLength: 200
                                  required:
                                    - variable_name
                                    - operator
                                    - value
                                  additionalProperties: false
                            - type: 'null'
                        eligibility_condition:
                          anyOf:
                            - anyOf:
                                - anyOf:
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - comparison
                                        variable_name:
                                          type: string
                                          maxLength: 100
                                        operator:
                                          type: string
                                          enum:
                                            - '>='
                                            - <=
                                            - '>'
                                            - <
                                            - '=='
                                            - '!='
                                        value:
                                          type: string
                                          maxLength: 200
                                      required:
                                        - kind
                                        - variable_name
                                        - operator
                                        - value
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        kind:
                                          type: string
                                          enum:
                                            - group
                                        operator:
                                          type: string
                                          enum:
                                            - all
                                            - any
                                        conditions:
                                          minItems: 1
                                          type: array
                                          items:
                                            anyOf:
                                              - type: object
                                                properties:
                                                  kind:
                                                    type: string
                                                    enum:
                                                      - comparison
                                                  variable_name:
                                                    type: string
                                                    maxLength: 100
                                                  operator:
                                                    type: string
                                                    enum:
                                                      - '>='
                                                      - <=
                                                      - '>'
                                                      - <
                                                      - '=='
                                                      - '!='
                                                  value:
                                                    type: string
                                                    maxLength: 200
                                                required:
                                                  - kind
                                                  - variable_name
                                                  - operator
                                                  - value
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  kind:
                                                    type: string
                                                    enum:
                                                      - group
                                                  operator:
                                                    type: string
                                                    enum:
                                                      - all
                                                      - any
                                                  conditions:
                                                    minItems: 1
                                                    type: array
                                                    items:
                                                      anyOf:
                                                        - type: object
                                                          properties:
                                                            kind:
                                                              type: string
                                                              enum:
                                                                - comparison
                                                            variable_name:
                                                              type: string
                                                              maxLength: 100
                                                            operator:
                                                              type: string
                                                              enum:
                                                                - '>='
                                                                - <=
                                                                - '>'
                                                                - <
                                                                - '=='
                                                                - '!='
                                                            value:
                                                              type: string
                                                              maxLength: 200
                                                          required:
                                                            - kind
                                                            - variable_name
                                                            - operator
                                                            - value
                                                          additionalProperties: false
                                                        - type: object
                                                          properties:
                                                            kind:
                                                              type: string
                                                              enum:
                                                                - group
                                                            operator:
                                                              type: string
                                                              enum:
                                                                - all
                                                                - any
                                                            conditions:
                                                              minItems: 1
                                                              type: array
                                                              items:
                                                                anyOf:
                                                                  - type: object
                                                                    properties:
                                                                      kind: {}
                                                                      variable_name: {}
                                                                      operator: {}
                                                                      value: {}
                                                                    required:
                                                                      - kind
                                                                      - variable_name
                                                                      - operator
                                                                      - value
                                                                    additionalProperties: false
                                                                  - type: object
                                                                    properties:
                                                                      kind: {}
                                                                      operator: {}
                                                                      conditions: {}
                                                                    required:
                                                                      - kind
                                                                      - operator
                                                                      - conditions
                                                                    additionalProperties: false
                                                          required:
                                                            - kind
                                                            - operator
                                                            - conditions
                                                          additionalProperties: false
                                                required:
                                                  - kind
                                                  - operator
                                                  - conditions
                                                additionalProperties: false
                                      required:
                                        - kind
                                        - operator
                                        - conditions
                                      additionalProperties: false
                                - type: object
                                  properties:
                                    variable_name:
                                      type: string
                                      maxLength: 100
                                    operator:
                                      type: string
                                      enum:
                                        - '>='
                                        - <=
                                        - '>'
                                        - <
                                        - '=='
                                        - '!='
                                    value:
                                      type: string
                                      maxLength: 200
                                  required:
                                    - variable_name
                                    - operator
                                    - value
                                  additionalProperties: false
                            - type: 'null'
                        when_true:
                          oneOf:
                            - type: object
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - flat
                                amount:
                                  type: number
                                  minimum: 0
                                  maximum: 1000000000
                              required:
                                - mode
                                - amount
                              additionalProperties: false
                            - type: object
                              properties:
                                mode:
                                  type: string
                                  enum:
                                    - per_unit
                                variable_name:
                                  type: string
                                  maxLength: 100
                                rate:
                                  type: number
                                  minimum: 0
                                  maximum: 1000000000
                              required:
                                - mode
                                - variable_name
                                - rate
                              additionalProperties: false
                        when_false:
                          anyOf:
                            - oneOf:
                                - type: object
                                  properties:
                                    mode:
                                      type: string
                                      enum:
                                        - flat
                                    amount:
                                      type: number
                                      minimum: 0
                                      maximum: 1000000000
                                  required:
                                    - mode
                                    - amount
                                  additionalProperties: false
                                - type: object
                                  properties:
                                    mode:
                                      type: string
                                      enum:
                                        - per_unit
                                    variable_name:
                                      type: string
                                      maxLength: 100
                                    rate:
                                      type: number
                                      minimum: 0
                                      maximum: 1000000000
                                  required:
                                    - mode
                                    - variable_name
                                    - rate
                                  additionalProperties: false
                            - type: 'null'
                        no_charge_when_zero:
                          type: boolean
                        quantity_ranges:
                          type: object
                          properties:
                            variable_name:
                              type: string
                              maxLength: 100
                            ranges:
                              minItems: 1
                              maxItems: 100
                              type: array
                              items:
                                type: object
                                properties:
                                  lower:
                                    type: number
                                  upper:
                                    anyOf:
                                      - type: number
                                      - type: 'null'
                                  amount:
                                    type: number
                                    minimum: 0
                                    maximum: 1000000000
                                required:
                                  - lower
                                  - upper
                                  - amount
                                additionalProperties: false
                          required:
                            - variable_name
                            - ranges
                          additionalProperties: false
                        presentation:
                          type: object
                          properties:
                            group_id:
                              anyOf:
                                - type: string
                                  format: uuid
                                  pattern: >-
                                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                                - type: 'null'
                            group_label:
                              anyOf:
                                - type: string
                                  minLength: 1
                                  maxLength: 200
                                - type: 'null'
                            visibility:
                              type: string
                              enum:
                                - visible
                                - hidden
                            sort_order:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            target_product_uuid:
                              anyOf:
                                - type: string
                                  format: uuid
                                  pattern: >-
                                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                                - type: 'null'
                          additionalProperties: false
                      additionalProperties: false
                    - type: 'null'
                billing_type:
                  type: string
                  enum:
                    - one_time
                    - recurring
                percentage_base:
                  type: string
                  enum:
                    - subtotal
                    - running_total
                    - selected_sources
                selected_product_uuid:
                  anyOf:
                    - type: string
                    - type: 'null'
                selected_sources:
                  maxItems: 100
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - product
                          pricing_calculator_product_uuid:
                            type: string
                        required:
                          - kind
                          - pricing_calculator_product_uuid
                        additionalProperties: false
                      - type: object
                        properties:
                          kind:
                            type: string
                            enum:
                              - formula
                          formula_uuid:
                            type: string
                        required:
                          - kind
                          - formula_uuid
                        additionalProperties: false
                sort_order:
                  type: number
              additionalProperties: false
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  uuid:
                    type: string
                  formula_type:
                    type: string
                    enum:
                      - discount
                      - tax
                      - surcharge
                  name:
                    type: string
                  condition:
                    anyOf:
                      - type: string
                      - type: 'null'
                  calculation_type:
                    type: string
                    enum:
                      - fixed
                      - percentage
                      - formula
                  value:
                    anyOf:
                      - type: number
                      - type: 'null'
                    description: >-
                      Fixed amounts and formula term amounts use raw cent units.
                      Percentage values are percent values.
                  formula_config:
                    description: >-
                      Structured amount config used when calculation_type is
                      "formula".
                    anyOf:
                      - type: object
                        properties:
                          version:
                            type: number
                            enum:
                              - 2
                          condition:
                            anyOf:
                              - anyOf:
                                  - anyOf:
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - comparison
                                          variable_name:
                                            type: string
                                            maxLength: 100
                                          operator:
                                            type: string
                                            enum:
                                              - '>='
                                              - <=
                                              - '>'
                                              - <
                                              - '=='
                                              - '!='
                                          value:
                                            type: string
                                            maxLength: 200
                                        required:
                                          - kind
                                          - variable_name
                                          - operator
                                          - value
                                        additionalProperties: false
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - group
                                          operator:
                                            type: string
                                            enum:
                                              - all
                                              - any
                                          conditions:
                                            minItems: 1
                                            type: array
                                            items:
                                              anyOf:
                                                - type: object
                                                  properties:
                                                    kind:
                                                      type: string
                                                      enum:
                                                        - comparison
                                                    variable_name:
                                                      type: string
                                                      maxLength: 100
                                                    operator:
                                                      type: string
                                                      enum:
                                                        - '>='
                                                        - <=
                                                        - '>'
                                                        - <
                                                        - '=='
                                                        - '!='
                                                    value:
                                                      type: string
                                                      maxLength: 200
                                                  required:
                                                    - kind
                                                    - variable_name
                                                    - operator
                                                    - value
                                                  additionalProperties: false
                                                - type: object
                                                  properties:
                                                    kind:
                                                      type: string
                                                      enum:
                                                        - group
                                                    operator:
                                                      type: string
                                                      enum:
                                                        - all
                                                        - any
                                                    conditions:
                                                      minItems: 1
                                                      type: array
                                                      items:
                                                        anyOf:
                                                          - type: object
                                                            properties:
                                                              kind:
                                                                type: string
                                                                enum:
                                                                  - comparison
                                                              variable_name:
                                                                type: string
                                                                maxLength: 100
                                                              operator:
                                                                type: string
                                                                enum:
                                                                  - '>='
                                                                  - <=
                                                                  - '>'
                                                                  - <
                                                                  - '=='
                                                                  - '!='
                                                              value:
                                                                type: string
                                                                maxLength: 200
                                                            required:
                                                              - kind
                                                              - variable_name
                                                              - operator
                                                              - value
                                                            additionalProperties: false
                                                          - type: object
                                                            properties:
                                                              kind:
                                                                type: string
                                                                enum:
                                                                  - group
                                                              operator:
                                                                type: string
                                                                enum:
                                                                  - all
                                                                  - any
                                                              conditions:
                                                                minItems: 1
                                                                type: array
                                                                items:
                                                                  anyOf:
                                                                    - type: object
                                                                      properties:
                                                                        kind: {}
                                                                        variable_name: {}
                                                                        operator: {}
                                                                        value: {}
                                                                      required:
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                      additionalProperties: false
                                                                    - type: object
                                                                      properties:
                                                                        kind: {}
                                                                        operator: {}
                                                                        conditions: {}
                                                                      required:
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                      additionalProperties: false
                                                            required:
                                                              - kind
                                                              - operator
                                                              - conditions
                                                            additionalProperties: false
                                                  required:
                                                    - kind
                                                    - operator
                                                    - conditions
                                                  additionalProperties: false
                                        required:
                                          - kind
                                          - operator
                                          - conditions
                                        additionalProperties: false
                                  - type: object
                                    properties:
                                      variable_name:
                                        type: string
                                        maxLength: 100
                                      operator:
                                        type: string
                                        enum:
                                          - '>='
                                          - <=
                                          - '>'
                                          - <
                                          - '=='
                                          - '!='
                                      value:
                                        type: string
                                        maxLength: 200
                                    required:
                                      - variable_name
                                      - operator
                                      - value
                                    additionalProperties: false
                              - type: 'null'
                          eligibility_condition:
                            anyOf:
                              - anyOf:
                                  - anyOf:
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - comparison
                                          variable_name:
                                            type: string
                                            maxLength: 100
                                          operator:
                                            type: string
                                            enum:
                                              - '>='
                                              - <=
                                              - '>'
                                              - <
                                              - '=='
                                              - '!='
                                          value:
                                            type: string
                                            maxLength: 200
                                        required:
                                          - kind
                                          - variable_name
                                          - operator
                                          - value
                                        additionalProperties: false
                                      - type: object
                                        properties:
                                          kind:
                                            type: string
                                            enum:
                                              - group
                                          operator:
                                            type: string
                                            enum:
                                              - all
                                              - any
                                          conditions:
                                            minItems: 1
                                            type: array
                                            items:
                                              anyOf:
                                                - type: object
                                                  properties:
                                                    kind:
                                                      type: string
                                                      enum:
                                                        - comparison
                                                    variable_name:
                                                      type: string
                                                      maxLength: 100
                                                    operator:
                                                      type: string
                                                      enum:
                                                        - '>='
                                                        - <=
                                                        - '>'
                                                        - <
                                                        - '=='
                                                        - '!='
                                                    value:
                                                      type: string
                                                      maxLength: 200
                                                  required:
                                                    - kind
                                                    - variable_name
                                                    - operator
                                                    - value
                                                  additionalProperties: false
                                                - type: object
                                                  properties:
                                                    kind:
                                                      type: string
                                                      enum:
                                                        - group
                                                    operator:
                                                      type: string
                                                      enum:
                                                        - all
                                                        - any
                                                    conditions:
                                                      minItems: 1
                                                      type: array
                                                      items:
                                                        anyOf:
                                                          - type: object
                                                            properties:
                                                              kind:
                                                                type: string
                                                                enum:
                                                                  - comparison
                                                              variable_name:
                                                                type: string
                                                                maxLength: 100
                                                              operator:
                                                                type: string
                                                                enum:
                                                                  - '>='
                                                                  - <=
                                                                  - '>'
                                                                  - <
                                                                  - '=='
                                                                  - '!='
                                                              value:
                                                                type: string
                                                                maxLength: 200
                                                            required:
                                                              - kind
                                                              - variable_name
                                                              - operator
                                                              - value
                                                            additionalProperties: false
                                                          - type: object
                                                            properties:
                                                              kind:
                                                                type: string
                                                                enum:
                                                                  - group
                                                              operator:
                                                                type: string
                                                                enum:
                                                                  - all
                                                                  - any
                                                              conditions:
                                                                minItems: 1
                                                                type: array
                                                                items:
                                                                  anyOf:
                                                                    - type: object
                                                                      properties:
                                                                        kind: {}
                                                                        variable_name: {}
                                                                        operator: {}
                                                                        value: {}
                                                                      required:
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                      additionalProperties: false
                                                                    - type: object
                                                                      properties:
                                                                        kind: {}
                                                                        operator: {}
                                                                        conditions: {}
                                                                      required:
                                                                        - {}
                                                                        - {}
                                                                        - {}
                                                                      additionalProperties: false
                                                            required:
                                                              - kind
                                                              - operator
                                                              - conditions
                                                            additionalProperties: false
                                                  required:
                                                    - kind
                                                    - operator
                                                    - conditions
                                                  additionalProperties: false
                                        required:
                                          - kind
                                          - operator
                                          - conditions
                                        additionalProperties: false
                                  - type: object
                                    properties:
                                      variable_name:
                                        type: string
                                        maxLength: 100
                                      operator:
                                        type: string
                                        enum:
                                          - '>='
                                          - <=
                                          - '>'
                                          - <
                                          - '=='
                                          - '!='
                                      value:
                                        type: string
                                        maxLength: 200
                                    required:
                                      - variable_name
                                      - operator
                                      - value
                                    additionalProperties: false
                              - type: 'null'
                          when_true:
                            oneOf:
                              - type: object
                                properties:
                                  mode:
                                    type: string
                                    enum:
                                      - flat
                                  amount:
                                    type: number
                                    minimum: 0
                                    maximum: 1000000000
                                required:
                                  - mode
                                  - amount
                                additionalProperties: false
                              - type: object
                                properties:
                                  mode:
                                    type: string
                                    enum:
                                      - per_unit
                                  variable_name:
                                    type: string
                                    maxLength: 100
                                  rate:
                                    type: number
                                    minimum: 0
                                    maximum: 1000000000
                                required:
                                  - mode
                                  - variable_name
                                  - rate
                                additionalProperties: false
                          when_false:
                            anyOf:
                              - oneOf:
                                  - type: object
                                    properties:
                                      mode:
                                        type: string
                                        enum:
                                          - flat
                                      amount:
                                        type: number
                                        minimum: 0
                                        maximum: 1000000000
                                    required:
                                      - mode
                                      - amount
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      mode:
                                        type: string
                                        enum:
                                          - per_unit
                                      variable_name:
                                        type: string
                                        maxLength: 100
                                      rate:
                                        type: number
                                        minimum: 0
                                        maximum: 1000000000
                                    required:
                                      - mode
                                      - variable_name
                                      - rate
                                    additionalProperties: false
                              - type: 'null'
                          no_charge_when_zero:
                            type: boolean
                          quantity_ranges:
                            type: object
                            properties:
                              variable_name:
                                type: string
                                maxLength: 100
                              ranges:
                                minItems: 1
                                maxItems: 100
                                type: array
                                items:
                                  type: object
                                  properties:
                                    lower:
                                      type: number
                                    upper:
                                      anyOf:
                                        - type: number
                                        - type: 'null'
                                    amount:
                                      type: number
                                      minimum: 0
                                      maximum: 1000000000
                                  required:
                                    - lower
                                    - upper
                                    - amount
                                  additionalProperties: false
                            required:
                              - variable_name
                              - ranges
                            additionalProperties: false
                          presentation:
                            type: object
                            properties:
                              group_id:
                                anyOf:
                                  - type: string
                                    format: uuid
                                    pattern: >-
                                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                                  - type: 'null'
                              group_label:
                                anyOf:
                                  - type: string
                                    minLength: 1
                                    maxLength: 200
                                  - type: 'null'
                              visibility:
                                type: string
                                enum:
                                  - visible
                                  - hidden
                              sort_order:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                              target_product_uuid:
                                anyOf:
                                  - type: string
                                    format: uuid
                                    pattern: >-
                                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                                  - type: 'null'
                            additionalProperties: false
                        additionalProperties: false
                      - type: 'null'
                  billing_type:
                    type: string
                    enum:
                      - one_time
                      - recurring
                  percentage_base:
                    type: string
                    enum:
                      - subtotal
                      - running_total
                      - selected_sources
                  selected_product_uuid:
                    anyOf:
                      - type: string
                      - type: 'null'
                  selected_sources:
                    type: array
                    items:
                      oneOf:
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - product
                            pricing_calculator_product_uuid:
                              type: string
                          required:
                            - kind
                            - pricing_calculator_product_uuid
                          additionalProperties: false
                        - type: object
                          properties:
                            kind:
                              type: string
                              enum:
                                - formula
                            formula_uuid:
                              type: string
                          required:
                            - kind
                            - formula_uuid
                          additionalProperties: false
                  sort_order:
                    type: number
                  created_at:
                    type: string
                  updated_at:
                    type: string
                required:
                  - uuid
                  - formula_type
                  - name
                  - condition
                  - calculation_type
                  - value
                  - formula_config
                  - billing_type
                  - percentage_base
                  - selected_product_uuid
                  - selected_sources
                  - sort_order
                  - created_at
                  - updated_at
                additionalProperties: false
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: API key authentication. Use "Bearer <api_key>" or "Api-Key <api_key>".

````