Octane Customers API

Manage customers and their subscriptions, billing, and settings

OpenAPI Specification

octane-customers-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Octane REST Admin Customers 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: Customers
  description: Manage customers and their subscriptions, billing, and settings
paths:
  /customers:
    get:
      summary: List Customers
      description: Get all customers for a given vendor.
      operationId: customersGet
      tags:
      - Customers
      responses:
        '200':
          description: List of customers
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Customer'
    post:
      summary: Create Customer
      description: Create a new customer.
      operationId: customersPost
      tags:
      - Customers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCustomerArgs'
      responses:
        '200':
          description: Created customer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
  /customers/{customer_name}:
    get:
      summary: Get Customer
      description: Get a customer by their unique name.
      operationId: customersCustomerNameGet
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Customer details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Customer'
    delete:
      summary: Delete Customer
      description: Delete a customer by their unique name.
      operationId: customersCustomerNameDelete
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Customer deleted
  /customers/{customer_name}/billing_settings:
    get:
      summary: Get Customer Billing Settings
      description: Get billing settings for a customer.
      operationId: customersCustomerNameBillingSettingsGet
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Billing settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSettings'
    post:
      summary: Create Customer Billing Settings
      description: Create billing settings for a customer.
      operationId: customersCustomerNameBillingSettingsPost
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerBillingSettingsInputArgs'
      responses:
        '200':
          description: Billing settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSettings'
    put:
      summary: Update Customer Billing Settings
      description: Update billing settings for a customer.
      operationId: customersCustomerNameBillingSettingsPut
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerBillingSettingsInputArgs'
      responses:
        '200':
          description: Updated billing settings
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSettings'
    delete:
      summary: Delete Customer Billing Settings
      description: Delete billing settings for a customer.
      operationId: customersCustomerNameBillingSettingsDelete
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Billing settings deleted
  /customers/{customer_name}/adhoc_charges:
    get:
      summary: List Customer Adhoc Charges
      description: Get all adhoc charges for a customer.
      operationId: customersCustomerNameAdhocChargesGet
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of adhoc charges
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AdhocCharge'
    post:
      summary: Create Customer Adhoc Charge
      description: Create an adhoc charge for a customer.
      operationId: customersCustomerNameAdhocChargesPost
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAdhocChargeArgs'
      responses:
        '200':
          description: Created adhoc charge
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdhocCharge'
  /customers/{customer_name}/adhoc_charges/{uuid}:
    get:
      summary: Get Customer Adhoc Charge
      description: Get a specific adhoc charge for a customer.
      operationId: customersCustomerNameAdhocChargesUuidGet
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      - name: uuid
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Adhoc charge details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdhocCharge'
    delete:
      summary: Delete Customer Adhoc Charge
      description: Delete an adhoc charge for a customer.
      operationId: customersCustomerNameAdhocChargesUuidDelete
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      - name: uuid
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Adhoc charge deleted
  /customers/{customer_name}/discounts:
    post:
      summary: Create Customer Discount
      description: Apply a discount to a customer.
      operationId: customersCustomerNameDiscountsPost
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DiscountInputArgs'
      responses:
        '200':
          description: Discount applied
          content:
            application/json:
              schema:
                type: object
    delete:
      summary: Delete Customer Discounts
      description: Remove discounts from a customer.
      operationId: customersCustomerNameDiscountsDelete
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Discounts removed
  /customers/{customer_name}/mappings:
    get:
      summary: List Customer Measurement Mappings
      description: Get measurement mappings for a customer.
      operationId: customersCustomerNameMappingsGet
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Measurement mappings
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomerMeasurementMapping'
    post:
      summary: Create Customer Measurement Mapping
      description: Create a measurement mapping for a customer.
      operationId: customersCustomerNameMappingsPost
      tags:
      - Customers
      parameters:
      - name: customer_name
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomerMeasurementMappingInputArgs'
      responses:
        '200':
          description: Created measurement mapping
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerMeasurementMapping'
components:
  schemas:
    ContactInfo:
      type: object
      properties:
        address_line_1:
          type: string
        address_line_2:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        zipcode:
          type: string
        url:
          type: string
          format: uri
        logo_url:
          type: string
          format: uri
        email:
          type: string
          format: email
        secondary_emails:
          type: array
          items:
            type: string
        phone:
          type: string
        legal_name:
          type: string
        vat_id:
          type: string
    CustomerMeasurementMapping:
      type: object
      properties:
        label:
          type: string
          description: Label key to map.
        value:
          type: string
          description: Label value to map to.
    CustomerBillingSettingsInputArgs:
      type: object
      properties:
        payment_gateway_type:
          type: string
        invoice_grace_period_days:
          type: integer
        auto_charge:
          type: boolean
    AdhocCharge:
      type: object
      properties:
        uuid:
          type: string
        customer_name:
          type: string
        amount:
          type: number
          description: Amount of the adhoc charge.
        description:
          type: string
          description: Description of the charge.
        created_at:
          type: string
          format: date-time
    ContactInfoInputArgs:
      type: object
      properties:
        address_line_1:
          type: string
        address_line_2:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        zipcode:
          type: string
        url:
          type: string
          format: uri
        logo_url:
          type: string
          format: uri
        email:
          type: string
          format: email
        secondary_emails:
          type: array
          items:
            type: string
        phone:
          type: string
        legal_name:
          type: string
        vat_id:
          type: string
    Customer:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: Unique name identifier for the customer.
        display_name:
          type: string
          description: Human-readable display name.
        contact_info:
          $ref: '#/components/schemas/ContactInfo'
        created_at:
          type: string
          format: date-time
          description: When the customer was created.
        measurement_mappings:
          type: array
          items:
            type: object
          description: Measurement label mappings for the customer.
        tags:
          type: array
          items:
            type: object
          description: Tags associated with the customer.
    CustomerMeasurementMappingInputArgs:
      type: object
      properties:
        label:
          type: string
        value:
          type: string
    CreateCustomerArgs:
      type: object
      properties:
        name:
          type: string
          description: Unique name identifier for the customer.
        display_name:
          type: string
          description: Human-readable display name.
        vendor_id:
          type: string
          description: External vendor identifier for the customer.
        contact_info:
          $ref: '#/components/schemas/ContactInfoInputArgs'
        price_plan_name:
          type: string
          description: Name of the price plan to subscribe the customer to.
        price_plan_tag:
          type: string
          description: Tag for the price plan.
        measurement_mappings:
          type: array
          items:
            $ref: '#/components/schemas/CustomerMeasurementMappingInputArgs'
        customer_metadata:
          type: array
          items:
            type: object
        tags:
          type: array
          items:
            type: string
        autogenerate_payment_gateway_customer:
          type: boolean
          description: Automatically create a customer in the connected payment gateway.
        autogenerate_accounting_customer:
          type: boolean
          description: Automatically create a customer in the connected accounting system.
        created_at:
          type: string
          format: date-time
    CreateAdhocChargeArgs:
      type: object
      properties:
        amount:
          type: number
          description: Amount to charge.
        description:
          type: string
          description: Description of the adhoc charge.
    BillingSettings:
      type: object
      properties:
        payment_gateway_type:
          type: string
          description: Type of payment gateway (e.g., stripe).
        invoice_grace_period_days:
          type: integer
          description: Number of days grace period before invoice payment is due.
        auto_charge:
          type: boolean
          description: Whether to automatically charge customers on invoice.
        billing_period_anchor:
          type: string
          description: Anchor date for billing periods.
    DiscountInputArgs:
      type: object
      properties:
        discount_type:
          type: string
          enum:
          - PERCENT
          - AMOUNT
          description: Type of discount.
        amount:
          type: number
          description: Discount amount or percentage.
        scope:
          type: string
          enum:
          - SUBSCRIPTION
          - COMPONENT
          - ADD_ON
          description: What the discount applies to.
        billing_cycle_duration:
          type: integer
          description: How many billing cycles the discount lasts.
        billing_cycle_start_offset:
          type: integer
          description: Offset from subscription start to begin applying discount.
        metered_component_uuid:
          type: string
          description: UUID of the metered component to discount.
        add_on_name:
          type: string
          description: Name of the add-on to discount.
        labels:
          type: object
          description: Label filters for the discount.
  securitySchemes:
    BearerApiKeyAuth:
      type: http
      scheme: bearer
      description: API key passed as a Bearer token in the Authorization header.