Togai Price Plans API

Price Plan level calls

Operations 9

POST /price_plans Create a Price Plan #
GET /price_plans List Price Plans #
PATCH /price_plans/{price_plan_id} Update a Price Plan #
GET /price_plans/{price_plan_id} Get a Price Plan #
DELETE /price_plans/{price_plan_id} Archive a Price Plan #
POST /price_plans/{price_plan_id}/activate Activate a Price Plan #
POST /price_plans/{price_plan_id}/currencies Add Currencies to a Price Plan #
DELETE /price_plans/{price_plan_id}/currencies/{currency_id} Remove a Draft Currency From a Price Plan #
POST /price_plans/migration Create a Price Plan Migration #

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-plans-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-plans-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: '1.0'
  title: Togai Apis Accounts Price Plans 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 Plans
  description: Price Plan level calls
paths:
  /price_plans:
    post:
      tags:
      - Price Plans
      summary: Create a Price Plan
      description: 'This API let''s you create and price plan

        Learn more about [Price Plans](https://docs.togai.com/docs/priceplan)

        '
      operationId: createPricePlan
      parameters:
      - $ref: '#/components/parameters/dry_run'
      requestBody:
        $ref: '#/components/requestBodies/CreatePricePlanRequest'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
    get:
      tags:
      - Price Plans
      summary: List Price Plans
      description: Get a list of price plans
      operationId: getPricePlans
      parameters:
      - $ref: '#/components/parameters/next_token'
      - $ref: '#/components/parameters/page_size'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanPaginatedResponse'
        '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'
  /price_plans/{price_plan_id}:
    patch:
      tags:
      - Price Plans
      summary: Update a Price Plan
      description: 'Update an existing price plan

        Price Plans with status as DRAFT alone can be updated . Learn more about [Price plans](https://docs.togai.com/docs/priceplan) from our Guides

        '
      operationId: updatePricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      requestBody:
        $ref: '#/components/requestBodies/UpdatePricePlanRequest'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
    get:
      tags:
      - Price Plans
      summary: Get a Price Plan
      description: Get a price plan details using price plan id
      operationId: getPricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      - $ref: '#/components/parameters/version_query'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
    delete:
      tags:
      - Price Plans
      summary: Archive a Price Plan
      description: Archive a price plan
      operationId: archivePricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      responses:
        '200':
          $ref: '#/components/responses/BaseSuccessResponse'
        '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'
  /price_plans/{price_plan_id}/activate:
    post:
      tags:
      - Price Plans
      summary: Activate a Price Plan
      description: Activate a price plan details using price plan id
      operationId: activatePricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      requestBody:
        $ref: '#/components/requestBodies/ActivatePricePlanRequest'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
  /price_plans/{price_plan_id}/currencies:
    post:
      tags:
      - Price Plans
      summary: Add Currencies to a Price Plan
      description: Add currencies to a price plan
      operationId: addCurrencyToPricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      requestBody:
        $ref: '#/components/requestBodies/AddCurrencyToPricePlanRequest'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
  /price_plans/{price_plan_id}/currencies/{currency_id}:
    delete:
      tags:
      - Price Plans
      summary: Remove a Draft Currency From a Price Plan
      description: Remove a draft currency from a price plan
      operationId: removeCurrencyFromPricePlan
      parameters:
      - $ref: '#/components/parameters/price_plan_id'
      - $ref: '#/components/parameters/currency_id'
      responses:
        '200':
          $ref: '#/components/responses/PricePlanResponse'
        '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'
  /price_plans/migration:
    post:
      tags:
      - Price Plans
      summary: Create a Price Plan Migration
      description: "Migrates accounts across price plans. This is an asynchronous process functioning on top of Togai's Jobs \nframework. Status of the created migrations can be obtained using the [Jobs APIs](https://docs.togai.com/api-reference/jobs/get-the-status-of-a-job)\n"
      operationId: pricePlanMigration
      requestBody:
        $ref: '#/components/requestBodies/CreatePricePlanMigrationRequest'
      responses:
        '201':
          $ref: '#/components/responses/BaseSuccessResponse'
        '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:
  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
    PricingRuleTiming:
      type: string
      enum:
      - IN_ADVANCE
      - IN_ARREARS
      x-enum-varnames:
      - IN_ADVANCE
      - IN_ARREARS
      description: 'If IN_ADVANCE, the rule will be applied on rate cards with invoice timing IN_ADVANCE .

        If IN_ARREARS, the rule will be applied on rate cards with invoice timing IN_ARREARS .

        '
    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
    UpdatePricePlanRequest:
      description: Request to update a price plan
      type: object
      additionalProperties: false
      properties:
        description:
          description: Description of price plan
          type: string
          maxLength: 255
        pricePlanDetails:
          $ref: '#/components/schemas/CreatePricePlanDetailsOverride'
        migrationMode:
          type: string
          enum:
          - IMMEDIATE
          - IMMEDIATE_IGNORE_OVERRIDE
          - NEXT_CYCLE
          - NEXT_CYCLE_IGNORE_OVERRIDE
          - NONE
        versionsToMigrate:
          type: string
          enum:
          - LATEST_VERSION
          - ALL_VERSION
        pricingRules:
          type: array
          items:
            $ref: '#/components/schemas/CreatePricingRule'
    PricePlan:
      description: Price plan entity
      type: object
      additionalProperties: false
      required:
      - id
      - name
      - type
      - status
      - pricingSchedule
      properties:
        id:
          type: string
          description: Price plan id
        name:
          type: string
          description: Name of the price plan
          maxLength: 50
        type:
          $ref: '#/components/schemas/PricePlanType'
        description:
          description: Description of price plan
          type: string
          maxLength: 255
        status:
          description: Status of Price plan
          type: string
          enum:
          - DRAFT
          - ACTIVE
          - ARCHIVED
        pricingSchedule:
          type: array
          items:
            $ref: '#/components/schemas/PricingSchedule'
    AddCurrencyToPricePlanRequest:
      description: Request to adding currency to a price plan
      type: object
      additionalProperties: false
      required:
      - currency
      properties:
        currency:
          description: Currency to be added
          type: string
        usageRates:
          description: List of usage rates
          type: array
          items:
            title: UsageRate
            type: object
            required:
            - usageMeterId
            - slabRates
            properties:
              usageMeterId:
                description: The usage meter will be associated with the rate card to transform the usage value to billable value
                example: um.1zYnCiM9Bpg.1zYn
                type: string
              slabRates:
                description: List of slab rates
                type: array
                items:
                  $ref: '#/components/schemas/SlabRate'
              rateConfig:
                type: object
                additionalProperties:
                  type: string
        fixedFeeRates:
          description: Rates for fixed fee rate cards
          type: array
          items:
            title: FixedFeeRate
            type: object
            required:
            - id
            - rate
            properties:
              id:
                type: string
              rate:
                type: number
        licenseRates:
          description: Rates for license rate cards
          type: array
          items:
            title: LicenseRate
            type: object
            required:
            - id
            - slabRates
            properties:
              id:
                type: string
              slabRates:
                description: List of slab rates
                type: array
                items:
                  $ref: '#/components/schemas/SlabRate'
              rateConfig:
                type: object
                additionalProperties:
                  type: string
        billingEntitlementRates:
          description: Rates for billing entitlement rate cards
          type: array
          items:
            title: BillingEntitlementRate
            type: object
            required:
            - id
            - slabRates
            properties:
              id:
                type: string
              slabRates:
                description: List of slab rates
                type: array
                items:
                  $ref: '#/components/schemas/SlabRate'
              rateConfig:
                type: object
                additionalProperties:
                  type: string
        minimumCommitmentRate:
          description: Rates for minimum commitment.
          type: number
        creditGrantRates:
          description: Rates for credit grant rate card
          type: array
          items:
            title: creditGrantRates
            type: object
            required:
            - id
            - slabDetails
            - creditAmount
            properties:
              id:
                type: string
              slabDetails:
                type: array
                items:
                  $ref: '#/components/schemas/SlabDetail'
              creditAmount:
                type: number
              rateConfig:
                type: object
                additionalProperties:
                  type: string
        entitlementOverageRates:
          description: Rates for entitlement overage rate cards
          type: array
          items:
            title: EntitlementOverageRates
            type: object
            required:
            - id
            - slabRates
            properties:
              id:
                type: string
              slabRates:
                description: List of slab rates
                type: array
                items:
                  $ref: '#/components/schemas/SlabRate'
              rateConfig:
                type: object
                additionalProperties:
                  type: string
    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

        '
    MinimumCommitment:
      title: MinimumCommitment
      type: object
      required:
      - displayName
      - rateValues
      properties:
        displayName:
          type: string
        rateValues:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/CurrencyRateValue'
    ExpiryType:
      type: string
      description: Expiry type of grant
      enum:
      - PRICING_CYCLE
      - NO_EXPIRY
      - CUSTOM
    CreatePricePlanDetailsOverride:
      type: object
      properties:
        pricingCycleConfig:
          $ref: '#/components/schemas/PricingCycleConfig'
        supportedCurrencies:
          type: array
          uniqueItems: true
          minItems: 1
          items:
            type: string
        usageRateCards:
          type: array
          items:
            $ref: '#/components/schemas/UsageRateCard'
        billingEntitlementRateCards:
          type: array
          items:
            $ref: '#/components/schemas/BillingEntitlementRateCard'
        entitlementOverageRateCards:
          type: array
          items:
            $ref: '#/components/schemas/EntitlementOverageRateCard'
        fixedFeeRateCards:
          type: array
          items:
            $ref: '#/components/schemas/FixedFeeRateCard'
        licenseRateCards:
          type: array
          items:
            $ref: '#/components/schemas/LicenseRateCard'
        minimumCommitment:
          $ref: '#/components/schemas/MinimumCommitment'
        creditGrantRateCards:
          type: array
          items:
            $ref: '#/components/schemas/CreditGrantRateCard'
    PricingRule:
      type: object
      description: Represents pricing rules of a price plan. i.e, price plan bound by time.
      additionalProperties: false
      required:
      - id
      - name
      - version
      - order
      - computation
      - action
      properties:
        id:
          type: string
        name:
          type: string
        version:
          type: integer
          format: int32
          minimum: 1
        invoiceTiming:
          $ref: '#/components/schemas/PricingRuleTiming'
        order:
          type: integer
          format: int32
          minimum: 1
        condition:
          description: JSON logic condition deciding whether to compute this pricing rule or not
          type: string
        computation:
          description: JSON logic to be computed
          type: string
        action:
          description: JSON logic to be computed
          title: action
          $ref: '#/components/schemas/PricingRuleAction'
    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
    PriceType:
      type: string
      enum:
      - FLAT
      - PER_UNIT
      - PACKAGE
    ProratedRefundMode:
      type: string
      enum:
      - NONE
      - CREDITS
      - PAYMENT
      - WALLET
    CreatePricePlanMigrationRequest:
      description: Request to create price plan migration request
      allOf:
      - $ref: '#/components/schemas/pricePlanMigrationConfig'
      - type: object
        properties:
          requireConfirmation:
            description: 'This field specifies whether to process job or to wait till the job is confirmed. Default value: false

              '
            type: boolean
    PricePlanType:
      type: string
      description: Type of price plan
      enum:
      - BILLING
      - PURCHASE
    PricePlanPaginatedResponse:
      type: object
      required:
      - data
      additionalProperties: false
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PricePlanListData'
        nextToken:
          type: string
        context:
          $ref: '#/components/schemas/PaginationOptions'
    pricePlanMigrationConfig:
      description: Migrate all account associations of a price plan to another price plan
      type: object
      additionalProperties: false
      required:
      - sourceId
      - sourceVersion
      - migrationMode
      properties:
        sourceId:
          description: Id of source price plan
          type: string
          maxLength: 255
        sourceVersion:
          description: Version of the source price plan
          type: integer
          format: int32
        targetId:
          description: Id of target price plan
          type: string
          maxLength: 255
        targetVersion:
          description: Version of the target price plan
          type: integer
          format: int32
        migrationMode:
          type: string
          enum:
          - IMMEDIATE
          - IMMEDIATE_IGNORE_OVERRIDE
          - NEXT_CYCLE
          - NEXT_CYCLE_IGNORE_OVERRIDE
        retainStartOffsets:
          type: boolean
          description: "If this flag is true, current pricing cycle of the account on the date of association will continue rather \nthan the configurations of the newly associated price plan. Pricing cycle overrides specified  using \n`pricePlanDetailsOverride` will take precedence over the pricing cycle configurations of \nthe new price plan that the account needs to migrate to. PricingCycleInterval of the existing plan and \nthe new plan must be same for this to work. We'll return a `400 BadRequest` otherwise.\nExamples:\n  - Ongoing plan (1st Oct to 30th Oct) - {dayOffset: 1, monthOffset: NIL}\n    New association (15th Oct to 15th Nov) of different price plan with retainStartOffsets option true \n    will use the same pricing cycle configuration {dayOffset: 1, monthOffset: NIL} rather than using the\n    pricing cycle configuration of the new price plan that the account needs to migrate to.\n  - Ongoing plan (1st Oct to 30th Oct) - {dayOffset: 1, monthOffset: NIL}\n    New association (1st Nov to 30th Nov) of different price plan with retainStartOffsets option true will\n    throw a `400 BadRequest` as no existing price plan configuration found on date of association\n"
    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'
    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
    CreatePricePlanRequest:
      description: Request to create a price plan
      type: object
      additionalProperties: false
      required:
      - name
      - pricePlanDetails
      properties:
        name:
          type: string
          description: Name of the price plan
          maxLength: 50
        description:
          description: Description of price plan
          type: string
          maxLength: 255
        type:
          $ref: '#/components/schemas/PricePlanType'
        pricePlanDetails:
          $ref: '#/components/schemas/CreatePricePlanDetails'
        pricingRules:
          type: array
          items:
            $ref: '#/components/schemas/CreatePricingRule'
    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'
    PaginationOptions:
      type: object
      additionalProperties: false
      properties:
        pageSize:
          type: integer
        sortOrder:
          type: string
          enum:
          - ASC
          - DESC
    RatePlan:
      type: object
      description: Contains all rate related configurations
      required:
      - pricingModel
      - slabs
      properties:
        pricingModel:
          $ref: '#/components/schemas/PricingModel'
        slabs:
          description: Rate cards can have single or multiple slab up to 100.
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/Slab'
    UsageCycleInterval:
      type: string
      description: "UsageCycleInterval field allows you to treat the billing interval as many smaller windows. Revenue is calculated for\neach of the windows (usage cycles) and their sum is considered as the billing interval revenue.\nExample: 1 Named License being used across entire billing interval. Rate Value: $1/license\nCASE 1: Without usage cycle. $1 is charged for the entire billing cycle.\nCASE 2: Usage cycle is configure to be WEEKLY and the billing interval has 4 weeks. In this case $1 is charged \nfor each week totalling to $4 across for the billing interval\n"
      enum:
      - WEEKLY
      - MONTHLY
      - QUARTERLY
      - HALF_YEARLY
      - ANNUALLY
    FeatureConfig:
      description: Feature configuration object
      type: object
      additionalProperties: false
      required:
      - effectiveUntil
      - featureCreditLimit
      properties:
        effectiveFrom:
          type: string
          format: duration
        effectiveUntil:
          type: string
          format: duration
        featureCreditLimit:
          type: number
          minimum: 0
    BaseSuccessResponse:
      type: object
      additionalProperties: false
      required:
      - success
      properties:
        success:
          type: boolean
          example: true
    PricingSchedule:
      type: object
      description: Represents effectiveness period and config of a price plan. i.e, price plan bound by time.
      additionalProperties: false
      required:
      - id
      - startDate
      - endDate
      - version
      - isOverriden
      properties:
        id:
          type: string
        pricePlanDetails:
          $ref: '#/components/schemas/PricePlanDetails'
        startDate:
          type: string
          format: date-time
        endDate:
          type: string
          format: date-time
        version:
          type: integer
          format: int32
          minimum: 1
        pricingRules:
          type: array
          items:
            $ref: '#/components/schemas/PricingRule'
        isOverriden:
          type: boolean
    FixedFeeType:
      type: string
      enum:
      - ONE_TIME
      - RECURRING
      description: Fixed fee applies either for a one-time occurrence or for each cycle.
    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
    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
    PricingRuleAction:
      type: object
      additionalProperties: false
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - ADD
          - UPDATE
        target:
          type: string
        id:
          type: string
        description:
          type: string
        metadata:
          type: object
          additionalProperties:
            type: str

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