Togai Price Experimentation API

Price Experimentation apis

Operations 1

POST /revenue_calculator Calculate and Return the Revenue for a Existing or New Price Plan #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/togai-price-experimentation-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

togai-price-experimentation-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: Togai Apis Accounts Price Experimentation API
  contact:
    email: engg@togai.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  description: APIs for Togai App
servers:
- description: Api endpoint
  url: https://api.togai.com/
- description: Sandbox api endpoint
  url: https://sandbox-api.togai.com/
security:
- bearerAuth: []
tags:
- name: Price Experimentation
  description: Price Experimentation apis
paths:
  /revenue_calculator:
    post:
      tags:
      - Price Experimentation
      summary: Calculate and Return the Revenue for a Existing or New Price Plan
      description: Calculate and return the revenue for a existing or new price plan
      operationId: calculateRevenue
      requestBody:
        $ref: '#/components/requestBodies/CalculateRevenueRequest'
      responses:
        '200':
          $ref: '#/components/responses/CalculateRevenueResponse'
        '400':
          $ref: '#/components/responses/ErrorResponse'
        '401':
          $ref: '#/components/responses/ErrorResponse'
        '403':
          $ref: '#/components/responses/ErrorResponse'
        '404':
          $ref: '#/components/responses/ErrorResponse'
        '429':
          $ref: '#/components/responses/ErrorResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  examples:
    ThirdCalculateRevenueRequestExample:
      value:
        currencyConfig:
          mode: ACCOUNT_INVOICE
          accountId: ACC00001
        pricePlanDetailsConfig:
          mode: ACCOUNT
          accountId: ACC00001
          effectiveOn: '2020-01-01T00:00:00Z'
        usageConfig:
          mode: LOOKUP_CYCLE
          lookupCycle:
            accountId: ACC00001
            cycleEffectiveOn: '2020-01-01T00:00:00Z'
        licenseEntriesConfig:
          mode: LOOKUP_CYCLE
          lookupCycle:
            accountId: ACC00001
            cycleEffectiveOn: '2020-01-01T00:00:00Z'
      description: 'Example request for calculate revenue API on a already associated price plan of the account  with currency as the invoice currency of an existing account, and existing usage of a account over a certain pricing cycle

        '
    SecondCalculateRevenueRequestExample:
      description: 'Example request for calculate revenue API on a custom price plan with currency as the invoice currency of a existing account, and existing usage of a account over a time period

        '
      value:
        currencyConfig:
          mode: ACCOUNT_INVOICE
          accountId: ACC00001
        pricePlanDetailsConfig:
          mode: CUSTOM
          pricingCycleOrdinal: 1
          pricePlanDetails:
            supportedCurrencies:
            - USD
            pricingCycleConfig:
              interval: MONTHLY
              startOffset:
                dayOffset: '4'
                monthOffset: '1'
              gracePeriod: 3
              anniversaryCycle: false
            usageRateCards:
            - displayName: Local Rides
              usageMeterId: um.1zYnCiM9Bpg.1zYn
              ratePlan:
                pricingModel: TIERED
                slabs:
                - order: 1
                  startAfter: 0
                  priceType: FLAT
              rateValues:
              - currency: USD
                slabRates:
                - rate: 40
                  order: 1
        usageConfig:
          mode: LOOKUP_RANGE
          lookupRange:
            start: '2020-01-01T00:00:00Z'
            end: '2020-01-31T00:00:00Z'
            accountId: ACC00001
        licenseEntriesConfig:
          mode: LOOKUP_RANGE
          lookupRange:
            start: '2020-01-01T00:00:00Z'
            end: '2020-01-31T00:00:00Z'
            accountId: ACC00001
        entitlementOverageConfig:
          mode: LOOKUP_CYCLE
          lookupCycle:
            accountId: ACC0001
            billingCycleEndDate: '2020-01-31T00:00:00Z'
    CalculateRevenueResponse:
      value:
        currency: USD
        pricePlanDetails:
          supportedCurrencies:
          - USD
          activeCurrencies:
          - USD
          pricingCycleConfig:
            interval: MONTHLY
            startOffset:
              dayOffset: '1'
              monthOffset: NIL
            gracePeriod: 1
            anniversaryCycle: false
          usageRateCards:
          - displayName: AfterShip Shipments1
            usageMeterId: um.1zcgWalbM2y.qaX5j
            ratePlan:
              pricingModel: TIERED
              slabs:
              - priceType: PER_UNIT
                startAfter: 0
                order: 1
              - priceType: PACKAGE
                startAfter: 2
                order: 2
                slabConfig:
                  packageSize: '10'
            rateValues:
            - currency: USD
              slabRates:
              - order: 1
                rate: 10
                slabRateConfig:
                  minimumRate: '1'
                  maximumRate: '10'
              - order: 2
                rate: 20
            tag: '1'
          type: BILLING
        revenueInfo:
        - usages:
            um.fdjal.kdajf: 10
          usageRateCard:
            displayName: AfterShip Shipments1
            usageMeterId: um.1zcgWalbM2y.qaX5j
            ratePlan:
              pricingModel: TIERED
              slabs:
              - priceType: PER_UNIT
                startAfter: 0
                order: 1
              - priceType: PACKAGE
                startAfter: 2
                order: 2
                slabConfig:
                  packageSize: '10'
            rateValues:
            - currency: USD
              slabRates:
              - order: 1
                rate: 10
                slabRateConfig:
                  minimumRate: 1
                  maximumRate: 10
              - order: 2
                rate: 20
          slabRevenueSummaries:
          - order: 1
            usage: 10
            revenue: 100
          - order: 2
            usage: 0
            revenue: 0
    FirstCalculateRevenueRequestExample:
      description: 'Example request for calculate revenue API on a existing price plan with custom currency and usage.

        '
      value:
        currencyConfig:
          mode: CUSTOM
          currency: USD
        pricePlanDetailsConfig:
          mode: PRICE_PLAN
          pricePlanId: pp.fdhkf.djf
          effectiveOn: '2020-01-01T00:00:00Z'
          pricingCycleOrdinal: 1
        usageConfig:
          mode: CUSTOM
          usageMap:
            um.1zcgWalbM2y.qaX5j: 100
        licenseEntriesConfig:
          mode: CUSTOM
          custom:
          - licenseId: license.1zcgWalbM2y.qaX5j
            quantity: 10
            effectiveFrom: '2020-01-01T00:00:00Z'
        entitlementOverageConfig:
          mode: CUSTOM
          custom:
          - featureId: feature.1122.ahoiud
            quantity: 5
          - featureId: feature.3452.abcaf2
            quantity: 28
  schemas:
    CreditRateDetails:
      type: object
      description: Amount to be credited
      additionalProperties: false
      required:
      - pricingModel
      - currencySlabRateDetails
      properties:
        pricingModel:
          $ref: '#/components/schemas/PricingModel'
        currencySlabRateDetails:
          type: array
          items:
            $ref: '#/components/schemas/CurrencySlabRateDetail'
    EntitlementOverageRateCard:
      type: object
      required:
      - ratePlan
      - rateValues
      - featureId
      properties:
        featureId:
          type: string
          description: Unique Identifier of the attached Feature
          maxLength: 50
        displayName:
          type: string
          description: Name to be displayed during invoice
        tag:
          type: string
          description: A tag string to group rate cards
        maxQuantity:
          type: number
          description: Maximum quantity allowed for the feature, if not specified, unlimited quantity is allowed
        ratePlan:
          $ref: '#/components/schemas/RatePlan'
        rateValues:
          type: array
          items:
            $ref: '#/components/schemas/RateValue'
        billingConfig:
          $ref: '#/components/schemas/BillingConfig'
          description: Represents the billing config of the entitlement overage rate card. If not specified interval:1 and startOffset:0 is taken as default value
    FixedFeeType:
      type: string
      enum:
      - ONE_TIME
      - RECURRING
      description: Fixed fee applies either for a one-time occurrence or for each cycle.
    SlabDetail:
      type: object
      description: The details of a slab
      additionalProperties: false
      required:
      - startAfter
      - priceType
      - rate
      properties:
        startAfter:
          type: number
        priceType:
          $ref: '#/components/schemas/PriceType'
        slabConfig:
          type: object
          additionalProperties:
            type: string
        rate:
          type: number
        slabRateConfig:
          type: object
          additionalProperties:
            type: string
    CreatePricePlanDetails:
      type: object
      additionalProperties: false
      required:
      - supportedCurrencies
      properties:
        pricingCycleConfig:
          description: Configuration for pricing cycle
          $ref: '#/components/schemas/PricingCycleConfig'
        supportedCurrencies:
          description: List of currencies supported by the price plan
          type: array
          uniqueItems: true
          items:
            type: string
        usageRateCards:
          description: List of usage rate cards
          type: array
          items:
            $ref: '#/components/schemas/UsageRateCard'
        fixedFeeRateCards:
          type: array
          items:
            $ref: '#/components/schemas/FixedFeeRateCard'
        licenseRateCards:
          type: array
          items:
            $ref: '#/components/schemas/LicenseRateCard'
        billingEntitlementRateCards:
          type: array
          items:
            $ref: '#/components/schemas/BillingEntitlementRateCard'
        minimumCommitment:
          $ref: '#/components/schemas/MinimumCommitment'
        creditGrantRateCards:
          type: array
          items:
            $ref: '#/components/schemas/CreditGrantRateCard'
        entitlementOverageRateCards:
          type: array
          items:
            $ref: '#/components/schemas/EntitlementOverageRateCard'
        deferredRevenue:
          description: "This option can be enabled while creating a price plan to opt for deferred revenue finalization.\ni.e, Togai will assume that the price plan may change any time during the pricing cycle and \nthereby does not compute the revenue in near-real time. \nThis gives the flexibility of editing rate cards in price plan from beginning of the pricing cycle.\nEnabling this mode comes with the following limitations.\n1. Following rate cards are not supported under a `deferredRevenue` plan\n    * creditGrantRateCards,\n    * billingEntitlementRateCards,\n    * entitlementOverageRateCards,\n    * IN_ADVANCE fixedFeeRateCards,\n    * IN_ADVANCE licenseRateCards\n2. Metrics API return revenue metrics only after the grace period of the account's pricing cycle \n(i.e, only once the invoice becomes DUE)\n"
          type: boolean
    PricePlanType:
      type: string
      description: Type of price plan
      enum:
      - BILLING
      - PURCHASE
    RecurrenceConfig:
      type: object
      properties:
        interval:
          description: Represents the number of pricing cycles after which the rate card will be charged
          type: integer
          format: int64
          example: 3
        offset:
          description: Represents the offset for pricing cycles after which the rate card will be charged
          type: integer
          format: int64
          example: 5
    MaxQuantityBreachAction:
      type: string
      enum:
      - DO_NOTHING
      description: "Action to be taken when the license maxQuantity is breached: \n- `DO_NOTHING`: Refrain from granting any new licenses.\n"
    SlabRevenueSummary:
      type: object
      additionalProperties: false
      required:
      - order
      - usage
      - revenue
      properties:
        order:
          type: integer
        usage:
          type: number
        revenue:
          type: number
        metadata:
          title: SlabRevenueMetadata
          type: object
          additionalProperties: false
          properties:
            minimumRateApplied:
              type: boolean
            maximumRateApplied:
              type: boolean
            packageQuantity:
              type: integer
    GrantDetails:
      description: Grant details of Credit Grant Rate Card
      type: object
      additionalProperties: false
      required:
      - priority
      - expiryType
      properties:
        priority:
          type: integer
          minimum: 0
        expiryType:
          $ref: '#/components/schemas/ExpiryType'
        expiryDuration:
          type: string
          format: duration
        applicableEntityIds:
          type: array
          items:
            type: string
    CreditGrantRateCard:
      description: Credit grant rate card
      type: object
      additionalProperties: false
      required:
      - id
      - rateDetails
      - grantDetails
      properties:
        id:
          type: string
        displayName:
          type: string
        tag:
          type: string
          description: A tag string to group creditGrantRateCard
        grantDetails:
          $ref: '#/components/schemas/GrantDetails'
        rateDetails:
          $ref: '#/components/schemas/CreditRateDetails'
        invoiceTiming:
          $ref: '#/components/schemas/InvoiceTiming'
        type:
          $ref: '#/components/schemas/CreditGrantType'
        recurrenceConfig:
          $ref: '#/components/schemas/RecurrenceConfig'
    InvoiceTiming:
      type: string
      enum:
      - IN_ADVANCE
      - IN_ARREARS
      - PREPAID
      x-enum-varnames:
      - IN_ADVANCE
      - IN_ARREARS
      - PREPAID
      description: 'If IN_ADVANCE, the rate card will be invoiced in the previous billing cycle.

        If IN_ARREARS, the rate card will be invoiced in the current billing cycle.

        If PREPAID, credits/entitlements will be granted only after invoice is paid

        '
    UsageRateCard:
      type: object
      required:
      - usageMeterId
      - ratePlan
      - rateValues
      properties:
        displayName:
          type: string
          description: Name your rate card, this will be displayed in the Togai App
        tag:
          type: string
          description: A tag string to group usageRateCards
        usageMeterId:
          type: string
          example: um.1zYnCiM9Bpg.1zYn
        ratePlan:
          $ref: '#/components/schemas/RatePlan'
        rateValues:
          type: array
          items:
            $ref: '#/components/schemas/RateValue'
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
      - message
      properties:
        message:
          type: string
          description: error description
          maxLength: 500
    LicenseRateCardConfig:
      title: LicenseRateCardConfig
      type: object
      properties:
        maxQuantity:
          description: Max allowed quantity for a particular license in a price plan
          type: integer
          format: int64
          example: 100
        maxQuantityBreachAction:
          $ref: '#/components/schemas/MaxQuantityBreachAction'
    ExpiryType:
      type: string
      description: Expiry type of grant
      enum:
      - PRICING_CYCLE
      - NO_EXPIRY
      - CUSTOM
    MinimumCommitment:
      title: MinimumCommitment
      type: object
      required:
      - displayName
      - rateValues
      properties:
        displayName:
          type: string
        rateValues:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CurrencyRateValue'
    RateValue:
      type: object
      description: Represents a rate
      required:
      - currency
      - slabRates
      properties:
        currency:
          type: string
        slabRates:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/SlabRate'
        rateConfig:
          type: object
          additionalProperties:
            type: string
    CreditGrantType:
      type: string
      enum:
      - ONE_TIME
      - RECURRING
      description: Credit grant applies either for a one-time occurrence or for each cycle.
    PricePlanDetails:
      type: object
      required:
      - supportedCurrencies
      - activeCurrencies
      properties:
        supportedCurrencies:
          type: array
          uniqueItems: true
          items:
            type: string
        activeCurrencies:
          type: array
          uniqueItems: true
          readOnly: true
          items:
            type: string
        pricingCycleConfig:
          $ref: '#/components/schemas/PricingCycleConfig'
        usageRateCards:
          type: array
          items:
            $ref: '#/components/schemas/UsageRateCard'
        fixedFeeRateCards:
          type: array
          items:
            $ref: '#/components/schemas/FixedFeeRateCard'
        licenseRateCards:
          type: array
          items:
            $ref: '#/components/schemas/LicenseRateCard'
        billingEntitlementRateCards:
          type: array
          items:
            $ref: '#/components/schemas/BillingEntitlementRateCard'
        entitlementOverageRateCards:
          type: array
          items:
            $ref: '#/components/schemas/EntitlementOverageRateCard'
        minimumCommitment:
          $ref: '#/components/schemas/MinimumCommitment'
        creditGrantRateCards:
          type: array
          items:
            $ref: '#/components/schemas/CreditGrantRateCard'
        type:
          $ref: '#/components/schemas/PricePlanType'
        deferredRevenue:
          type: boolean
    SlabRate:
      type: object
      description: Represents a rate for a slab
      required:
      - order
      - rate
      properties:
        order:
          type: integer
          format: int32
        rate:
          type: number
        slabRateConfig:
          type: object
          additionalProperties:
            type: string
    Slab:
      type: object
      description: Represents a pricing priceType (rates + slabs) for usage price plan
      required:
      - order
      - startAfter
      - priceType
      properties:
        order:
          type: integer
          format: int32
          minimum: 1
          maximum: 10
        startAfter:
          type: number
        priceType:
          $ref: '#/components/schemas/PriceType'
        slabConfig:
          type: object
          additionalProperties:
            type: string
    FixedFeeRateCard:
      title: FixedFeeRateCard
      type: object
      required:
      - id
      - rateValues
      - enableProration
      properties:
        id:
          description: Unique Identifier of the attached AddOn
          type: string
          maxLength: 50
        displayName:
          type: string
          description: Name of the attached AddOn
        tag:
          type: string
          description: A tag string to group fixedFeeRateCards
        invoiceTiming:
          $ref: '#/components/schemas/InvoiceTiming'
        type:
          $ref: '#/components/schemas/FixedFeeType'
        rateValues:
          type: array
          items:
            $ref: '#/components/schemas/CurrencyRateValue'
        enableProration:
          type: boolean
          example: false
        recurrenceConfig:
          $ref: '#/components/schemas/RecurrenceConfig'
    CurrencySlabRateDetail:
      type: object
      description: The association of a currency along with its slab detail
      additionalProperties: false
      required:
      - currency
      - creditAmount
      - slabDetails
      properties:
        currency:
          type: string
        creditAmount:
          type: number
          description: The amount of credit that needs to be credited
          minimum: 0
        slabDetails:
          type: array
          items:
            $ref: '#/components/schemas/SlabDetail'
        rateConfig:
          type: object
          additionalProperties:
            type: string
    PricingModel:
      type: string
      description: "Togai supports two type of pricing model Tiered and Volume. Tiered pricing model applies respective slab and its rate to the usage value while volume pricing model applies the latest matching slab of the usage value and applies respective rate. \nFor more understanding read [Rate Cards](https://docs.togai.com/docs/priceplan#setting-up-multiple-rate-cards)\n"
      enum:
      - TIERED
      - VOLUME
    AddOnType:
      type: string
      enum:
      - LICENSE
      - FIXED_FEE
      - CREDIT_GRANT
      - NAMED_LICENSE
      description: 'LICENSE: Addon can be used in license rate cards

        FIXED_FEE: Addon can be used in fixed fee rate cards

        CREDIT_GRANT: Addon can be used in credit grant rate cards

        NAMED_LICENSE: Addon can be used in license rate cards

        '
    PriceType:
      type: string
      enum:
      - FLAT
      - PER_UNIT
      - PACKAGE
    CurrencyRateValue:
      type: object
      required:
      - currency
      - rate
      properties:
        currency:
          type: string
        rate:
          type: number
    CalculateRevenueRequest:
      description: Request to get revenue details
      type: object
      additionalProperties: false
      required:
      - currencyConfig
      - pricePlanDetailsConfig
      - usageConfig
      - licenseEntriesConfig
      properties:
        currencyConfig:
          title: CurrencyConfig
          description: Configuration for getting the currency
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - ACCOUNT_INVOICE
              description: 'Mode to get the currency

                - CUSTOM: Use the currency provided in the request

                - ACCOUNT_INVOICE: Use the invoice currency of the given account

                '
            currency:
              description: Currency to be used, this will be considered if mode is CUSTOM
              type: string
              minLength: 1
            accountId:
              description: Id of the account of which invoice currency will be used, this will be considered if mode is ACCOUNT_INVOICE
              type: string
        pricePlanDetailsConfig:
          title: PricePlanDetailsConfig
          description: Configuration for getting the usage rate card
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - PRICE_PLAN
              - ACCOUNT
              description: 'Mode to get the usage rate card

                - CUSTOM: Use the price plan details provided in the request

                - PRICE_PLAN: Use the usage rate cards of the given price plan

                - ACCOUNT: Use the usage rate cards of a associated price plan of the given account

                '
            pricePlanDetails:
              $ref: '#/components/schemas/CreatePricePlanDetails'
            pricePlanId:
              description: Id of the price plan, this will be considered if mode is PRICE_PLAN
              type: string
              minLength: 1
            accountId:
              description: Id of the account, this will be considered if mode is ACCOUNT
              type: string
              minLength: 1
            effectiveOn:
              description: Will be used for getting the usage rate card, only used if mode is ACCOUNT or PRICE_PLAN
              type: string
              format: date-time
            pricingCycleOrdinal:
              description: nth cycle, will be used to calculate revenue for the particular cycle, only used if mode is CUSTOM or PRICE_PLAN
              type: integer
        usageConfig:
          title: UsageConfig
          description: Configuration for getting the usage
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - LOOKUP_RANGE
              - LOOKUP_CYCLE
              description: 'Mode to get the usage for the usage meters

                - CUSTOM: Use the usages provided in the request

                - LOOKUP_RANGE: Use the usage of a given account for the specified range

                - LOOKUP_CYCLE: Use the usage of a given account for the specified cycle

                '
            usageMap:
              description: Map of usage meter id and usage, this will be considered if mode is CUSTOM
              type: object
              additionalProperties:
                type: number
            lookupRange:
              description: Range of usage to be looked up, this will be considered if mode is LOOKUP_RANGE
              type: object
              required:
              - start
              - end
              - accountId
              properties:
                start:
                  type: string
                  format: date-time
                end:
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
            lookupCycle:
              description: Cycle of usage to be looked up, this will be considered if mode is LOOKUP_CYCLE
              type: object
              required:
              - accountId
              properties:
                cycleEffectiveOn:
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
        licenseEntriesConfig:
          title: LicenseEntriesConfig
          description: Configuration for getting the license entries
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - LOOKUP_RANGE
              - LOOKUP_CYCLE
              description: 'Mode to get the license entries for the license rate cards

                - CUSTOM: Use the license entries provided in the request

                - LOOKUP_RANGE: Use the license entries of a given account for the specified range

                - LOOKUP_CYCLE: Use the license entries of a given account for the specified cycle

                '
            custom:
              description: List of license entries, this will be considered if mode is CUSTOM
              type: array
              items:
                type: object
                title: LicenseEntry
                required:
                - licenseId
                - quantity
                - effectiveFrom
                properties:
                  licenseId:
                    type: string
                    minLength: 1
                  quantity:
                    type: integer
                  effectiveFrom:
                    type: string
                    format: date-time
            lookupRange:
              description: Range of license entries to be looked up, this will be considered if mode is LOOKUP_RANGE
              type: object
              required:
              - start
              - end
              - accountId
              properties:
                start:
                  type: string
                  format: date-time
                end:
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
            lookupCycle:
              description: Cycle of license entries to be looked up, this will be considered if mode is LOOKUP_CYCLE
              type: object
              required:
              - accountId
              properties:
                cycleEffectiveOn:
                  description: Effective date of the cycle, will be used to get the license entries of the cycle
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
        namedLicenseEntriesConfig:
          title: NamedLicenseEntriesConfig
          description: Configuration for getting the named license entries
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - LOOKUP_RANGE
              - LOOKUP_CYCLE
              description: 'Mode to get the named license entries for the license rate cards

                - CUSTOM: Use the named license entries provided in the request

                - LOOKUP_RANGE: Use the named license entries of a given account for the specified range

                - LOOKUP_CYCLE: Use the named license entries of a given account for the specified cycle

                '
            custom:
              description: List of named license entries, this will be considered if mode is CUSTOM
              type: array
              items:
                type: object
                title: NamedLicenseEntry
                required:
                - licenseId
                - name
                - effectiveFrom
                properties:
                  licenseId:
                    type: string
                    minLength: 1
                  name:
                    type: integer
                  effectiveFrom:
                    type: string
                    format: date-time
                  effectiveUntil:
                    type: string
                    format: date-time
            lookupRange:
              description: Range of named license entries to be looked up, this will be considered if mode is LOOKUP_RANGE
              type: object
              required:
              - start
              - end
              - accountId
              properties:
                start:
                  type: string
                  format: date-time
                end:
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
            lookupCycle:
              description: Cycle of named license entries to be looked up, this will be considered if mode is LOOKUP_CYCLE
              type: object
              required:
              - accountId
              properties:
                cycleEffectiveOn:
                  description: Effective date of the cycle, will be used to get the named license entries of the cycle
                  type: string
                  format: date-time
                accountId:
                  type: string
                  minLength: 1
        prorationConfig:
          title: ProrationConfig
          description: Configuration for getting the proration, if not provided no proration will be applied
          type: object
          required:
          - mode
          properties:
            mode:
              type: string
              enum:
              - CUSTOM
              - LOOKUP_CYCLE
              description: 'Mode to get the proration

                - CUSTOM: Use the proration provided in the request

                - LOOKUP_CYCLE: Use the proration of a given account for the specified cycle

                '
            customConfig:
              description: Custom proration config, this will be considered if mode is CUSTOM
              type: object
              required:
              - cycleStartDate
              - cycleEndDate
              - currentDate
              properties:
                cycleStartDate:
                  type: string
                  format: date-time
                cycleEndDate:
                  type: string
                  format: date-time
                currentDate:
                  type: string
                  format: date-time
            lookupCycleConfig:
              description: Cycle of proration to be looked u

# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/togai/refs/heads/main/openapi/togai-price-experimentation-api-openapi.yml