421 lines
12 KiB
YAML
421 lines
12 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Autumn API
|
|
version: 1.2.0
|
|
servers:
|
|
- url: https://api.useautumn.com
|
|
description: Production server
|
|
security:
|
|
- secretKey: []
|
|
paths:
|
|
/products:
|
|
post:
|
|
summary: Create Product
|
|
tags:
|
|
- products
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
minLength: 1
|
|
pattern: ^[a-zA-Z0-9_-]+$
|
|
name:
|
|
type: string
|
|
is_add_on:
|
|
default: false
|
|
type: boolean
|
|
is_default:
|
|
default: false
|
|
type: boolean
|
|
version:
|
|
type: number
|
|
group:
|
|
default: ""
|
|
type: string
|
|
required:
|
|
- id
|
|
- name
|
|
responses:
|
|
"200":
|
|
description: 200 OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/Product"
|
|
components:
|
|
schemas:
|
|
Product:
|
|
description: A product
|
|
type: object
|
|
properties:
|
|
id:
|
|
description: The ID of the product you set when creating the product
|
|
example: pro_plan
|
|
type: string
|
|
name:
|
|
description: The name of the product
|
|
example: Pro Plan
|
|
type: string
|
|
group:
|
|
description: The group of the product
|
|
example: product_set_1
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
env:
|
|
description: The environment of the product
|
|
example: production
|
|
type: string
|
|
enum:
|
|
- sandbox
|
|
- live
|
|
is_add_on:
|
|
description: Whether the product is an add-on and can be purchased alongside
|
|
other products
|
|
example: true
|
|
type: boolean
|
|
is_default:
|
|
description: Whether the product is the default product
|
|
example: true
|
|
type: boolean
|
|
archived:
|
|
description: Whether this product has been archived and is no longer available
|
|
example: false
|
|
type: boolean
|
|
version:
|
|
description: The version of the product
|
|
example: 1
|
|
type: number
|
|
created_at:
|
|
description: The timestamp of when the product was created in milliseconds since
|
|
epoch
|
|
example: 1759247877000
|
|
type: number
|
|
items:
|
|
description: Array of product items that define the features and pricing
|
|
example:
|
|
- feature_id: <string>
|
|
feature_type: single_use
|
|
included_usage: 123
|
|
interval: <string>
|
|
usage_model: prepaid
|
|
price: 123
|
|
billing_units: 123
|
|
entity_feature_id: <string>
|
|
reset_usage_when_enabled: true
|
|
tiers:
|
|
- to: 123
|
|
amount: 123
|
|
type: array
|
|
items:
|
|
$ref: "#/components/schemas/ProductItem"
|
|
free_trial:
|
|
description: Free trial configuration for this product, if available
|
|
example:
|
|
duration: <string>
|
|
length: 123
|
|
unique_fingerprint: true
|
|
anyOf:
|
|
- type: object
|
|
properties:
|
|
duration:
|
|
type: string
|
|
enum:
|
|
- day
|
|
- month
|
|
- year
|
|
length:
|
|
type: number
|
|
unique_fingerprint:
|
|
type: boolean
|
|
card_required:
|
|
type: boolean
|
|
trial_available:
|
|
default: true
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
required:
|
|
- duration
|
|
- length
|
|
- unique_fingerprint
|
|
- card_required
|
|
- trial_available
|
|
additionalProperties: false
|
|
- type: "null"
|
|
base_variant_id:
|
|
description: ID of the base variant this product is derived from
|
|
example: var_1234567890abcdef
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
scenario:
|
|
description: Scenario context for when this product is used in attach flows
|
|
example: upgrade
|
|
type: string
|
|
enum:
|
|
- scheduled
|
|
- active
|
|
- new
|
|
- renew
|
|
- upgrade
|
|
- downgrade
|
|
- cancel
|
|
- expired
|
|
properties:
|
|
description: Additional properties and metadata for the product
|
|
example:
|
|
is_free: false
|
|
is_one_off: false
|
|
interval_group: monthly
|
|
has_trial: true
|
|
updateable: true
|
|
type: object
|
|
properties:
|
|
is_free:
|
|
description: True if the product has no base price or usage prices
|
|
example: false
|
|
type: boolean
|
|
is_one_off:
|
|
description: True if the product only contains a one-time price
|
|
example: false
|
|
type: boolean
|
|
interval_group:
|
|
description: The billing interval group for recurring products (e.g., 'monthly',
|
|
'yearly')
|
|
example: monthly
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
has_trial:
|
|
description: True if the product includes a free trial
|
|
example: true
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
updateable:
|
|
description: True if the product can be updated after creation (only applicable
|
|
if there are prepaid recurring prices)
|
|
example: true
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
required:
|
|
- is_free
|
|
- is_one_off
|
|
additionalProperties: false
|
|
required:
|
|
- id
|
|
- name
|
|
- group
|
|
- env
|
|
- is_add_on
|
|
- is_default
|
|
- archived
|
|
- version
|
|
- created_at
|
|
- items
|
|
- free_trial
|
|
- base_variant_id
|
|
additionalProperties: false
|
|
ProductItem:
|
|
description: A product item that defines a feature
|
|
example:
|
|
feature_id: feature_1
|
|
feature_type: single_use
|
|
included_usage: 123
|
|
interval: monthly
|
|
usage_model: prepaid
|
|
type: object
|
|
properties:
|
|
type:
|
|
anyOf:
|
|
- type: string
|
|
enum:
|
|
- feature
|
|
- priced_feature
|
|
- price
|
|
- type: "null"
|
|
feature_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
feature_type:
|
|
anyOf:
|
|
- type: string
|
|
enum:
|
|
- single_use
|
|
- continuous_use
|
|
- boolean
|
|
- static
|
|
- type: "null"
|
|
feature:
|
|
anyOf:
|
|
- type: object
|
|
properties:
|
|
id:
|
|
type: string
|
|
name:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
type:
|
|
type: string
|
|
enum:
|
|
- boolean
|
|
- single_use
|
|
- continuous_use
|
|
- credit_system
|
|
display:
|
|
anyOf:
|
|
- type: object
|
|
properties:
|
|
singular:
|
|
type: string
|
|
plural:
|
|
type: string
|
|
required:
|
|
- singular
|
|
- plural
|
|
additionalProperties: false
|
|
- type: "null"
|
|
credit_schema:
|
|
anyOf:
|
|
- type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
metered_feature_id:
|
|
type: string
|
|
credit_cost:
|
|
type: number
|
|
required:
|
|
- metered_feature_id
|
|
- credit_cost
|
|
additionalProperties: false
|
|
- type: "null"
|
|
archived:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
required:
|
|
- id
|
|
- type
|
|
additionalProperties: false
|
|
- type: "null"
|
|
included_usage:
|
|
anyOf:
|
|
- anyOf:
|
|
- type: number
|
|
- type: string
|
|
const: inf
|
|
- type: "null"
|
|
interval:
|
|
anyOf:
|
|
- type: string
|
|
enum:
|
|
- minute
|
|
- hour
|
|
- day
|
|
- week
|
|
- month
|
|
- quarter
|
|
- semi_annual
|
|
- year
|
|
- type: "null"
|
|
interval_count:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
price:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
tiers:
|
|
anyOf:
|
|
- type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
to:
|
|
anyOf:
|
|
- type: number
|
|
- type: string
|
|
const: inf
|
|
amount:
|
|
type: number
|
|
required:
|
|
- to
|
|
- amount
|
|
additionalProperties: false
|
|
- type: "null"
|
|
usage_model:
|
|
anyOf:
|
|
- type: string
|
|
enum:
|
|
- prepaid
|
|
- pay_per_use
|
|
- type: "null"
|
|
billing_units:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
reset_usage_when_enabled:
|
|
anyOf:
|
|
- type: boolean
|
|
- type: "null"
|
|
quantity:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
next_cycle_quantity:
|
|
anyOf:
|
|
- type: number
|
|
- type: "null"
|
|
entity_feature_id:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
display:
|
|
anyOf:
|
|
- type: object
|
|
properties:
|
|
primary_text:
|
|
type: string
|
|
secondary_text:
|
|
anyOf:
|
|
- type: string
|
|
- type: "null"
|
|
required:
|
|
- primary_text
|
|
additionalProperties: false
|
|
- type: "null"
|
|
additionalProperties: false
|
|
AutumnError:
|
|
description: An error that occurred in the API
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
code:
|
|
type: string
|
|
env:
|
|
type: string
|
|
enum:
|
|
- sandbox
|
|
- live
|
|
required:
|
|
- message
|
|
- code
|
|
- env
|
|
additionalProperties: false
|
|
securitySchemes:
|
|
secretKey:
|
|
type: http
|
|
scheme: bearer
|
|
bearerFormat: JWT
|