Octane Price Plans API
Manage pricing plans with metered components and flat rates
Manage pricing plans with metered components and flat rates
openapi: 3.0.3
info:
title: Octane REST Admin Price Plans API
description: REST API for managing meters, customers, pricing plans, subscriptions, measurements, and real-time usage data for usage-based billing workflows. Octane enables infrastructure and SaaS companies to implement flexible pay-as-you-go billing similar to Snowflake and AWS.
version: 1.0.0
contact:
name: Octane Support
url: https://www.getoctane.io
servers:
- url: https://api.getoctane.io
description: Octane Production API
security:
- BearerApiKeyAuth: []
tags:
- name: Price Plans
description: Manage pricing plans with metered components and flat rates
paths:
/price_plans:
get:
summary: List Price Plans
description: Get all price plans for a vendor.
operationId: pricePlansGet
tags:
- Price Plans
responses:
'200':
description: List of price plans
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PricePlan'
post:
summary: Create Price Plan
description: Create a new price plan.
operationId: pricePlansPost
tags:
- Price Plans
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePricePlanArgs'
responses:
'200':
description: Created price plan
content:
application/json:
schema:
$ref: '#/components/schemas/PricePlan'
/price_plans/paginate:
get:
summary: List Price Plans Paginated
description: Get price plans with pagination support.
operationId: pricePlansPaginateGet
tags:
- Price Plans
responses:
'200':
description: Paginated price plans
content:
application/json:
schema:
type: object
/price_plans/self_serve:
get:
summary: List Self-Serve Price Plans
description: Get price plans available for self-serve enrollment.
operationId: pricePlansSelfServeGet
tags:
- Price Plans
responses:
'200':
description: Self-serve price plans
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/PricePlan'
/price_plans/{price_plan_name}:
get:
summary: Get Price Plan
description: Get a price plan by its unique name.
operationId: pricePlansPricePlanNameGet
tags:
- Price Plans
parameters:
- name: price_plan_name
in: path
required: true
schema:
type: string
responses:
'200':
description: Price plan details
content:
application/json:
schema:
$ref: '#/components/schemas/PricePlan'
put:
summary: Update Price Plan
description: Update a price plan by its unique name.
operationId: pricePlansPricePlanNamePut
tags:
- Price Plans
parameters:
- name: price_plan_name
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePricePlanArgs'
responses:
'200':
description: Updated price plan
content:
application/json:
schema:
$ref: '#/components/schemas/PricePlan'
delete:
summary: Delete Price Plan
description: Delete a price plan by its unique name.
operationId: pricePlansPricePlanNameDelete
tags:
- Price Plans
parameters:
- name: price_plan_name
in: path
required: true
schema:
type: string
responses:
'204':
description: Price plan deleted
/price_plans/{price_plan_name}/archive:
post:
summary: Archive Price Plan
description: Archive a price plan by its unique name.
operationId: pricePlansPricePlanNameArchivePost
tags:
- Price Plans
parameters:
- name: price_plan_name
in: path
required: true
schema:
type: string
responses:
'204':
description: Price plan archived
/price_plans/{price_plan_name}/{tag}:
get:
summary: Get Price Plan by Tag
description: Get a price plan by name and tag.
operationId: pricePlansPricePlanNameTagGet
tags:
- Price Plans
parameters:
- name: price_plan_name
in: path
required: true
schema:
type: string
- name: tag
in: path
required: true
schema:
type: string
responses:
'200':
description: Price plan details
content:
application/json:
schema:
$ref: '#/components/schemas/PricePlan'
/price_plans/metered_components/{uuid}/update_limits:
post:
summary: Update Metered Component Limits
description: Update usage limits for a metered component on a price plan.
operationId: pricePlansMeteredComponentsUuidUpdateLimitsPost
tags:
- Price Plans
parameters:
- name: uuid
in: path
required: true
schema:
type: string
responses:
'200':
description: Updated limits
content:
application/json:
schema:
type: object
components:
schemas:
PriceSchemeInputArgs:
type: object
properties:
prices:
type: array
items:
$ref: '#/components/schemas/PriceTier'
scheme_type:
type: string
enum:
- FLAT
- TIERED
- VOLUME
- PACKAGE
unit_name:
type: string
time_unit_name:
type: string
Trial:
type: object
properties:
time_length:
type: integer
description: Duration of the trial period.
time_unit_name:
type: string
description: Unit of time for the trial (e.g., "day", "month").
credit:
type: number
description: Trial credit amount.
TrialInputArgs:
type: object
properties:
time_length:
type: integer
description: Duration of the trial period.
time_unit_name:
type: string
description: Unit of time for the trial.
credit:
type: number
description: Trial credit amount.
CreatePricePlanArgs:
type: object
properties:
name:
type: string
description: Unique name for the price plan.
display_name:
type: string
description:
type: string
vendor_id:
type: string
period:
type: string
enum:
- monthly
- quarterly
- annual
base_price:
type: number
base_price_frequency:
type: string
base_price_description:
type: string
minimum_charge:
type: number
minimum_charge_frequency:
type: string
metered_components:
type: array
items:
$ref: '#/components/schemas/MeteredComponentInputArgs'
features:
type: array
items:
type: object
add_ons:
type: array
items:
type: object
limits:
type: array
items:
type: object
trial:
$ref: '#/components/schemas/TrialInputArgs'
tags:
type: array
items:
type: string
PriceTier:
type: object
description: A price tier within a tiered pricing scheme.
properties:
price:
type: number
description: Price per unit at this tier.
cap:
type: number
description: Upper bound of usage for this tier (null = unlimited).
Limit:
type: object
required:
- feature
- limit
properties:
feature:
$ref: '#/components/schemas/Feature'
limit:
type: number
description: Numeric limit for the feature.
MeteredComponentInputArgs:
type: object
properties:
meter_name:
type: string
meter_id:
type: string
id:
type: string
display_name:
type: string
price_scheme:
$ref: '#/components/schemas/PriceSchemeInputArgs'
limit:
type: number
label_limits:
type: array
items:
type: object
minimum_charge:
type: number
minimum_charge_frequency:
type: string
watermark:
type: number
PricePlan:
type: object
required:
- name
- period
- metered_components
properties:
name:
type: string
description: Unique name identifier for the price plan.
display_name:
type: string
description: Human-readable display name.
description:
type: string
description: Description of the price plan.
external_uuid:
type: string
description: External UUID reference.
base_price:
type: number
description: Fixed base price for the plan period.
base_price_frequency:
type: string
description: How often the base price is charged.
base_price_description:
type: string
description: Description of what the base price covers.
period:
type: string
enum:
- monthly
- quarterly
- annual
description: Billing period for this plan.
minimum_charge:
type: number
description: Minimum charge amount for the period.
minimum_charge_frequency:
type: string
description: Frequency of minimum charge.
metered_components:
type: array
items:
$ref: '#/components/schemas/MeteredComponent'
description: Usage-based metered pricing components.
features:
type: array
items:
$ref: '#/components/schemas/Feature'
description: Features included in this plan.
add_ons:
type: array
items:
$ref: '#/components/schemas/AddOn'
description: Available add-ons for this plan.
limits:
type: array
items:
$ref: '#/components/schemas/Limit'
description: Usage limits for features.
tags:
type: array
items:
type: object
description: Version tags for this plan.
trial:
$ref: '#/components/schemas/Trial'
created_at:
type: string
format: date-time
MeteredComponent:
type: object
required:
- meter_name
- meter_display_name
- price_scheme
- label_limits
properties:
meter_name:
type: string
description: Name of the meter this component is based on.
meter_display_name:
type: string
description: Display name of the meter.
display_name:
type: string
description: Display name for this component on invoices.
external_uuid:
type: string
description: External UUID reference.
price_scheme:
$ref: '#/components/schemas/PriceScheme'
limit:
type: number
description: Usage limit for this component.
label_limits:
type: array
items:
type: object
description: Per-label usage limits.
minimum_charge:
type: number
minimum_charge_frequency:
type: string
watermark:
type: number
description: High-watermark for pricing.
Feature:
type: object
required:
- name
properties:
name:
type: string
description: Unique name of the feature.
display_name:
type: string
description: Human-readable display name.
description:
type: string
description: Description of the feature.
PriceScheme:
type: object
description: Pricing scheme configuration for a metered component.
properties:
prices:
type: array
items:
$ref: '#/components/schemas/PriceTier'
scheme_type:
type: string
enum:
- FLAT
- TIERED
- VOLUME
- PACKAGE
unit_name:
type: string
time_unit_name:
type: string
AddOn:
type: object
required:
- feature
- price
- price_scheme_type
- single_use
- quantity_enabled
properties:
feature:
$ref: '#/components/schemas/Feature'
price:
type: number
description: Price of the add-on.
prices:
type: array
items:
$ref: '#/components/schemas/PriceTier'
price_scheme_type:
type: string
description: Pricing scheme type for the add-on.
single_use:
type: boolean
description: Whether the add-on can only be purchased once.
quantity_enabled:
type: boolean
description: Whether quantity selection is enabled.
immediately_charge:
type: boolean
description: Whether to charge immediately on purchase.
limit:
type: number
description: Maximum quantity allowed.
price_frequency:
type: string
description: How often the add-on price recurs.
charge_frequency:
type: string
description: How often to charge for the add-on.
securitySchemes:
BearerApiKeyAuth:
type: http
scheme: bearer
description: API key passed as a Bearer token in the Authorization header.