| openapi: 3.0.0 |
| info: |
| title: OpenMeter and Konnect Metering & Billing API |
| version: 0.0.1 |
| description: |- |
| OpenMeter is a cloud native usage metering and billing service. The API allows |
| you to ingest events, query meter usage, and manage resources. |
| servers: |
| - url: http://localhost:{port}/api/v3 |
| description: Local |
| variables: |
| port: |
| default: '8888' |
| - url: https://{region}.api.konghq.com/v3 |
| description: Production region |
| variables: |
| region: |
| default: us |
| enum: |
| - us |
| - eu |
| - au |
| - me |
| - in |
| - url: https://openmeter.cloud/api/v3 |
| description: OpenMeter Cloud |
| variables: {} |
| tags: |
| - name: OpenMeter Governance |
| description: Governance evaluation of customers to check their feature access. |
| - name: OpenMeter Defaults |
| description: Organization-level default configuration. |
| - name: OpenMeter Product Catalog |
| description: Product catalog manages plans, add-ons, and their associations for subscription-based billing. |
| - name: OpenMeter LLM Cost |
| description: LLM cost database providing normalized pricing data for language models across providers. Prices are synced from multiple external sources and auto-confirmed when they agree. |
| - name: OpenMeter Features |
| description: Features represent product capabilities backed by meters, with optional per-unit cost configuration. |
| - name: OpenMeter Tax |
| description: Tax codes are used to calculate taxes for customers. |
| - name: OpenMeter Currencies |
| description: Currencies and cost bases for customers. |
| - name: OpenMeter Billing Settings |
| description: Billing settings manages the billing profiles and invoices for customers. |
| - name: OpenMeter Apps |
| description: Apps enable you to extend and customize billing and usage workflows by integrating with external systems and services. Apps can automate and enhance your billing ecosystem by supporting capabilities such as synchronizing usage data with third-party platforms, calculating taxes, generating and delivering invoices, handling payment collection, and other billing-related tasks. |
| - name: OpenMeter Entitlements |
| description: Entitlements are used to control access to features for customers. |
| - name: OpenMeter Subscriptions |
| description: Subscriptions are used to track usage of your product or service. Subscriptions can be individuals or organizations that can subscribe to plans and have access to features. |
| - name: OpenMeter Customers |
| description: Customers are used to track usage of your product or service. Customers can be individuals or organizations that can subscribe to plans and have access to features. |
| - name: Metering Events |
| description: Metering events are used to track usage of your product or service. Events are processed asynchronously by the meters, so they may not be immediately available for querying. |
| - name: Meters |
| description: Meters specify how to aggregate events for billing and analytics purposes. Meters can be configured with multiple aggregation methods and groupings. Multiple meters can be created for the same event type, enabling flexible metering scenarios. |
| paths: |
| /openmeter/addons: |
| get: |
| operationId: list-addons |
| summary: List add-ons |
| description: List all add-ons. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort add-ons returned in the response. Supported sort attributes are: |
| |
| - `id` |
| - `key` |
| - `name` |
| - `created_at` (default) |
| - `updated_at` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: Filter add-ons returned in the response. |
| schema: |
| $ref: '#/components/schemas/ListAddonsParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/AddonPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| post: |
| operationId: create-addon |
| summary: Create add-on |
| description: Create a new add-on. |
| responses: |
| '201': |
| description: Addon created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Addon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateAddonRequest' |
| x-unstable: true |
| /openmeter/addons/{addonId}: |
| put: |
| operationId: update-addon |
| summary: Update add-on |
| description: Update an add-on by id. |
| parameters: |
| - name: addonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Addon upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Addon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertAddonRequest' |
| x-unstable: true |
| get: |
| operationId: get-addon |
| summary: Get add-on |
| description: Get add-on by id. |
| parameters: |
| - name: addonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Addon response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Addon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| delete: |
| operationId: delete-addon |
| summary: Soft delete add-on |
| description: Soft delete add-on by id. |
| parameters: |
| - name: addonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/addons/{addonId}/archive: |
| post: |
| operationId: archive-addon |
| summary: Archive add-on version |
| description: Archive an add-on version. |
| parameters: |
| - name: addonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Addon updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Addon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/addons/{addonId}/publish: |
| post: |
| operationId: publish-addon |
| summary: Publish add-on version |
| description: Publish an add-on version. |
| parameters: |
| - name: addonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Addon updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Addon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/app-catalog: |
| get: |
| operationId: list-app-catalog |
| summary: List app catalog |
| description: List available apps. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/AppCatalogItemPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Apps |
| /openmeter/app-catalog/install: |
| post: |
| operationId: install-app |
| summary: Install app from the catalog |
| description: Install an app from the catalog. |
| responses: |
| '201': |
| description: InstallAppResponse created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInstallAppResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Apps |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInstallAppRequest' |
| /openmeter/app-catalog/{appType}: |
| get: |
| operationId: get-app-catalog-item |
| summary: Get app catalog item by type |
| description: Get an app catalog item by type. |
| parameters: |
| - name: appType |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/BillingAppType' |
| responses: |
| '200': |
| description: AppCatalogItem response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingAppCatalogItem' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Apps |
| /openmeter/apps: |
| get: |
| operationId: list-apps |
| summary: List apps |
| description: List installed apps. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/AppPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Apps |
| /openmeter/apps/{appId}: |
| get: |
| operationId: get-app |
| summary: Get app |
| description: Get an installed app. |
| parameters: |
| - name: appId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: App response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingApp' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Apps |
| /openmeter/billing/invoices: |
| get: |
| operationId: list-invoices |
| summary: List billing invoices |
| description: |- |
| List billing invoices. |
| |
| Returns a page of invoices. Gathering invoices are never included. Use `filter` |
| to narrow by status, customer, dates, or service period start. Use `sort` to |
| control ordering. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort invoices returned in the response. Supported sort attributes: |
| |
| - `issued_at` |
| - `created_at` (default) |
| - `service_period_start` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter invoices returned in the response. |
| |
| Examples: |
|
|
| - `filter[status][oeq]=draft,issued` |
| - `filter[customer_id]=01KPDB8K...` |
| - `filter[issued_at][gte]=2024-01-01T00:00:00Z` |
| schema: |
| $ref: '#/components/schemas/ListInvoicesParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/InvoicePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/billing/invoices/{invoiceId}: |
| get: |
| operationId: get-invoice |
| summary: Get a billing invoice |
| description: |- |
| Get a billing invoice by ID. |
| |
| Returns the full invoice resource including line items, status details, totals, |
| and workflow configuration snapshot. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Invoice response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| put: |
| operationId: update-invoice |
| summary: Update a billing invoice |
| description: |- |
| Update a billing invoice. |
| |
| Only the mutable fields of the invoice can be edited: description, labels, |
| supplier, customer, workflow settings, and top-level lines. Top-level lines are |
| matched by `id`; lines without an `id` are created, and existing lines omitted |
| from `lines` are deleted. Detailed (child) lines are always computed and cannot |
| be edited directly. Only invoices in draft status can be updated. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Invoice updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpdateInvoiceRequest' |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| delete: |
| operationId: delete-invoice |
| summary: Delete a billing invoice |
| description: |- |
| Delete a billing invoice. |
| |
| Only standard invoices in draft status can be deleted. Deleting an invoice will |
| also delete all associated line items and workflow configuration. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/billing/invoices/{invoiceId}/advance: |
| post: |
| operationId: advance-invoice |
| summary: Advance billing invoice's next status |
| description: |- |
| Advance a billing invoice. |
| |
| Advances the invoice to the next workflow state. The next state is determined by |
| the invoice's current status and workflow configuration. Only invoices in draft |
| or issued status can be advanced. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The updated invoice after advancing to the next state. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/billing/invoices/{invoiceId}/approve: |
| post: |
| operationId: approve-invoice |
| summary: Send the invoice to the customer |
| description: |- |
| Approve a billing invoice. |
| |
| This call instantly sends the invoice to the customer using the configured |
| billing profile app. |
|
|
| This call is valid in two invoice statuses: |
|
|
| - draft: the invoice will be sent to the customer, the invoice state becomes |
| issued |
| - manual_approval_needed: the invoice will be sent to the customer, the invoice |
| state becomes issued |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The updated invoice after sending to the customer. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/billing/invoices/{invoiceId}/retry: |
| post: |
| operationId: retry-invoice |
| summary: Retry advancing the invoice after a failed attempt |
| description: |- |
| Retry sending a billing invoice. |
| |
| Retry advancing the invoice after a failed attempt. |
|
|
| The action can be called when the invoice's statusDetails' actions field contain |
| the "retry" action. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The updated invoice after retrying the action. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/billing/invoices/{invoiceId}/snapshot-quantities: |
| post: |
| operationId: snapshot-quantities-invoice |
| summary: Snapshot quantities for usage based line items |
| description: |- |
| Snapshot quantities for usage-based line items. |
| |
| This call will snapshot the quantities for all usage based line items in the |
| invoice. |
|
|
| This call is only valid in draft.waiting_for_collection status, where the |
| collection period can be skipped using this action. |
| parameters: |
| - name: invoiceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: |- |
| The updated invoice with the snapshot quantities for usage based line |
| items. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingInvoice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/currencies: |
| get: |
| operationId: list-currencies |
| summary: List currencies |
| description: List currencies supported by the billing system. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort currencies returned in the response. Supported sort attributes are: |
| |
| - `code` (default) |
| - `name` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter currencies returned in the response. |
| |
| To filter currencies by type add the following query param: filter[type]=custom |
| schema: |
| $ref: '#/components/schemas/ListCurrenciesParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CurrencyPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Currencies |
| x-internal: true |
| x-unstable: true |
| /openmeter/currencies/custom: |
| post: |
| operationId: create-custom-currency |
| summary: Create custom currency |
| description: |- |
| Create a custom currency. This operation allows defining your own custom |
| currency for billing purposes. |
| responses: |
| '201': |
| description: CurrencyCustom created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCurrencyCustom' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Currencies |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateCurrencyCustomRequest' |
| x-internal: true |
| x-unstable: true |
| /openmeter/currencies/custom/{currencyId}/cost-bases: |
| get: |
| operationId: list-cost-bases |
| summary: List cost bases |
| description: |- |
| List cost bases for a currency. For custom currencies, there can be multiple |
| cost bases with different `effective_from` dates. |
| parameters: |
| - name: currencyId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter cost bases returned in the response. |
| |
| To filter cost bases by fiat currency code add the following query param: |
| filter[fiat_code]=USD |
| schema: |
| $ref: '#/components/schemas/ListCostBasesParamsFilter' |
| style: deepObject |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CostBasisPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Currencies |
| x-internal: true |
| x-unstable: true |
| post: |
| operationId: create-cost-basis |
| summary: Create cost basis |
| description: Create a cost basis for a currency. |
| parameters: |
| - name: currencyId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: CostBasis created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCostBasis' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Currencies |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateCostBasisRequest' |
| x-internal: true |
| x-unstable: true |
| /openmeter/customers: |
| post: |
| operationId: create-customer |
| summary: Create customer |
| responses: |
| '201': |
| description: Customer created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomer' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateCustomerRequest' |
| get: |
| operationId: list-customers |
| summary: List customers |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort customers returned in the response. Supported sort attributes are: |
| |
| - `id` |
| - `name` (default) |
| - `created_at` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter customers returned in the response. |
| |
| To filter customers by key add the following query param: filter[key]=my-db-id |
| schema: |
| $ref: '#/components/schemas/ListCustomersParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CustomerPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Customers |
| /openmeter/customers/{customerId}: |
| get: |
| operationId: get-customer |
| summary: Get customer |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Customer response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomer' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| put: |
| operationId: upsert-customer |
| summary: Upsert customer |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Customer upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomer' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertCustomerRequest' |
| delete: |
| operationId: delete-customer |
| summary: Delete customer |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| /openmeter/customers/{customerId}/billing: |
| get: |
| operationId: get-customer-billing |
| summary: Get customer billing data |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: CustomerBillingData response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomerData' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| put: |
| operationId: update-customer-billing |
| summary: Update customer billing data |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: CustomerBillingData upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomerData' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertCustomerBillingDataRequest' |
| /openmeter/customers/{customerId}/billing/app-data: |
| put: |
| operationId: update-customer-billing-app-data |
| summary: Update customer billing app data |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: AppCustomerData upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingAppCustomerData' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertAppCustomerDataRequest' |
| /openmeter/customers/{customerId}/billing/stripe/checkout-sessions: |
| post: |
| operationId: create-customer-stripe-checkout-session |
| summary: Create Stripe Checkout Session |
| description: |- |
| Create a [Stripe Checkout Session](https://docs.stripe.com/payments/checkout) |
| for the customer. |
| |
| Creates a Checkout Session for collecting payment method information from |
| customers. The session operates in "setup" mode, which collects payment details |
| without charging the customer immediately. The collected payment method can be |
| used for future subscription billing. |
|
|
| For hosted checkout sessions, redirect customers to the returned URL. For |
| embedded sessions, use the client_secret to initialize Stripe.js in your |
| application. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: CreateStripeCheckoutSessionResult created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionResult' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomerStripeCreateCheckoutSessionRequest' |
| /openmeter/customers/{customerId}/billing/stripe/portal-sessions: |
| post: |
| operationId: create-customer-stripe-portal-session |
| summary: Create Stripe customer portal session |
| description: |- |
| Create Stripe Customer Portal Session. |
| |
| Useful to redirect the customer to the Stripe Customer Portal to manage their |
| payment methods, change their billing address and access their invoice history. |
| Only returns URL if the customer billing profile is linked to a stripe app and |
| customer. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: CreateStripeCustomerPortalSessionResult created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingAppStripeCreateCustomerPortalSessionResult' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCustomerStripeCreateCustomerPortalSessionRequest' |
| /openmeter/customers/{customerId}/charges: |
| get: |
| operationId: list-customer-charges |
| summary: List customer charges |
| description: |- |
| List customer charges. |
| |
| Returns the customer's charges that are represented as either flat fee or |
| usage-based charges. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort charges returned in the response. |
| |
| Supported sort attributes are: |
|
|
| - `id` |
| - `created_at` |
| - `service_period.from` |
| - `billing_period.from` |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter charges. |
| |
| To filter charges by status add the following query param: |
| `filter[status][oeq]=created,active` |
| schema: |
| $ref: '#/components/schemas/ListChargesParamsFilter' |
| style: deepObject |
| - name: expand |
| in: query |
| required: false |
| description: |- |
| Expand full objects for referenced entities. |
| |
| Supported values are: |
|
|
| - `real_time_usage`: Expand the charge's real-time usage. |
| schema: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingChargesExpand' |
| style: form |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ChargePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| x-unstable: true |
| post: |
| operationId: create-customer-charges |
| summary: Create customer charge |
| description: Create customer charge. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: Charge created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCharge' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateChargeRequest' |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/adjustments: |
| post: |
| operationId: create-credit-adjustment |
| summary: Create a credit adjustment |
| description: |- |
| A credit adjustment can be used to make manual adjustments to a customer's |
| credit balance. |
| |
| Supported use-cases: |
|
|
| - Usage correction |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: CreditAdjustment created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditAdjustment' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateCreditAdjustmentRequest' |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/balance: |
| get: |
| operationId: get-customer-credit-balance |
| summary: Get a customer's credit balance |
| description: Get a credit balance. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: timestamp |
| in: query |
| required: false |
| description: |- |
| Return the credit balance as of this timestamp. |
| |
| Defaults to the current time. |
| schema: |
| $ref: '#/components/schemas/DateTime' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| schema: |
| $ref: '#/components/schemas/GetCreditBalanceParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: CreditBalances response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditBalances' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/grants: |
| post: |
| operationId: create-credit-grant |
| summary: Create a new credit grant |
| description: |- |
| Create a new credit grant. A credit grant represents an allocation of prepaid |
| credits to a customer. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: CreditGrant created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditGrant' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateCreditGrantRequest' |
| x-unstable: true |
| get: |
| operationId: list-credit-grants |
| summary: List credit grants |
| description: List credit grants. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: filter |
| in: query |
| required: false |
| description: Filter credit grants returned in the response. |
| schema: |
| $ref: '#/components/schemas/ListCreditGrantsParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreditGrantPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/grants/{creditGrantId}: |
| get: |
| operationId: get-credit-grant |
| summary: Get a credit grant |
| description: Get a credit grant. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: creditGrantId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: CreditGrant response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditGrant' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/grants/{creditGrantId}/settlement/external: |
| post: |
| operationId: update-credit-grant-external-settlement |
| summary: Update credit grant external settlement status |
| description: |- |
| Update the payment settlement status of an externally funded credit grant. |
| |
| Use this endpoint to synchronize the payment state of an external payment with |
| the system so that revenue recognition and credit availability work as expected. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: creditGrantId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: CreditGrant updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditGrant' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpdateCreditGrantExternalSettlementRequest' |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/grants/{creditGrantId}/void: |
| post: |
| operationId: void-credit-grant |
| summary: Void credit grant |
| description: |- |
| Void a credit grant, forfeiting the remaining unused balance. |
| |
| Voiding is a forward-looking, irreversible operation. Credits already consumed |
| by usage remain unaffected — only the remaining balance is forfeited. The grant |
| reads as `voided` status afterwards. Payment state is not adjusted when |
| `payment_adjustment` is `none`, so invoice-backed or externally collected |
| payments may still collect the original amount. Only `active` grants can be |
| voided; voiding a pending, expired, or fully consumed grant returns a conflict. |
| Retrying a successful void is an idempotent success. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: creditGrantId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: CreditGrant updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingCreditGrant' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Customers |
| requestBody: |
| required: false |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/VoidCreditGrantRequest' |
| x-unstable: true |
| /openmeter/customers/{customerId}/credits/transactions: |
| get: |
| operationId: list-credit-transactions |
| summary: List credit transactions |
| description: |- |
| List credit transactions for a customer. |
| |
| Returns an immutable, chronological record of credit movements: funded credits |
| and consumed credits. Transactions are returned in reverse chronological order |
| by default. |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - $ref: '#/components/parameters/CursorPaginationQuery' |
| - name: filter |
| in: query |
| required: false |
| description: Filter credit transactions returned in the response. |
| schema: |
| $ref: '#/components/schemas/ListCreditTransactionsParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Cursor paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreditTransactionPaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Customers |
| x-unstable: true |
| /openmeter/customers/{customerId}/entitlement-access: |
| get: |
| operationId: list-customer-entitlement-access |
| summary: List customer entitlement access |
| parameters: |
| - name: customerId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: List the customer's active features and their access. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ListCustomerEntitlementAccessResponseData' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Entitlements |
| /openmeter/defaults/tax-codes: |
| get: |
| operationId: get-organization-default-tax-codes |
| summary: Get organization default tax codes |
| responses: |
| '200': |
| description: OrganizationDefaultTaxCodes response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/OrganizationDefaultTaxCodes' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Defaults |
| x-unstable: true |
| put: |
| operationId: update-organization-default-tax-codes |
| summary: Update organization default tax codes |
| responses: |
| '200': |
| description: OrganizationDefaultTaxCodes upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/OrganizationDefaultTaxCodes' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Defaults |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpdateOrganizationDefaultTaxCodesRequest' |
| x-unstable: true |
| /openmeter/events: |
| get: |
| operationId: list-metering-events |
| summary: List metering events |
| description: List ingested events. |
| parameters: |
| - $ref: '#/components/parameters/CursorPaginationQuery' |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter events returned in the response. |
| |
| To filter events by subject add the following query param: |
| filter[subject][eq]=customer-1 |
| schema: |
| $ref: '#/components/schemas/ListEventsParamsFilter' |
| style: deepObject |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort events returned in the response. Supported sort attributes are: |
| |
| - `time` (default) |
| - `ingested_at` |
| - `stored_at` |
|
|
| When omitted, events are sorted by `time desc` (most recent first). When a sort |
| field is provided without a suffix, it sorts descending. Append the `asc` suffix |
| to sort ascending, or the `desc` suffix to sort descending. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| responses: |
| '200': |
| description: Cursor paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/IngestedEventPaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - Metering Events |
| x-unstable: true |
| post: |
| operationId: ingest-metering-events |
| description: Ingests an event or batch of events following the CloudEvents specification. |
| summary: Ingest metering events |
| responses: |
| '202': |
| description: The events have been ingested and are being processed asynchronously. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - Metering Events |
| requestBody: |
| required: true |
| content: |
| application/cloudevents+json: |
| schema: |
| $ref: '#/components/schemas/MeteringEvent' |
| application/cloudevents-batch+json: |
| schema: |
| type: array |
| items: |
| $ref: '#/components/schemas/MeteringEvent' |
| application/json: |
| schema: |
| anyOf: |
| - $ref: '#/components/schemas/MeteringEvent' |
| - type: array |
| items: |
| $ref: '#/components/schemas/MeteringEvent' |
| /openmeter/features: |
| get: |
| operationId: list-features |
| summary: List features |
| description: List all features. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort features returned in the response. Supported sort attributes are: |
| |
| - `key` |
| - `name` |
| - `created_at` (default) |
| - `updated_at` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter features returned in the response. |
| |
| To filter features by meter_id add the following query param: |
| filter[meter_id][oeq]=<id> |
| schema: |
| $ref: '#/components/schemas/ListFeatureParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/FeaturePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Features |
| x-unstable: true |
| post: |
| operationId: create-feature |
| summary: Create feature |
| description: Create a feature. |
| responses: |
| '201': |
| description: Feature created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Feature' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Features |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateFeatureRequest' |
| x-unstable: true |
| /openmeter/features/{featureId}: |
| get: |
| operationId: get-feature |
| summary: Get feature |
| description: Get a feature by id. |
| parameters: |
| - name: featureId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Feature response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Feature' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Features |
| x-unstable: true |
| patch: |
| operationId: update-feature |
| summary: Update feature |
| description: Update a feature by id. Currently only the unit_cost field can be updated. |
| parameters: |
| - name: featureId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Feature updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Feature' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Features |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpdateFeatureRequest' |
| x-unstable: true |
| delete: |
| operationId: delete-feature |
| summary: Delete feature |
| description: Delete a feature by id. |
| parameters: |
| - name: featureId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Features |
| x-unstable: true |
| /openmeter/features/{featureId}/cost/query: |
| post: |
| operationId: query-feature-cost |
| summary: Query feature cost |
| description: Query the cost of a feature. |
| parameters: |
| - name: featureId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The request has succeeded. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/FeatureCostQueryResult' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Features |
| requestBody: |
| required: false |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MeterQueryRequest' |
| x-unstable: true |
| /openmeter/governance/query: |
| post: |
| operationId: query-governance-access |
| summary: Query governance access |
| description: |- |
| Query feature access for a list of customers. |
| |
| The endpoint resolves each provided identifier to a customer and returns the |
| access status for the requested features, plus optional credit balance |
| availability. |
|
|
| _Designed to be called on a fixed refresh interval and the query response is |
| intended to be cached._ |
| parameters: |
| - $ref: '#/components/parameters/CursorPaginationQuery' |
| responses: |
| '200': |
| description: The request has succeeded. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/GovernanceQueryResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Governance |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/GovernanceQueryRequest' |
| x-private: true |
| x-internal: true |
| x-unstable: true |
| /openmeter/llm-cost/overrides: |
| get: |
| operationId: list-llm-cost-overrides |
| summary: List LLM cost overrides |
| description: List per-namespace price overrides. |
| parameters: |
| - name: filter |
| in: query |
| required: false |
| schema: |
| $ref: '#/components/schemas/ListLLMCostPricesParamsFilter' |
| style: deepObject |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PricePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter LLM Cost |
| x-unstable: true |
| post: |
| operationId: create-llm-cost-override |
| summary: Create LLM cost override |
| description: Create a per-namespace price override. |
| responses: |
| '201': |
| description: Price created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/LLMCostPrice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter LLM Cost |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/LLMCostOverrideCreate' |
| x-unstable: true |
| /openmeter/llm-cost/overrides/{priceId}: |
| delete: |
| operationId: delete-llm-cost-override |
| summary: Delete LLM cost override |
| description: Delete a per-namespace price override. |
| parameters: |
| - name: priceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter LLM Cost |
| x-unstable: true |
| /openmeter/llm-cost/prices: |
| get: |
| operationId: list-llm-cost-prices |
| summary: List LLM cost prices |
| description: List global LLM cost prices. Returns prices with overrides applied if any. |
| parameters: |
| - name: filter |
| in: query |
| required: false |
| description: Filter prices. |
| schema: |
| $ref: '#/components/schemas/ListLLMCostPricesParamsFilter' |
| style: deepObject |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort prices returned in the response. Supported sort attributes are: |
| |
| - `id` |
| - `provider.id` |
| - `model.id` (default) |
| - `effective_from` |
| - `effective_to` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PricePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter LLM Cost |
| x-unstable: true |
| /openmeter/llm-cost/prices/{priceId}: |
| get: |
| operationId: get-llm-cost-price |
| summary: Get LLM cost price |
| description: |- |
| Get a specific LLM cost price by ID. Returns the price with overrides applied if |
| any. |
| parameters: |
| - name: priceId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The request has succeeded. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/LLMCostPrice' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter LLM Cost |
| x-unstable: true |
| /openmeter/meters: |
| post: |
| operationId: create-meter |
| summary: Create meter |
| description: Create a meter. |
| responses: |
| '201': |
| description: Meter created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Meter' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - Meters |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateMeterRequest' |
| get: |
| operationId: list-meters |
| summary: List meters |
| description: List meters. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort meters returned in the response. Supported sort attributes are: |
| |
| - `key` |
| - `name` |
| - `aggregation` |
| - `created_at` (default) |
| - `updated_at` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: |- |
| Filter meters returned in the response. |
| |
| To filter meters by key add the following query param: filter[key]=my-meter-key |
| schema: |
| $ref: '#/components/schemas/ListMetersParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MeterPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - Meters |
| /openmeter/meters/{meterId}: |
| get: |
| operationId: get-meter |
| summary: Get meter |
| description: Get a meter by ID. |
| parameters: |
| - name: meterId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Meter response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Meter' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - Meters |
| put: |
| operationId: update-meter |
| summary: Update meter |
| description: Update a meter. |
| parameters: |
| - name: meterId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Meter updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/Meter' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - Meters |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpdateMeterRequest' |
| x-unstable: true |
| delete: |
| operationId: delete-meter |
| summary: Delete meter |
| description: Delete a meter. |
| parameters: |
| - name: meterId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - Meters |
| /openmeter/meters/{meterId}/query: |
| post: |
| operationId: query-meter |
| parameters: |
| - name: meterId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| description: |- |
| Query a meter for usage. |
| |
| Set `Accept: application/json` (the default) to get a structured JSON response. |
| Set `Accept: text/csv` to download the same data as a CSV file suitable for |
| spreadsheets. The CSV columns, in order, are: |
|
|
| `from, to, [subject,] [customer_id, customer_key, customer_name,] <dimensions...>, value` |
|
|
| The `subject` column is emitted only when `subject` is in the query's |
| `group_by_dimensions`. The three `customer_*` columns are emitted together only |
| when `customer_id` is in the query's `group_by_dimensions`. |
| summary: Query meter |
| responses: |
| '200': |
| description: The request has succeeded. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MeterQueryResult' |
| text/csv: |
| schema: |
| type: string |
| examples: |
| Grouped by customer and dimensions: |
| summary: Grouped by customer and dimensions |
| value: |- |
| from,to,customer_id,customer_key,customer_name,model,type,value |
| 2023-01-01T00:00:00Z,2023-01-01T00:01:00Z,01G65Z755AFWAKHE12NY0CQ9FH,acme-inc,Acme Inc.,gpt-4-turbo,input,12 |
| 2023-01-01T00:01:00Z,2023-01-01T00:02:00Z,01G65Z755AFWAKHE12NY0CQ9FH,acme-inc,Acme Inc.,gpt-4-turbo,input,20 |
| 2023-01-01T00:02:00Z,2023-01-01T00:03:00Z,01G65Z755B3YZ1KRA9W8V7PS2D,globex,Globex Corp,gpt-4-turbo,output,4 |
| No group-by dimensions: |
| summary: No group-by dimensions |
| value: |- |
| from,to,value |
| 2023-01-01T00:00:00Z,2023-01-01T00:01:00Z,12 |
| 2023-01-01T00:01:00Z,2023-01-01T00:02:00Z,20 |
| 2023-01-01T00:02:00Z,2023-01-01T00:03:00Z,4 |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| x-unstable: true |
| tags: |
| - Meters |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/MeterQueryRequest' |
| /openmeter/plans: |
| get: |
| operationId: list-plans |
| summary: List plans |
| description: List all plans. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort plans returned in the response. Supported sort attributes are: |
| |
| - `id` |
| - `key` |
| - `version` |
| - `created_at` (default) |
| - `updated_at` |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: Filter plans returned in the response. |
| schema: |
| $ref: '#/components/schemas/ListPlansParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PlanPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| post: |
| operationId: create-plan |
| summary: Create plan |
| description: Create a new plan. |
| responses: |
| '201': |
| description: Plan created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingPlan' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreatePlanRequest' |
| x-unstable: true |
| /openmeter/plans/{planId}: |
| put: |
| operationId: update-plan |
| summary: Update plan |
| description: Update a plan by id. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Plan upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingPlan' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertPlanRequest' |
| x-unstable: true |
| get: |
| operationId: get-plan |
| summary: Get plan |
| description: Get a plan by id. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Plan response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingPlan' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| delete: |
| operationId: delete-plan |
| summary: Delete plan |
| description: Delete a plan by id. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/plans/{planId}/addons: |
| get: |
| operationId: list-plan-addons |
| summary: List add-ons for plan |
| description: List add-ons associated with a plan. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PlanAddonPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| post: |
| operationId: create-plan-addon |
| summary: Add add-on to plan |
| description: Add an add-on to a plan. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: PlanAddon created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PlanAddon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreatePlanAddonRequest' |
| x-unstable: true |
| /openmeter/plans/{planId}/addons/{planAddonId}: |
| get: |
| operationId: get-plan-addon |
| summary: Get add-on association for plan |
| description: Get an add-on association for a plan. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: planAddonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: PlanAddon response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PlanAddon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| put: |
| operationId: update-plan-addon |
| summary: Update add-on association for plan |
| description: Update an add-on association for a plan. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: planAddonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: PlanAddon upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/PlanAddon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertPlanAddonRequest' |
| x-unstable: true |
| delete: |
| operationId: delete-plan-addon |
| summary: Remove add-on from plan |
| description: Remove an add-on from a plan. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: planAddonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/plans/{planId}/archive: |
| post: |
| operationId: archive-plan |
| summary: Archive plan version |
| description: Archive a plan version. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Plan updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingPlan' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/plans/{planId}/publish: |
| post: |
| operationId: publish-plan |
| summary: Publish plan version |
| description: Publish a plan version. |
| parameters: |
| - name: planId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Plan updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingPlan' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Product Catalog |
| x-unstable: true |
| /openmeter/profiles: |
| get: |
| operationId: list-billing-profiles |
| summary: List billing profiles |
| description: List billing profiles. |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingProfilePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Billing Settings |
| post: |
| operationId: create-billing-profile |
| summary: Create a new billing profile |
| description: |- |
| Create a new billing profile. |
| |
| Billing profiles contain the settings for billing and controls invoice |
| generation. An organization can have multiple billing profiles defined. A |
| billing profile is linked to a specific app. This association is established |
| during the billing profile's creation and remains immutable. |
| responses: |
| '201': |
| description: BillingProfile created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingProfile' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Billing Settings |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateBillingProfileRequest' |
| /openmeter/profiles/{id}: |
| get: |
| operationId: get-billing-profile |
| summary: Get a billing profile |
| description: Get a billing profile. |
| parameters: |
| - name: id |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: BillingProfile response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingProfile' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| put: |
| operationId: update-billing-profile |
| summary: Update a billing profile |
| description: Update a billing profile. |
| parameters: |
| - name: id |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: BillingProfile updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingProfile' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertBillingProfileRequest' |
| delete: |
| operationId: delete-billing-profile |
| summary: Delete a billing profile |
| description: |- |
| Delete a billing profile. |
| |
| Only such billing profiles can be deleted that are: |
|
|
| - not the default profile |
| - not pinned to any customer using customer overrides |
| - only have finalized invoices |
| parameters: |
| - name: id |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Billing Settings |
| /openmeter/subscriptions: |
| post: |
| operationId: create-subscription |
| summary: Create subscription |
| responses: |
| '201': |
| description: Subscription created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscription' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Subscriptions |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscriptionCreate' |
| get: |
| operationId: list-subscriptions |
| summary: List subscriptions |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort subscriptions returned in the response. Supported sort attributes are: |
| |
| - `id` |
| - `active_from` (default) |
| - `active_to` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| - name: filter |
| in: query |
| required: false |
| description: Filter subscriptions. |
| schema: |
| $ref: '#/components/schemas/ListSubscriptionsParamsFilter' |
| style: deepObject |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/SubscriptionPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Subscriptions |
| /openmeter/subscriptions/{subscriptionId}: |
| get: |
| operationId: get-subscription |
| summary: Get subscription |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Subscription response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscription' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Subscriptions |
| /openmeter/subscriptions/{subscriptionId}/addons: |
| post: |
| operationId: create-subscription-addon |
| summary: Create a new subscription add-on |
| description: Add add-on to a subscription. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '201': |
| description: SubscriptionAddon created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/SubscriptionAddon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Subscriptions |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateSubscriptionAddonRequest' |
| x-internal: true |
| x-unstable: true |
| get: |
| operationId: list-subscription-addons |
| summary: List subscription addons |
| description: List the add-ons of a subscription. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: sort |
| in: query |
| required: false |
| description: |- |
| Sort subscription addons returned in the response. Supported sort attributes |
| are: |
| |
| - `id` |
| - `created_at` (default) |
| - `updated_at` |
|
|
| The `asc` suffix is optional as the default sort order is ascending. The `desc` |
| suffix is used to specify a descending order. |
| schema: |
| $ref: '#/components/schemas/SortQuery' |
| explode: false |
| style: form |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/SubscriptionAddonPagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Subscriptions |
| x-unstable: true |
| /openmeter/subscriptions/{subscriptionId}/addons/{subscriptionAddonId}: |
| get: |
| operationId: get-subscription-addon |
| summary: Get add-on association for subscription |
| description: Get an add-on association for a subscription. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| - name: subscriptionAddonId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: SubscriptionAddon response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/SubscriptionAddon' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Subscriptions |
| x-unstable: true |
| /openmeter/subscriptions/{subscriptionId}/cancel: |
| post: |
| operationId: cancel-subscription |
| summary: Cancel subscription |
| description: |- |
| Cancels the subscription. Will result in a scheduling conflict if there are |
| other subscriptions scheduled to start after the cancelation time. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Subscription updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscription' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Subscriptions |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscriptionCancel' |
| /openmeter/subscriptions/{subscriptionId}/change: |
| post: |
| operationId: change-subscription |
| summary: Change subscription |
| description: |- |
| Closes a running subscription and starts a new one according to the |
| specification. Can be used for upgrades, downgrades, and plan changes. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: The request has succeeded. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscriptionChangeResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Subscriptions |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscriptionChange' |
| /openmeter/subscriptions/{subscriptionId}/unschedule-cancelation: |
| post: |
| operationId: unschedule-cancelation |
| summary: Unschedule subscription cancelation |
| description: Unschedules the subscription cancelation. |
| parameters: |
| - name: subscriptionId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: Subscription updated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingSubscription' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '409': |
| $ref: '#/components/responses/Conflict' |
| tags: |
| - OpenMeter Subscriptions |
| /openmeter/tax-codes: |
| post: |
| operationId: create-tax-code |
| summary: Create tax code |
| responses: |
| '201': |
| description: TaxCode created response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingTaxCode' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Tax |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/CreateTaxCodeRequest' |
| x-unstable: true |
| get: |
| operationId: list-tax-codes |
| summary: List tax codes |
| parameters: |
| - $ref: '#/components/parameters/PagePaginationQuery' |
| - name: include_deleted |
| in: query |
| required: false |
| description: Include deleted tax codes in the response. |
| schema: |
| type: boolean |
| explode: false |
| style: form |
| responses: |
| '200': |
| description: Page paginated response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/TaxCodePagePaginatedResponse' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| tags: |
| - OpenMeter Tax |
| x-unstable: true |
| /openmeter/tax-codes/{taxCodeId}: |
| get: |
| operationId: get-tax-code |
| summary: Get tax code |
| parameters: |
| - name: taxCodeId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: TaxCode response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingTaxCode' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Tax |
| x-unstable: true |
| put: |
| operationId: upsert-tax-code |
| summary: Upsert tax code |
| parameters: |
| - name: taxCodeId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '200': |
| description: TaxCode upsert response. |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/BillingTaxCode' |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| '410': |
| $ref: '#/components/responses/Gone' |
| tags: |
| - OpenMeter Tax |
| requestBody: |
| required: true |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/UpsertTaxCodeRequest' |
| x-unstable: true |
| delete: |
| operationId: delete-tax-code |
| summary: Delete tax code |
| parameters: |
| - name: taxCodeId |
| in: path |
| required: true |
| schema: |
| $ref: '#/components/schemas/ULID' |
| responses: |
| '204': |
| description: Deleted response. |
| '400': |
| $ref: '#/components/responses/BadRequest' |
| '401': |
| $ref: '#/components/responses/Unauthorized' |
| '403': |
| $ref: '#/components/responses/Forbidden' |
| '404': |
| $ref: '#/components/responses/NotFound' |
| tags: |
| - OpenMeter Tax |
| x-unstable: true |
| components: |
| parameters: |
| CursorPaginationQuery: |
| name: page |
| in: query |
| required: false |
| schema: |
| $ref: '#/components/schemas/CursorPaginationQueryPage' |
| style: deepObject |
| PagePaginationQuery: |
| name: page |
| in: query |
| required: false |
| description: Determines which page of the collection to retrieve. |
| schema: |
| type: object |
| properties: |
| size: |
| type: integer |
| description: The number of items to include per page. |
| number: |
| type: integer |
| description: The page number. |
| additionalProperties: false |
| style: deepObject |
| schemas: |
| Addon: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| - version |
| - instance_type |
| - currency |
| - status |
| - rate_cards |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| A key is a semi-unique string that is used to identify the add-on. It is used to |
| reference the latest `active` version of the add-on and is unique with the |
| version number. |
| title: Key |
| version: |
| type: integer |
| minimum: 1 |
| description: Version of the add-on. Incremented when the add-on is updated. |
| title: Version |
| default: 1 |
| readOnly: true |
| instance_type: |
| allOf: |
| - $ref: '#/components/schemas/AddonInstanceType' |
| description: The InstanceType of the add-ons. Can be "single" or "multiple". |
| title: The InstanceType of the add-ons. Can be "single" or "multiple". |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: The currency code of the add-on. |
| title: Currency |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The date and time when the add-on becomes effective. When not specified, the |
| add-on is a draft. |
| title: Effective start date |
| readOnly: true |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The date and time when the add-on is no longer effective. When not specified, |
| the add-on is effective indefinitely. |
| title: Effective end date |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/AddonStatus' |
| description: |- |
| The status of the add-on. Computed based on the effective start and end dates: |
| |
| - `draft`: `effective_from` is not set. |
| - `active`: `effective_from <= now` and (`effective_to` is not set or |
| `now < effective_to`). |
| - `archived`: `effective_to <= now`. |
| title: Status |
| readOnly: true |
| rate_cards: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingRateCard' |
| description: The rate cards of the add-on. |
| title: Rate cards |
| validation_errors: |
| type: array |
| items: |
| $ref: '#/components/schemas/ProductCatalogValidationError' |
| description: List of validation errors. |
| title: Validation errors |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Add-on allows extending subscriptions with compatible plans with additional |
| ratecards. |
| AddonInstanceType: |
| type: string |
| enum: |
| - single |
| - multiple |
| description: |- |
| The instanceType of the add-on. |
| |
| - `single`: Can be added to a subscription only once. |
| - `multiple`: Can be added to a subscription more than once. |
| AddonPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/Addon' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| AddonReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: Addon reference. |
| AddonStatus: |
| type: string |
| enum: |
| - draft |
| - active |
| - archived |
| description: |- |
| The status of the add-on defined by the `effective_from` and `effective_to` |
| properties. |
| |
| - `draft`: The add-on has not yet been published and can be edited. |
| - `active`: The add-on is published and available for use. |
| - `archived`: The add-on is no longer available for use. |
| Address: |
| type: object |
| properties: |
| country: |
| allOf: |
| - $ref: '#/components/schemas/CountryCode' |
| description: |- |
| Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) |
| alpha-2 format. |
| title: Country |
| postal_code: |
| type: string |
| description: Postal code. |
| title: Postal Code |
| state: |
| type: string |
| description: State or province. |
| title: State |
| city: |
| type: string |
| description: City. |
| title: City |
| line1: |
| type: string |
| description: First line of the address. |
| title: Line 1 |
| line2: |
| type: string |
| description: Second line of the address. |
| title: Line 2 |
| phone_number: |
| type: string |
| description: Phone number. |
| title: Phone Number |
| additionalProperties: false |
| description: Address |
| AppCatalogItemPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingAppCatalogItem' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| AppPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingApp' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| BillingApp: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingAppStripe' |
| - $ref: '#/components/schemas/BillingAppSandbox' |
| - $ref: '#/components/schemas/BillingAppExternalInvoicing' |
| discriminator: |
| propertyName: type |
| mapping: |
| stripe: '#/components/schemas/BillingAppStripe' |
| sandbox: '#/components/schemas/BillingAppSandbox' |
| external_invoicing: '#/components/schemas/BillingAppExternalInvoicing' |
| description: Installed application. |
| BillingAppCapability: |
| type: object |
| required: |
| - type |
| - key |
| - name |
| - description |
| properties: |
| type: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCapabilityType' |
| description: Type of the capability. |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: Key of the capability. |
| name: |
| type: string |
| description: Name of the capability. |
| description: |
| type: string |
| description: Description of the capability. |
| additionalProperties: false |
| description: App capability describes a function that an App can perform. |
| example: |
| type: collect_payments |
| key: stripe_collect_payment |
| name: Collect Payments |
| description: Stripe payments collects outstanding revenue with Stripe customer's default payment method. |
| BillingAppCapabilityType: |
| type: string |
| enum: |
| - report_usage |
| - report_events |
| - calculate_tax |
| - invoice_customers |
| - collect_payments |
| description: |- |
| Supported capability types for an App. |
| |
| Each capability defines an integration function that an App can perform. |
| BillingAppCatalogItem: |
| type: object |
| required: |
| - type |
| - name |
| - description |
| - capabilities |
| - install_methods |
| properties: |
| type: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppType' |
| description: Type of the app. |
| readOnly: true |
| name: |
| type: string |
| description: Name of the app. |
| readOnly: true |
| description: |
| type: string |
| description: Description of the app. |
| readOnly: true |
| capabilities: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingAppCapability' |
| description: Capabilities of the app. |
| readOnly: true |
| install_methods: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingAppInstallMethods' |
| description: Available install methods of the app. |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Available apps for billing integrations to connect with third-party services. |
| Apps can have various capabilities like syncing data from or to external |
| systems, integrating with third-party services for tax calculation, delivery of |
| invoices, collection of payments, etc. |
| example: |
| type: stripe |
| name: Stripe |
| description: Stripe integration allows you to collect payments with Stripe. |
| capabilities: |
| - type: calculate_tax |
| key: stripe_calculate_tax |
| name: Calculate Tax |
| description: Stripe Tax calculates tax portion of the invoices. |
| - type: invoice_customers |
| key: stripe_invoice_customers |
| name: Invoice Customers |
| description: Stripe invoices customers with due amount. |
| - type: collect_payments |
| key: stripe_collect_payments |
| name: Collect Payments |
| description: Stripe payments collects outstanding revenue with Stripe customer's default payment method. |
| install_methods: |
| - with_oauth2 |
| - with_api_key |
| BillingAppCustomerData: |
| type: object |
| properties: |
| stripe: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerDataStripe' |
| description: Used if the customer has a linked Stripe app. |
| title: Stripe |
| external_invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerDataExternalInvoicing' |
| description: Used if the customer has a linked external invoicing app. |
| title: External invoicing |
| additionalProperties: false |
| description: App customer data. |
| BillingAppCustomerDataExternalInvoicing: |
| type: object |
| properties: |
| labels: |
| allOf: |
| - $ref: '#/components/schemas/Labels' |
| description: Labels for this external invoicing integration on the customer. |
| title: Labels |
| additionalProperties: false |
| description: External invoicing customer data. |
| BillingAppCustomerDataStripe: |
| type: object |
| properties: |
| customer_id: |
| type: string |
| description: The Stripe customer ID used. |
| title: Stripe customer ID |
| example: cus_1234567890 |
| default_payment_method_id: |
| type: string |
| description: The Stripe default payment method ID. |
| title: Stripe default payment method ID |
| example: pm_1234567890 |
| labels: |
| allOf: |
| - $ref: '#/components/schemas/Labels' |
| description: Labels for this Stripe integration on the customer. |
| title: Labels |
| additionalProperties: false |
| description: Stripe customer data. |
| BillingAppExternalInvoicing: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - type |
| - definition |
| - status |
| - enable_draft_sync_hook |
| - enable_issuing_sync_hook |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - external_invoicing |
| description: The app type. |
| readOnly: true |
| definition: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCatalogItem' |
| description: The app catalog definition that this installed app is based on. |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStatus' |
| description: Status of the app connection. |
| readOnly: true |
| enable_draft_sync_hook: |
| type: boolean |
| description: |- |
| Enable draft synchronization hook. |
| |
| When enabled, invoices will pause at the draft state and wait for the |
| integration to call the draft synchronized endpoint before progressing to the |
| issuing state. This allows the external system to validate and prepare the |
| invoice data. |
|
|
| When disabled, invoices automatically progress through the draft state based on |
| the configured workflow timing. |
| enable_issuing_sync_hook: |
| type: boolean |
| description: |- |
| Enable issuing synchronization hook. |
| |
| When enabled, invoices will pause at the issuing state and wait for the |
| integration to call the issuing synchronized endpoint before progressing to the |
| issued state. This ensures the external invoicing system has successfully |
| created and finalized the invoice before it is marked as issued. |
|
|
| When disabled, invoices automatically progress through the issuing state and are |
| immediately marked as issued. |
| additionalProperties: false |
| description: |- |
| External Invoicing app enables integration with third-party invoicing or payment |
| system. |
| |
| The app supports a bi-directional synchronization pattern where OpenMeter |
| Billing manages the invoice lifecycle while the external system handles invoice |
| presentation and payment collection. |
|
|
| Integration workflow: |
|
|
| 1. The billing system creates invoices and transitions them through lifecycle |
| states (draft → issuing → issued) |
| 2. The integration receives webhook notifications about invoice state changes |
| 3. The integration calls back to provide external system IDs and metadata |
| 4. The integration reports payment events back via the payment status API |
|
|
| State synchronization is controlled by hooks that pause invoice progression |
| until the external system confirms synchronization via API callbacks. |
| BillingAppInstallMethods: |
| type: string |
| enum: |
| - with_oauth2 |
| - with_api_key |
| - no_credentials_required |
| description: Supported installation methods for an app. |
| BillingAppReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the app. |
| additionalProperties: false |
| description: App reference. |
| BillingAppSandbox: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - type |
| - definition |
| - status |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - sandbox |
| description: The app type. |
| readOnly: true |
| definition: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCatalogItem' |
| description: The app catalog definition that this installed app is based on. |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStatus' |
| description: Status of the app connection. |
| readOnly: true |
| additionalProperties: false |
| description: Sandbox app can be used for testing billing features. |
| BillingAppStatus: |
| type: string |
| enum: |
| - ready |
| - unauthorized |
| description: Connection status of an installed app. |
| BillingAppStripe: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - type |
| - definition |
| - status |
| - account_id |
| - livemode |
| - masked_api_key |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - stripe |
| description: The app type. |
| readOnly: true |
| definition: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCatalogItem' |
| description: The app catalog definition that this installed app is based on. |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStatus' |
| description: Status of the app connection. |
| readOnly: true |
| account_id: |
| type: string |
| description: The Stripe account ID associated with the connected Stripe account. |
| readOnly: true |
| livemode: |
| type: boolean |
| description: Indicates whether the app is connected to a live Stripe account. |
| readOnly: true |
| masked_api_key: |
| type: string |
| description: The masked Stripe API key that only exposes the first and last few characters. |
| readOnly: true |
| additionalProperties: false |
| description: Stripe app. |
| BillingAppStripeCheckoutSessionCustomTextParams: |
| type: object |
| properties: |
| after_submit: |
| type: object |
| properties: |
| message: |
| type: string |
| maxLength: 1200 |
| description: The custom message text (max 1200 characters). |
| additionalProperties: false |
| description: Text displayed after the payment confirmation button. |
| shipping_address: |
| type: object |
| properties: |
| message: |
| type: string |
| maxLength: 1200 |
| description: The custom message text (max 1200 characters). |
| additionalProperties: false |
| description: Text displayed alongside shipping address collection. |
| submit: |
| type: object |
| properties: |
| message: |
| type: string |
| maxLength: 1200 |
| description: The custom message text (max 1200 characters). |
| additionalProperties: false |
| description: Text displayed alongside the payment confirmation button. |
| terms_of_service_acceptance: |
| type: object |
| properties: |
| message: |
| type: string |
| maxLength: 1200 |
| description: The custom message text (max 1200 characters). |
| additionalProperties: false |
| description: Text replacing the default terms of service agreement text. |
| additionalProperties: false |
| description: Custom text displayed at various stages of the checkout flow. |
| BillingAppStripeCheckoutSessionMode: |
| type: string |
| enum: |
| - setup |
| description: |- |
| Stripe Checkout Session mode. |
| |
| Determines the primary purpose of the checkout session. |
| BillingAppStripeCheckoutSessionUIMode: |
| type: string |
| enum: |
| - embedded |
| - hosted |
| description: Checkout Session UI mode. |
| BillingAppStripeCreateCheckoutSessionBillingAddressCollection: |
| type: string |
| enum: |
| - auto |
| - required |
| description: Controls whether Checkout collects the customer's billing address. |
| BillingAppStripeCreateCheckoutSessionConsentCollection: |
| type: object |
| properties: |
| payment_method_reuse_agreement: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionConsentCollectionPaymentMethodReuseAgreement' |
| description: Controls the visibility of payment method reuse agreement. |
| promotions: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionConsentCollectionPromotions' |
| description: |- |
| Enables collection of promotional communication consent. |
| |
| Only available to US merchants. When set to "auto", Checkout determines whether |
| to show the option based on the customer's locale. |
| terms_of_service: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionConsentCollectionTermsOfService' |
| description: |- |
| Requires customers to accept terms of service before payment. |
| |
| Requires a valid terms of service URL in your Stripe Dashboard settings. |
| additionalProperties: false |
| description: Checkout Session consent collection configuration. |
| BillingAppStripeCreateCheckoutSessionConsentCollectionPaymentMethodReuseAgreement: |
| type: object |
| properties: |
| position: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition' |
| description: Position and visibility of the payment method reuse agreement. |
| additionalProperties: false |
| description: Payment method reuse agreement configuration. |
| BillingAppStripeCreateCheckoutSessionConsentCollectionPaymentMethodReuseAgreementPosition: |
| type: string |
| enum: |
| - auto |
| - hidden |
| description: Position of payment method reuse agreement in the UI. |
| BillingAppStripeCreateCheckoutSessionConsentCollectionPromotions: |
| type: string |
| enum: |
| - auto |
| - none |
| description: Promotional communication consent collection setting. |
| BillingAppStripeCreateCheckoutSessionConsentCollectionTermsOfService: |
| type: string |
| enum: |
| - none |
| - required |
| description: Terms of service acceptance requirement. |
| BillingAppStripeCreateCheckoutSessionCustomerUpdate: |
| type: object |
| properties: |
| address: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionCustomerUpdateBehavior' |
| description: |- |
| Whether to save the billing address to customer.address. |
| |
| Defaults to "never". |
| default: never |
| name: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionCustomerUpdateBehavior' |
| description: |- |
| Whether to save the customer name to customer.name. |
| |
| Defaults to "never". |
| default: never |
| shipping: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionCustomerUpdateBehavior' |
| description: |- |
| Whether to save shipping information to customer.shipping. |
| |
| Defaults to "never". |
| default: never |
| additionalProperties: false |
| description: Controls which customer fields can be updated by the checkout session. |
| BillingAppStripeCreateCheckoutSessionCustomerUpdateBehavior: |
| type: string |
| enum: |
| - auto |
| - never |
| description: Behavior for updating customer fields from checkout session. |
| BillingAppStripeCreateCheckoutSessionRedirectOnCompletion: |
| type: string |
| enum: |
| - always |
| - if_required |
| - never |
| description: Redirect behavior for embedded checkout sessions. |
| BillingAppStripeCreateCheckoutSessionRequestOptions: |
| type: object |
| properties: |
| billing_address_collection: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionBillingAddressCollection' |
| description: |- |
| Whether to collect the customer's billing address. |
| |
| Defaults to auto, which only collects the address when necessary for tax |
| calculation. |
| default: auto |
| cancel_url: |
| type: string |
| description: |- |
| URL to redirect customers who cancel the checkout session. |
| |
| Not allowed when ui_mode is "embedded". |
| client_reference_id: |
| type: string |
| description: |- |
| Unique reference string for reconciling sessions with internal systems. |
| |
| Can be a customer ID, cart ID, or any other identifier. |
| customer_update: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionCustomerUpdate' |
| description: Controls which customer fields can be updated by the checkout session. |
| consent_collection: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionConsentCollection' |
| description: Configuration for collecting customer consent during checkout. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: |- |
| Three-letter ISO 4217 currency code in uppercase. |
| |
| Required for payment mode sessions. Optional for setup mode sessions. |
| custom_text: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCheckoutSessionCustomTextParams' |
| description: Custom text to display during checkout at various stages. |
| expires_at: |
| type: integer |
| format: int64 |
| description: |- |
| Unix timestamp when the checkout session expires. |
| |
| Can be 30 minutes to 24 hours from creation. Defaults to 24 hours. |
| locale: |
| type: string |
| description: |- |
| IETF language tag for the checkout UI locale. |
| |
| If blank or "auto", uses the browser's locale. Example: "en", "fr", "de". |
| metadata: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| Set of key-value pairs to attach to the checkout session. |
| |
| Useful for storing additional structured information. |
| return_url: |
| type: string |
| description: |- |
| Return URL for embedded checkout sessions after payment authentication. |
| |
| Required if ui_mode is "embedded" and redirect-based payment methods are |
| enabled. |
| success_url: |
| type: string |
| description: |- |
| Success URL to redirect customers after completing payment or setup. |
| |
| Not allowed when ui_mode is "embedded". See: |
| https://docs.stripe.com/payments/checkout/custom-success-page |
| ui_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCheckoutSessionUIMode' |
| description: |- |
| The UI mode for the checkout session. |
| |
| "hosted" displays a Stripe-hosted page. "embedded" integrates directly into your |
| app. Defaults to "hosted". |
| default: hosted |
| payment_method_types: |
| type: array |
| items: |
| type: string |
| description: |- |
| List of payment method types to enable (e.g., "card", "us_bank_account"). |
| |
| If not specified, Stripe enables all relevant payment methods. |
| redirect_on_completion: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionRedirectOnCompletion' |
| description: |- |
| Redirect behavior for embedded checkout sessions. |
| |
| Controls when to redirect users after completion. See: |
| https://docs.stripe.com/payments/checkout/custom-success-page?payment-ui=embedded-form |
| tax_id_collection: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionTaxIdCollection' |
| description: Configuration for collecting tax IDs during checkout. |
| additionalProperties: false |
| description: |- |
| Configuration options for creating a Stripe Checkout Session. |
| |
| Based on Stripe's |
| [Checkout Session API parameters](https://docs.stripe.com/api/checkout/sessions/create). |
| BillingAppStripeCreateCheckoutSessionResult: |
| type: object |
| required: |
| - customer_id |
| - stripe_customer_id |
| - session_id |
| - setup_intent_id |
| - created_at |
| - mode |
| properties: |
| customer_id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The customer ID in the billing system. |
| stripe_customer_id: |
| type: string |
| description: The Stripe customer ID. |
| session_id: |
| type: string |
| description: The Stripe checkout session ID. |
| setup_intent_id: |
| type: string |
| description: The setup intent ID created for collecting the payment method. |
| client_secret: |
| type: string |
| description: |- |
| Client secret for initializing Stripe.js on the client side. |
| |
| Required for embedded checkout sessions. See: |
| https://docs.stripe.com/payments/checkout/custom-success-page |
| client_reference_id: |
| type: string |
| description: |- |
| The client reference ID provided in the request. |
| |
| Useful for reconciling the session with your internal systems. |
| customer_email: |
| type: string |
| description: Customer's email address if provided to Stripe. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency code for the checkout session. |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when the checkout session was created. |
| expires_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when the checkout session will expire. |
| metadata: |
| type: object |
| additionalProperties: |
| type: string |
| description: Metadata attached to the checkout session. |
| status: |
| type: string |
| description: |- |
| The status of the checkout session. |
| |
| See: |
| https://docs.stripe.com/api/checkout/sessions/object#checkout_session_object-status |
| url: |
| type: string |
| description: URL to redirect customers to the checkout page (for hosted mode). |
| mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCheckoutSessionMode' |
| description: |- |
| Mode of the checkout session. |
| |
| Currently only "setup" mode is supported for collecting payment methods. |
| cancel_url: |
| type: string |
| description: The cancel URL where customers are redirected if they cancel. |
| success_url: |
| type: string |
| description: The success URL where customers are redirected after completion. |
| return_url: |
| type: string |
| description: The return URL for embedded sessions after authentication. |
| additionalProperties: false |
| description: |- |
| Result of creating a Stripe Checkout Session. |
| |
| Contains all the information needed to redirect customers to the checkout or |
| initialize an embedded checkout flow. |
| BillingAppStripeCreateCheckoutSessionTaxIdCollection: |
| type: object |
| properties: |
| enabled: |
| type: boolean |
| description: |- |
| Enable tax ID collection during checkout. |
| |
| Defaults to false. |
| default: false |
| required: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionTaxIdCollectionRequired' |
| description: |- |
| Whether tax ID collection is required. |
| |
| Defaults to "never". |
| default: never |
| additionalProperties: false |
| description: Tax ID collection configuration for checkout sessions. |
| BillingAppStripeCreateCheckoutSessionTaxIdCollectionRequired: |
| type: string |
| enum: |
| - if_supported |
| - never |
| description: Tax ID collection requirement level. |
| BillingAppStripeCreateCustomerPortalSessionOptions: |
| type: object |
| properties: |
| configuration_id: |
| type: string |
| description: |- |
| The ID of an existing |
| [Stripe configuration](https://docs.stripe.com/api/customer_portal/configurations) |
| to use for this session, describing its functionality and features. If not |
| specified, the session uses the default configuration. |
| locale: |
| type: string |
| description: |- |
| The IETF |
| [language tag](https://docs.stripe.com/api/customer_portal/sessions/create#create_portal_session-locale) |
| of the locale customer portal is displayed in. If blank or `auto`, the |
| customer's preferred_locales or browser's locale is used. |
| return_url: |
| type: string |
| description: |- |
| The |
| [URL to redirect](https://docs.stripe.com/api/customer_portal/sessions/create#create_portal_session-return_url) |
| the customer to after they have completed their requested actions. |
| additionalProperties: false |
| description: Request to create a Stripe Customer Portal Session. |
| BillingAppStripeCreateCustomerPortalSessionResult: |
| type: object |
| required: |
| - id |
| - stripe_customer_id |
| - configuration_id |
| - livemode |
| - created_at |
| - return_url |
| - locale |
| - url |
| properties: |
| id: |
| type: string |
| description: |- |
| The ID of the customer portal session. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-id |
| stripe_customer_id: |
| type: string |
| description: The ID of the stripe customer. |
| configuration_id: |
| type: string |
| description: |- |
| Configuration used to customize the customer portal. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-configuration |
| livemode: |
| type: boolean |
| description: |- |
| Livemode. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-livemode |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| Created at. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-created |
| return_url: |
| type: string |
| description: |- |
| Return URL. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-return_url |
| locale: |
| type: string |
| description: |- |
| The IETF language tag of the locale customer portal is displayed in. |
| |
| See: |
| https://docs.stripe.com/api/customer_portal/sessions/object#portal_session_object-locale |
| url: |
| type: string |
| description: |- |
| The URL to redirect the customer to after they have completed their requested |
| actions. |
| additionalProperties: false |
| description: |- |
| Result of creating a |
| [Stripe Customer Portal Session](https://docs.stripe.com/api/customer_portal/sessions/object). |
| |
| Contains all the information needed to redirect the customer to the Stripe |
| Customer Portal. |
| BillingAppType: |
| type: string |
| enum: |
| - sandbox |
| - stripe |
| - external_invoicing |
| description: The type of the app. |
| BillingCharge: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingChargeFlatFee' |
| - $ref: '#/components/schemas/BillingChargeUsageBased' |
| discriminator: |
| propertyName: type |
| mapping: |
| flat_fee: '#/components/schemas/BillingChargeFlatFee' |
| usage_based: '#/components/schemas/BillingChargeUsageBased' |
| description: Customer charge. |
| title: Customer charge |
| BillingChargeFlatFee: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - type |
| - customer |
| - lifecycle_controller |
| - currency |
| - status |
| - invoice_at |
| - service_period |
| - full_service_period |
| - billing_period |
| - settlement_mode |
| - payment_term |
| - proration_configuration |
| - amount_after_proration |
| - price |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - flat_fee |
| description: The type of the charge. |
| title: Type |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerReference' |
| description: The customer owning the charge. |
| title: Customer |
| readOnly: true |
| lifecycle_controller: |
| allOf: |
| - $ref: '#/components/schemas/BillingLifecycleController' |
| description: |- |
| Indicates whether the charge lifecycle is controlled by OpenMeter or manually |
| overridden by the API user. |
| title: Lifecycle controller |
| readOnly: true |
| subscription: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionReference' |
| description: |- |
| The subscription that originated the charge, when the charge was created from a |
| subscription item. |
| title: Subscription |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency of the charge. |
| title: Currency |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeStatus' |
| description: The lifecycle status of the charge. |
| title: Status |
| readOnly: true |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| readOnly: true |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| readOnly: true |
| advance_after: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The earliest time when the charge should be advanced again by background |
| processing. |
| title: Advance after |
| readOnly: true |
| unique_reference_id: |
| type: string |
| description: Unique reference ID of the charge. |
| title: Unique reference ID |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: Settlement mode of the charge. |
| title: Settlement mode |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfig' |
| description: Tax configuration of the charge. |
| title: Tax configuration |
| payment_term: |
| allOf: |
| - $ref: '#/components/schemas/BillingPricePaymentTerm' |
| description: Payment term of the flat fee charge. |
| title: Payment term |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeFlatFeeDiscounts' |
| description: The discounts applied to the charge. |
| title: Discounts |
| feature_key: |
| type: string |
| description: The feature associated with the charge, when applicable. |
| title: Feature key |
| proration_configuration: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' |
| description: The proration configuration of the charge. |
| title: Proration configuration |
| amount_after_proration: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyAmount' |
| description: The amount after proration of the charge. |
| title: Amount after proration |
| readOnly: true |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price of the charge. |
| title: Price |
| readOnly: true |
| system_intent: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeFlatFeeSystemIntent' |
| description: |- |
| Current intent from the system lifecycle controller for a charge that has an |
| active manual override. The top-level charge fields remain the effective |
| customer-facing intent. |
| title: System intent |
| readOnly: true |
| additionalProperties: false |
| description: A flat fee charge for a customer. |
| title: Flat fee charge |
| BillingChargeFlatFeeDiscounts: |
| type: object |
| properties: |
| percentage: |
| type: number |
| minimum: 0 |
| maximum: 100 |
| description: Percentage discount applied to the price (0–100). |
| additionalProperties: false |
| description: |- |
| Discounts applicable to flat fee charges. |
| |
| This is the same as `ProductCatalog.Discounts` but without the `usage` field, |
| which is not applicable to flat fee charges. |
| title: Flat fee charge discounts |
| BillingChargeFlatFeeSystemIntent: |
| type: object |
| required: |
| - name |
| - invoice_at |
| - service_period |
| - full_service_period |
| - billing_period |
| - payment_term |
| - proration_configuration |
| - amount_before_proration |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| readOnly: true |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| readOnly: true |
| payment_term: |
| allOf: |
| - $ref: '#/components/schemas/BillingPricePaymentTerm' |
| description: Payment term of the flat fee charge. |
| title: Payment term |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeFlatFeeDiscounts' |
| description: The discounts applied to the charge. |
| title: Discounts |
| proration_configuration: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' |
| description: The proration configuration of the charge. |
| title: Proration configuration |
| amount_before_proration: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyAmount' |
| description: The amount before proration of the system lifecycle controller flat fee intent. |
| title: Amount before proration |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The timestamp when the system lifecycle controller intent was deleted. The |
| effective charge can remain visible while a manual override is active. |
| title: Deleted at |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Flat fee intent fields from the system lifecycle controller shadowed by a manual |
| override. |
| title: Flat fee system lifecycle controller charge intent |
| BillingChargeReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Unique identifier for the charge. |
| title: ID |
| readOnly: true |
| additionalProperties: false |
| description: Reference to a charge associated with an invoice line. |
| BillingChargeStatus: |
| type: string |
| enum: |
| - created |
| - active |
| - final |
| - deleted |
| description: |- |
| Lifecycle status of a charge. |
| |
| Values: |
|
|
| - `created`: The charge has been created but is not active yet. |
| - `active`: The charge is active. |
| - `final`: The charge is fully finalized and no further changes are expected. |
| - `deleted`: The charge has been deleted. |
| title: Charge status |
| BillingChargeTotals: |
| type: object |
| required: |
| - booked |
| properties: |
| booked: |
| allOf: |
| - $ref: '#/components/schemas/BillingTotals' |
| description: The amount of the charge already booked to the internal accounting system. |
| title: Booked |
| readOnly: true |
| realtime: |
| allOf: |
| - $ref: '#/components/schemas/BillingTotals' |
| description: |- |
| The realtime amount of the charge. |
| |
| Requires the `realtime_usage` expand. |
| title: Realtime totals |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| The totals of a change. |
| |
| RealTime is only expanded when the `real_time_usage` expand is used. |
| BillingChargeUsageBased: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - type |
| - customer |
| - lifecycle_controller |
| - currency |
| - status |
| - invoice_at |
| - service_period |
| - full_service_period |
| - billing_period |
| - settlement_mode |
| - feature_key |
| - totals |
| - price |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - usage_based |
| description: The type of the charge. |
| title: Type |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerReference' |
| description: The customer owning the charge. |
| title: Customer |
| readOnly: true |
| lifecycle_controller: |
| allOf: |
| - $ref: '#/components/schemas/BillingLifecycleController' |
| description: |- |
| Indicates whether the charge lifecycle is controlled by OpenMeter or manually |
| overridden by the API user. |
| title: Lifecycle controller |
| readOnly: true |
| subscription: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionReference' |
| description: |- |
| The subscription that originated the charge, when the charge was created from a |
| subscription item. |
| title: Subscription |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency of the charge. |
| title: Currency |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeStatus' |
| description: The lifecycle status of the charge. |
| title: Status |
| readOnly: true |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| readOnly: true |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| readOnly: true |
| advance_after: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The earliest time when the charge should be advanced again by background |
| processing. |
| title: Advance after |
| readOnly: true |
| unique_reference_id: |
| type: string |
| description: Unique reference ID of the charge. |
| title: Unique reference ID |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: Settlement mode of the charge. |
| title: Settlement mode |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfig' |
| description: Tax configuration of the charge. |
| title: Tax configuration |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardDiscounts' |
| description: Discounts applied to the usage-based charge. |
| title: Discounts |
| feature_key: |
| type: string |
| description: The feature associated with the charge. |
| title: Feature key |
| totals: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeTotals' |
| description: Aggregated booked and realtime totals for the charge. |
| title: Totals for the charge |
| readOnly: true |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price of the charge. |
| title: Price |
| system_intent: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeUsageBasedSystemIntent' |
| description: |- |
| Current intent from the system lifecycle controller for a charge that has an |
| active manual override. The top-level charge fields remain the effective |
| customer-facing intent. |
| title: System intent |
| readOnly: true |
| additionalProperties: false |
| description: A usage-based charge for a customer. |
| title: Usage-based charge |
| BillingChargeUsageBasedSystemIntent: |
| type: object |
| required: |
| - name |
| - invoice_at |
| - service_period |
| - full_service_period |
| - billing_period |
| - price |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| readOnly: true |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| readOnly: true |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardDiscounts' |
| description: Discounts applied to the usage-based charge. |
| title: Discounts |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price of the charge. |
| title: Price |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The timestamp when the system lifecycle controller intent was deleted. The |
| effective charge can remain visible while a manual override is active. |
| title: Deleted at |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Usage-based intent fields from the system lifecycle controller shadowed by a |
| manual override. |
| title: Usage-based system lifecycle controller charge intent |
| BillingChargesExpand: |
| type: string |
| enum: |
| - real_time_usage |
| description: |- |
| Expands for customer charges. |
| |
| Values: |
|
|
| - `real_time_usage`: The charge's real-time usage. |
| title: Customer charge expands |
| BillingCostBasis: |
| type: object |
| required: |
| - id |
| - fiat_code |
| - rate |
| - created_at |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| fiat_code: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The fiat currency code for the cost basis. |
| rate: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The cost rate for the currency. |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| An ISO-8601 timestamp representation of the date from which the cost basis is |
| effective. If not provided, it will be effective immediately and will be set to |
| `now` by the system. |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| An ISO-8601 timestamp representation of the date until which the cost basis is |
| effective. If provided, it must be later than `effective_from`. If not provided, |
| it remains effective until superseded. |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| additionalProperties: false |
| description: Describes currency basis supported by billing system. |
| BillingCreditAdjustment: |
| type: object |
| required: |
| - name |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| additionalProperties: false |
| description: |- |
| A credit adjustment can be used to make manual adjustments to a customer's |
| credit balance. |
| |
| Supported use-cases: |
|
|
| - Usage correction |
| title: Credit adjustment |
| BillingCreditAvailabilityPolicy: |
| type: string |
| enum: |
| - on_creation |
| description: |- |
| When credits become available for consumption. |
| |
| - `on_creation`: Credits are available as soon as the grant is created. |
| - `on_authorization`: Credits are available once the payment is authorized. |
| - `on_settlement`: Credits are available once the payment is settled. |
| title: Credit availability policy |
| BillingCreditBalances: |
| type: object |
| required: |
| - retrieved_at |
| - balances |
| properties: |
| retrieved_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp of the balance retrieval. |
| readOnly: true |
| balances: |
| type: array |
| items: |
| $ref: '#/components/schemas/CreditBalance' |
| description: The balances by currencies. |
| readOnly: true |
| additionalProperties: false |
| description: The balances of the credits of a customer. |
| title: Credit balances |
| BillingCreditFundingMethod: |
| type: string |
| enum: |
| - none |
| - invoice |
| - external |
| description: |- |
| The funding method describes how the grant is funded. |
| |
| - `none`: No funding workflow applies, for example promotional grants |
| - `invoice`: The grant is funded by an in-system invoice flow |
| - `external`: The grant is funded outside the system (e.g., wire transfer, |
| external invoice, or manual reconciliation) |
| title: Credit funding method |
| BillingCreditGrant: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - funding_method |
| - currency |
| - amount |
| - status |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| funding_method: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditFundingMethod' |
| description: Funding method of the grant. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: The currency of the granted credits. |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Granted credit amount. |
| purchase: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantPurchase' |
| description: Present when a funding workflow applies (funding_method is not `none`). |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantTaxConfig' |
| description: |- |
| Tax configuration for the grant. |
| |
| For `invoice` and `external` funding methods, tax configuration should be |
| provided to ensure correct revenue recognition. When not provided, the default |
| credit grant tax code is applied, if that's not set the global default taxcode |
| is used. |
| invoice: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantInvoiceReference' |
| description: Available when `funding_method` is `invoice`. |
| readOnly: true |
| filters: |
| $ref: '#/components/schemas/BillingCreditGrantFilters' |
| priority: |
| type: integer |
| format: int16 |
| minimum: 1 |
| maximum: 1000 |
| description: Draw-down priority of the grant. Lower values have higher priority. |
| default: 10 |
| effective_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The timestamp when the credit grant becomes effective. |
| |
| Defaults to the current date and time. |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| Idempotency key for the credit grant creation request. |
| |
| When provided, reusing the same key returns an HTTP 409 Conflict instead of |
| creating a duplicate grant, which makes create requests safe to retry. |
| expires_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The timestamp when the credit grant expires. |
| |
| Calculated from the grant effective time and `expires_after` if provided. |
| readOnly: true |
| voided_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when the grant was voided. |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantStatus' |
| description: Current lifecycle status of the grant. |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| A credit grant allocates credits to a customer. |
| |
| Credits are drawn down against charges according to the settlement mode |
| configured on the rate card. |
| title: Credit grant |
| BillingCreditGrantFilters: |
| type: object |
| properties: |
| features: |
| type: array |
| items: |
| $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| Limit the credit grant to specific features. If no features are specified, the |
| credit grant can be used for any feature. |
| example: |
| - input_tokens |
| - output_tokens |
| additionalProperties: false |
| description: Filters for the credit grant. |
| BillingCreditGrantInvoiceReference: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Identifier of the invoice associated with the grant. |
| readOnly: true |
| line: |
| type: object |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| required: |
| - id |
| additionalProperties: false |
| description: Identifier of the invoice line associated with the grant. |
| readOnly: true |
| additionalProperties: false |
| description: Invoice references for the grant. |
| BillingCreditGrantPurchase: |
| type: object |
| required: |
| - currency |
| - amount |
| properties: |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency of the purchase amount. |
| per_unit_cost_basis: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Cost basis per credit unit used to calculate the purchase amount. |
| |
| If `per_unit_cost_basis` is 0.50 and credit amount is $100.00, the total charge |
| is $50.00. The value must be greater than 0. If the cost basis is 0, use |
| `funding_method=none` instead. |
|
|
| Defaults to 1.0. |
| default: '1.0' |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The purchase amount. Calculated from `per_unit_cost_basis` and credit `amount`. |
| readOnly: true |
| availability_policy: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditAvailabilityPolicy' |
| description: |- |
| Controls when credits become available for consumption. |
| |
| Defaults to `on_creation`. |
| default: on_creation |
| settlement_status: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditPurchasePaymentSettlementStatus' |
| description: Current payment settlement status. |
| readOnly: true |
| additionalProperties: false |
| description: Purchase and payment terms of the grant. |
| BillingCreditGrantStatus: |
| type: string |
| enum: |
| - pending |
| - active |
| - expired |
| - voided |
| description: |- |
| Credit grant lifecycle status. |
| |
| - `pending`: The credit block has been created but is not yet valid. |
| (`effective_at` is in the future or availability_policy is not met) |
| - `active`: The credit block is currently valid and eligible for consumption. |
| (`effective_at` is in the past, `expires_at` is in the future and |
| availability_policy is met) |
| - `expired`: The credit block expired with remaining unused balance, |
| `expires_at` time has passed. |
| - `voided`: The credit block was voided. Remaining balance is forfeited. |
| title: Credit grant lifecycle status |
| BillingCreditGrantTaxConfig: |
| type: object |
| properties: |
| behavior: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxBehavior' |
| description: Tax behavior applied to the invoice line item. |
| tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: Tax code applied to the invoice line item. |
| additionalProperties: false |
| description: |- |
| Tax configuration for a credit grant. |
| |
| Tax configuration should be provided to ensure correct revenue recognition, |
| including for externally funded grants. |
| title: Tax configuration for a credit grant |
| BillingCreditGrantVoidPaymentAdjustment: |
| type: string |
| enum: |
| - none |
| description: |- |
| Describes how voiding a credit grant adjusts related payment state. |
| |
| - `none`: Voiding does not adjust invoices, payment authorization, settlement, |
| payment intents, or external collection state. |
| title: Credit grant void payment adjustment |
| BillingCreditPurchasePaymentSettlementStatus: |
| type: string |
| enum: |
| - pending |
| - authorized |
| - settled |
| description: |- |
| Credit purchase payment settlement status. |
| |
| - `pending`: Payment has been initiated and is not yet authorized. |
| - `authorized`: Payment has been authorized. |
| - `settled`: Payment has been settled. |
| title: Credit purchase payment settlement status |
| BillingCreditTransaction: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - booked_at |
| - type |
| - currency |
| - amount |
| - available_balance |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| booked_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The date and time the transaction was booked. |
| readOnly: true |
| type: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditTransactionType' |
| description: The type of credit transaction. |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: Currency of the balance affected by the transaction. |
| readOnly: true |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Signed amount of the credit movement. Positive values add balance, negative |
| values reduce balance. |
| readOnly: true |
| available_balance: |
| type: object |
| properties: |
| before: |
| $ref: '#/components/schemas/Numeric' |
| after: |
| $ref: '#/components/schemas/Numeric' |
| required: |
| - before |
| - after |
| additionalProperties: false |
| description: The available balance before and after the transaction. |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| A credit transaction represents a single credit movement on the customer's |
| balance. |
| |
| Credit transactions are immutable. |
| title: Credit transaction |
| BillingCreditTransactionType: |
| type: string |
| enum: |
| - funded |
| - consumed |
| - expired |
| - voided |
| description: |- |
| The type of the credit transaction. |
| |
| - `funded`: Credit granted and available for consumption. |
| - `consumed`: Credit consumed by usage or fees. |
| - `expired`: Credit removed because it expired before being used. |
| - `voided`: Credit removed because the grant was voided before being used. |
| BillingCurrency: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingCurrencyFiat' |
| - $ref: '#/components/schemas/BillingCurrencyCustom' |
| discriminator: |
| propertyName: type |
| mapping: |
| fiat: '#/components/schemas/BillingCurrencyFiat' |
| custom: '#/components/schemas/BillingCurrencyCustom' |
| description: Fiat or custom currency. |
| BillingCurrencyCode: |
| type: string |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Fiat or custom currency code. |
| x-go-type: string |
| BillingCurrencyCodeCustom: |
| type: string |
| minLength: 3 |
| maxLength: 24 |
| description: |- |
| Custom currency code. It should be a unique code but not conflicting with any |
| existing fiat currency codes. |
| BillingCurrencyCustom: |
| type: object |
| required: |
| - type |
| - name |
| - id |
| - code |
| - created_at |
| properties: |
| type: |
| type: string |
| enum: |
| - custom |
| description: The type of the currency. |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| The name of the currency. It should be a human-readable string that represents |
| the name of the currency, such as "US Dollar" or "Euro". |
| symbol: |
| type: string |
| minLength: 1 |
| description: |- |
| The symbol of the currency. It should be a string that represents the symbol of |
| the currency, such as "$" for US Dollar or "€" for Euro. |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| code: |
| $ref: '#/components/schemas/BillingCurrencyCodeCustom' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of the custom currency creation date. |
| readOnly: true |
| additionalProperties: false |
| description: Describes custom currency. |
| BillingCurrencyFiat: |
| type: object |
| required: |
| - type |
| - name |
| - code |
| properties: |
| type: |
| type: string |
| enum: |
| - fiat |
| description: The type of the currency. |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| The name of the currency. It should be a human-readable string that represents |
| the name of the currency, such as "US Dollar" or "Euro". |
| symbol: |
| type: string |
| minLength: 1 |
| description: |- |
| The symbol of the currency. It should be a string that represents the symbol of |
| the currency, such as "$" for US Dollar or "€" for Euro. |
| code: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| readOnly: true |
| additionalProperties: false |
| description: Currency describes a currency supported by the billing system. |
| BillingCurrencyType: |
| type: string |
| enum: |
| - fiat |
| - custom |
| description: |- |
| Currency type for custom currencies. It should be a unique code but not |
| conflicting with any existing standard currency codes. |
| BillingCustomer: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| $ref: '#/components/schemas/ExternalResourceKey' |
| usage_attribution: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerUsageAttribution' |
| description: Mapping to attribute metered usage to the customer by the event subject. |
| title: Usage Attribution |
| primary_email: |
| type: string |
| description: The primary email address of the customer. |
| title: Primary Email |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency of the customer. Used for billing, tax and invoicing. |
| title: Currency |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/Address' |
| description: The billing address of the customer. Used for tax and invoicing. |
| title: Billing Address |
| additionalProperties: false |
| description: |- |
| Customers can be individuals or organizations that can subscribe to plans and |
| have access to features. |
| BillingCustomerData: |
| type: object |
| properties: |
| billing_profile: |
| allOf: |
| - $ref: '#/components/schemas/BillingProfileReference' |
| description: |- |
| The billing profile for the customer. |
| |
| If not provided, the default billing profile will be used. |
| title: Billing profile |
| app_data: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerData' |
| description: App customer data. |
| title: App customer data |
| additionalProperties: false |
| description: Billing customer data. |
| BillingCustomerReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the customer. |
| additionalProperties: false |
| description: Customer reference. |
| BillingCustomerStripeCreateCheckoutSessionRequest: |
| type: object |
| required: |
| - stripe_options |
| properties: |
| stripe_options: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCheckoutSessionRequestOptions' |
| description: |- |
| Options for configuring the Stripe Checkout Session. |
| |
| These options are passed directly to Stripe's |
| [checkout session creation API](https://docs.stripe.com/api/checkout/sessions/create). |
| additionalProperties: false |
| description: |- |
| Request to create a Stripe Checkout Session for the customer. |
| |
| Checkout Sessions are used to collect payment method information from customers |
| in a secure, Stripe-hosted interface. This integration uses setup mode to |
| collect payment methods that can be charged later for subscription billing. |
| BillingCustomerStripeCreateCustomerPortalSessionRequest: |
| type: object |
| required: |
| - stripe_options |
| properties: |
| stripe_options: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppStripeCreateCustomerPortalSessionOptions' |
| description: Options for configuring the Stripe Customer Portal Session. |
| additionalProperties: false |
| description: |- |
| Request to create a Stripe Customer Portal Session for the customer. |
| |
| Useful to redirect the customer to the Stripe Customer Portal to manage their |
| payment methods, change their billing address and access their invoice history. |
| Only returns URL if the customer billing profile is linked to a stripe app and |
| customer. |
| BillingCustomerUsageAttribution: |
| type: object |
| required: |
| - subject_keys |
| properties: |
| subject_keys: |
| type: array |
| items: |
| $ref: '#/components/schemas/UsageAttributionSubjectKey' |
| minItems: 0 |
| description: |- |
| The subjects that are attributed to the customer. Can be empty when no usage |
| event subjects are associated with the customer. |
| title: Subject Keys |
| additionalProperties: false |
| description: |- |
| Mapping to attribute metered usage to the customer. One customer can have zero |
| or more subjects, but one subject can only belong to one customer. |
| BillingEntitlementAccessResult: |
| type: object |
| required: |
| - type |
| - feature_key |
| - has_access |
| properties: |
| type: |
| allOf: |
| - $ref: '#/components/schemas/BillingEntitlementType' |
| description: The type of the entitlement. |
| example: static |
| readOnly: true |
| feature_key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The feature key of the entitlement. |
| example: available_models |
| readOnly: true |
| has_access: |
| type: boolean |
| description: |- |
| Whether the customer has access to the feature. Always true for `boolean` and |
| `static` entitlements. Depends on balance for `metered` entitlements. |
| example: true |
| readOnly: true |
| config: |
| type: string |
| description: |- |
| Only available for static entitlements. Config is the JSON parsable |
| configuration of the entitlement. Useful to describe per customer configuration. |
| example: '{ "availableModels": ["gpt-5", "gpt-4o"] }' |
| readOnly: true |
| additionalProperties: false |
| description: Entitlement access result. |
| BillingEntitlementType: |
| type: string |
| enum: |
| - metered |
| - static |
| - boolean |
| description: The type of the entitlement. |
| BillingFeatureLLMTokenType: |
| type: string |
| enum: |
| - input |
| - output |
| - cache_read |
| - cache_write |
| - reasoning |
| - request |
| - response |
| description: Token type for LLM cost lookup. |
| BillingFeatureLLMUnitCost: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - llm |
| description: The type discriminator for LLM unit cost. |
| provider_property: |
| type: string |
| description: |- |
| Meter group-by property that holds the LLM provider. Use this when the meter has |
| a group-by dimension for provider. Mutually exclusive with `provider`. |
| title: Provider property |
| provider: |
| type: string |
| description: |- |
| Static LLM provider value (e.g., "openai", "anthropic"). Use this when the |
| feature tracks a single provider. Mutually exclusive with `provider_property`. |
| title: Provider |
| model_property: |
| type: string |
| description: |- |
| Meter group-by property that holds the model ID. Use this when the meter has a |
| group-by dimension for model. Mutually exclusive with `model`. |
| title: Model property |
| model: |
| type: string |
| description: |- |
| Static model ID value (e.g., "gpt-4", "claude-3-5-sonnet"). Use this when the |
| feature tracks a single model. Mutually exclusive with `model_property`. |
| title: Model |
| token_type_property: |
| type: string |
| description: |- |
| Meter group-by property that holds the token type. Use this when the meter has a |
| group-by dimension for token type. Mutually exclusive with `token_type`. |
| title: Token type property |
| token_type: |
| allOf: |
| - $ref: '#/components/schemas/BillingFeatureLLMTokenType' |
| description: |- |
| Static token type value. Use this when the feature tracks a single token type |
| (e.g., only input tokens). `request` is an alias for `input`, `response` is an |
| alias for `output`. Mutually exclusive with `token_type_property`. |
| title: Token type |
| pricing: |
| allOf: |
| - $ref: '#/components/schemas/BillingFeatureLLMUnitCostPricing' |
| description: |- |
| Resolved per-token pricing from the LLM cost database. Populated in responses |
| when the provider and model can be determined, either from static values or from |
| meter group-by filters with exact matches. |
| title: Resolved pricing |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| LLM cost lookup configuration. Each dimension (provider, model, token type) can |
| be specified as either a static value or a meter group-by property name |
| (mutually exclusive). |
| BillingFeatureLLMUnitCostPricing: |
| type: object |
| required: |
| - input_per_token |
| - output_per_token |
| properties: |
| input_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cost per input token in USD. |
| title: Input per token |
| output_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cost per output token in USD. |
| title: Output per token |
| cache_read_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cost per cache read token in USD. |
| title: Cache read per token |
| reasoning_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cost per reasoning token in USD. |
| title: Reasoning per token |
| cache_write_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cost per cache write token in USD. |
| title: Cache write per token |
| additionalProperties: false |
| description: Resolved per-token pricing from the LLM cost database. |
| BillingFeatureManualUnitCost: |
| type: object |
| required: |
| - type |
| - amount |
| properties: |
| type: |
| type: string |
| enum: |
| - manual |
| description: The type discriminator for manual unit cost. |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Fixed per-unit cost amount in USD. |
| additionalProperties: false |
| description: A fixed per-unit cost amount. |
| BillingFeatureUnitCost: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingFeatureManualUnitCost' |
| - $ref: '#/components/schemas/BillingFeatureLLMUnitCost' |
| discriminator: |
| propertyName: type |
| mapping: |
| manual: '#/components/schemas/BillingFeatureManualUnitCost' |
| llm: '#/components/schemas/BillingFeatureLLMUnitCost' |
| description: |- |
| Per-unit cost configuration for a feature. Either a fixed manual amount or a |
| dynamic LLM cost lookup. |
| BillingInstallAppExternalInvoicing: |
| type: object |
| required: |
| - type |
| - name |
| - create_billing_profile |
| properties: |
| type: |
| type: string |
| enum: |
| - external_invoicing |
| description: Type of the app. |
| name: |
| type: string |
| description: Name of the app. |
| create_billing_profile: |
| type: boolean |
| description: |- |
| If true, a billing profile will be created for the app. The Stripe app will be |
| also set as the default billing profile if the current default is a Sandbox app. |
| additionalProperties: false |
| description: Base model for installing an app from the catalog. |
| BillingInstallAppRequest: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingInstallAppStripeWithApiKey' |
| - $ref: '#/components/schemas/BillingInstallAppSandbox' |
| - $ref: '#/components/schemas/BillingInstallAppExternalInvoicing' |
| discriminator: |
| propertyName: type |
| mapping: |
| stripe: '#/components/schemas/BillingInstallAppStripeWithApiKey' |
| sandbox: '#/components/schemas/BillingInstallAppSandbox' |
| external_invoicing: '#/components/schemas/BillingInstallAppExternalInvoicing' |
| description: Request to install an app from the catalog. |
| BillingInstallAppResponse: |
| type: object |
| required: |
| - app |
| - default_for_capability_types |
| properties: |
| app: |
| allOf: |
| - $ref: '#/components/schemas/BillingApp' |
| readOnly: true |
| default_for_capability_types: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingAppCapabilityType' |
| readOnly: true |
| additionalProperties: false |
| description: Response of the app install. |
| BillingInstallAppSandbox: |
| type: object |
| required: |
| - type |
| - name |
| - create_billing_profile |
| properties: |
| type: |
| type: string |
| enum: |
| - sandbox |
| description: Type of the app. |
| name: |
| type: string |
| description: Name of the app. |
| create_billing_profile: |
| type: boolean |
| description: |- |
| If true, a billing profile will be created for the app. The Stripe app will be |
| also set as the default billing profile if the current default is a Sandbox app. |
| additionalProperties: false |
| description: Base model for installing an app from the catalog. |
| BillingInstallAppStripeWithApiKey: |
| type: object |
| required: |
| - type |
| - name |
| - create_billing_profile |
| - api_key |
| properties: |
| type: |
| type: string |
| enum: |
| - stripe |
| description: Type of the app. |
| name: |
| type: string |
| description: Name of the app. |
| create_billing_profile: |
| type: boolean |
| description: |- |
| If true, a billing profile will be created for the app. The Stripe app will be |
| also set as the default billing profile if the current default is a Sandbox app. |
| api_key: |
| type: string |
| description: API key for the app. |
| additionalProperties: false |
| description: Model for installing an app from the catalog with an API key. |
| BillingInvoice: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingInvoiceStandard' |
| discriminator: |
| propertyName: type |
| mapping: |
| standard: '#/components/schemas/BillingInvoiceStandard' |
| description: |- |
| An invoice issued to a customer. |
| |
| The `type` field determines the concrete variant: |
|
|
| - `standard`: a standard invoice for charges owed. |
| BillingInvoiceAvailableActionDetails: |
| type: object |
| required: |
| - resulting_state |
| properties: |
| resulting_state: |
| type: string |
| description: The extended status the invoice will transition to after performing this action. |
| title: Resulting state |
| readOnly: true |
| additionalProperties: false |
| description: Details about an available invoice action including the resulting state. |
| BillingInvoiceAvailableActions: |
| type: object |
| properties: |
| advance: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' |
| description: Advance the invoice to the next workflow step. |
| title: Advance |
| readOnly: true |
| approve: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' |
| description: Approve the invoice for issuance. |
| title: Approve |
| readOnly: true |
| delete: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' |
| description: Delete the invoice. |
| title: Delete |
| readOnly: true |
| retry: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' |
| description: Retry a failed workflow step. |
| title: Retry |
| readOnly: true |
| snapshot_quantities: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActionDetails' |
| description: Snapshot the current usage quantities. |
| title: Snapshot quantities |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| The set of state-transition actions available for an invoice in its current |
| status. |
| |
| A field is present only when that action is permitted from the current state. |
| BillingInvoiceCustomer: |
| type: object |
| required: |
| - name |
| - id |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| usage_attribution: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerUsageAttribution' |
| description: Mapping to attribute metered usage to the customer by the event subject. |
| title: Usage Attribution |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/Address' |
| description: The billing address of the customer. Used for tax and invoicing. |
| title: Billing Address |
| id: |
| $ref: '#/components/schemas/ULID' |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| Optional external resource key for the customer. |
| |
| Omitted when the customer was created without a key. Unlike on the customer |
| resource itself, the key is optional here because the invoice snapshot may |
| predate or omit it. |
| additionalProperties: false |
| description: Snapshot of the customer's information at the time the invoice was issued. |
| BillingInvoiceDetailedLine: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - service_period |
| - totals |
| - category |
| - quantity |
| - unit_price |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The service period covered by this detailed line. |
| title: Service period |
| readOnly: true |
| totals: |
| allOf: |
| - $ref: '#/components/schemas/BillingTotals' |
| description: Aggregated financial totals for the detailed line. |
| title: Totals |
| readOnly: true |
| category: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceDetailedLineCostCategory' |
| description: The cost category of this detailed line. |
| title: Category |
| default: regular |
| readOnly: true |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineDiscounts' |
| description: Discounts applied to this detailed line. |
| title: Discounts |
| readOnly: true |
| credits_applied: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceLineCreditsApplied' |
| description: Credit applied to this detailed line. |
| title: Credit applied |
| readOnly: true |
| external_references: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' |
| description: External identifiers for this detailed line. |
| title: External references |
| readOnly: true |
| quantity: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The quantity of the detailed line. |
| title: Quantity |
| readOnly: true |
| unit_price: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The unit price of the detailed line. |
| title: Unit Price |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| A detailed (child) sub-line belonging to a parent invoice line. |
| |
| Detailed lines represent the individual flat-fee components that make up a |
| usage-based parent line after quantity snapshotting. |
| BillingInvoiceDetailedLineCostCategory: |
| type: string |
| enum: |
| - regular |
| - commitment |
| description: Cost category of a detailed invoice line item. |
| BillingInvoiceDiscountReason: |
| type: string |
| enum: |
| - maximum_spend |
| - ratecard_percentage |
| - ratecard_usage |
| description: The reason a discount was applied to an invoice line. |
| BillingInvoiceExternalReferences: |
| type: object |
| properties: |
| invoicing_id: |
| type: string |
| description: The ID assigned by the external invoicing app (e.g. Stripe invoice ID). |
| title: Invoicing ID |
| readOnly: true |
| payment_id: |
| type: string |
| description: The ID assigned by the external payment app (e.g. Stripe payment intent ID). |
| title: Payment ID |
| readOnly: true |
| additionalProperties: false |
| description: External identifiers assigned to an invoice by third-party systems. |
| BillingInvoiceLine: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingInvoiceStandardLine' |
| discriminator: |
| propertyName: type |
| mapping: |
| standard_line: '#/components/schemas/BillingInvoiceStandardLine' |
| description: |- |
| A top-level line item on an invoice. |
| |
| Each line represents a single charge, typically associated with a rate card from |
| a subscription. Detailed (child) lines are nested under `detailed_lines` when |
| present. |
| BillingInvoiceLineAmountDiscount: |
| type: object |
| required: |
| - id |
| - reason |
| - amount |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Unique identifier for the discount. |
| title: ID |
| readOnly: true |
| reason: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceDiscountReason' |
| description: The reason this discount was applied. |
| title: Reason |
| readOnly: true |
| description: |
| type: string |
| description: Optional human-readable description of the discount. |
| title: Description |
| readOnly: true |
| external_references: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' |
| description: External identifiers for this discount. |
| title: External references |
| readOnly: true |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The monetary amount deducted. |
| title: Amount |
| readOnly: true |
| additionalProperties: false |
| description: A monetary amount discount applied to an invoice line item. |
| BillingInvoiceLineCreditsApplied: |
| type: object |
| required: |
| - amount |
| properties: |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The monetary amount credited. |
| title: Amount |
| readOnly: true |
| description: |
| type: string |
| description: Optional human-readable description of the credit allocation. |
| title: Description |
| readOnly: true |
| additionalProperties: false |
| description: A credit allocation applied to an invoice line item. |
| BillingInvoiceLineDiscounts: |
| type: object |
| properties: |
| amount: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceLineAmountDiscount' |
| description: Monetary amount discounts (e.g. from maximum spend commitments). |
| title: Amount discounts |
| readOnly: true |
| usage: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceLineUsageDiscount' |
| description: Usage quantity discounts (e.g. free tier usage allowances). |
| title: Usage discounts |
| readOnly: true |
| additionalProperties: false |
| description: Discounts applied to an invoice line item. |
| BillingInvoiceLineExternalReferences: |
| type: object |
| properties: |
| invoicing_id: |
| type: string |
| description: The ID assigned by the external invoicing app. |
| title: Invoicing ID |
| readOnly: true |
| additionalProperties: false |
| description: External identifiers for an invoice line item assigned by third-party systems. |
| BillingInvoiceLineRateCard: |
| type: object |
| required: |
| - price |
| properties: |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price definition used to calculate charges for this line. |
| title: Price |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardTaxConfig' |
| description: Tax configuration snapshot for this line. |
| title: Tax config |
| feature_key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The feature key associated with this line's rate card. |
| title: Feature key |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardDiscounts' |
| description: Discount configuration from the rate card. |
| title: Discounts |
| additionalProperties: false |
| description: Rate card configuration snapshot for a usage-based invoice line. |
| BillingInvoiceLineUsageDiscount: |
| type: object |
| required: |
| - id |
| - reason |
| - quantity |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Unique identifier for the discount. |
| title: ID |
| readOnly: true |
| reason: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceDiscountReason' |
| description: The reason this discount was applied. |
| title: Reason |
| readOnly: true |
| description: |
| type: string |
| description: Optional human-readable description of the discount. |
| title: Description |
| readOnly: true |
| external_references: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' |
| description: External identifiers for this discount. |
| title: External references |
| readOnly: true |
| quantity: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The usage quantity deducted (in billing units). |
| title: Quantity |
| readOnly: true |
| additionalProperties: false |
| description: A usage quantity discount applied to an invoice line item. |
| BillingInvoiceNumber: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| InvoiceNumber is a unique identifier for the invoice, generated by the invoicing |
| app. |
| |
| The uniqueness depends on a lot of factors: |
|
|
| - app setting (unique per app or unique per customer) |
| - multiple app scenarios (multiple apps generating invoices with the same |
| prefix) |
| example: INV-2024-01-01-01 |
| BillingInvoiceStandard: |
| type: object |
| required: |
| - id |
| - created_at |
| - updated_at |
| - number |
| - currency |
| - supplier |
| - customer |
| - totals |
| - service_period |
| - type |
| - status |
| - status_details |
| - workflow |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| number: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceNumber' |
| description: Human-readable invoice number generated by the invoicing app. |
| title: Number |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Three-letter ISO 4217 currency code for the invoice. |
| title: Currency |
| readOnly: true |
| supplier: |
| allOf: |
| - $ref: '#/components/schemas/BillingSupplier' |
| description: |- |
| Snapshot of the supplier's contact information at the time the invoice was |
| issued. |
| title: Supplier |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceCustomer' |
| description: Snapshot of the customer's information at the time the invoice was issued. |
| title: Customer |
| totals: |
| allOf: |
| - $ref: '#/components/schemas/BillingTotals' |
| description: Aggregated financial totals for the invoice. |
| title: Totals |
| readOnly: true |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: |- |
| The service period covered by this invoice. |
| |
| For flat fee the service period can be empty which means `from` will be equals |
| to `to`. In other cases those fields will be filled with the actual service |
| period. |
| title: Service period |
| readOnly: true |
| validation_issues: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceValidationIssue' |
| description: |- |
| Validation issues found during invoice processing. |
| |
| Present only when there are one or more validation findings. An empty list is |
| omitted. |
| title: Validation issues |
| readOnly: true |
| external_references: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceExternalReferences' |
| description: External identifiers assigned to this invoice by third-party systems. |
| title: External references |
| readOnly: true |
| type: |
| type: string |
| enum: |
| - standard |
| description: Discriminator field identifying this as a standard invoice. |
| title: Type |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceStandardStatus' |
| description: Current lifecycle status of the invoice. |
| title: Status |
| readOnly: true |
| status_details: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceStatusDetails' |
| description: Detailed status information including available actions and workflow state. |
| title: Status details |
| readOnly: true |
| issued_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when the invoice was issued to the customer. |
| title: Issued at |
| readOnly: true |
| draft_until: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| Timestamp until which the invoice remains in draft state. |
| |
| The invoice advances automatically once this time is reached. |
| title: Draft until |
| readOnly: true |
| quantity_snapshotted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when usage quantities were last snapshotted for this invoice. |
| title: Quantity snapshotted at |
| readOnly: true |
| collection_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when collection was initiated for this invoice. |
| title: Collection at |
| readOnly: true |
| due_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when payment is due. |
| title: Due at |
| readOnly: true |
| sent_to_customer_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp when the invoice was sent to the customer. |
| title: Sent to customer at |
| readOnly: true |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceWorkflowSettings' |
| description: Workflow configuration snapshot captured at invoice creation time. |
| title: Workflow |
| lines: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceLine' |
| description: |- |
| Line items on this invoice. |
| |
| Always returned on single-resource GET; omitted on list endpoints unless |
| explicitly expanded. Editable via update: existing lines are matched by `id`, |
| lines without an `id` are created, and lines present on the invoice but omitted |
| from the update request are deleted. Detailed (child) lines are always computed |
| and cannot be edited directly. |
| title: Lines |
| additionalProperties: false |
| description: A standard invoice for charges owed by the customer. |
| BillingInvoiceStandardLine: |
| type: object |
| required: |
| - name |
| - created_at |
| - updated_at |
| - type |
| - lifecycle_controller |
| - service_period |
| - totals |
| - rate_card |
| - detailed_lines |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| ID of the line. |
| |
| Optional on update: omit to create a new line, or supply the ID of an existing |
| line to edit it. Existing lines omitted from an update's `lines` array are |
| deleted. |
| title: ID |
| type: |
| type: string |
| enum: |
| - standard_line |
| description: The type of charge this line item represents. |
| title: Type |
| lifecycle_controller: |
| allOf: |
| - $ref: '#/components/schemas/BillingLifecycleController' |
| description: |- |
| Indicates whether this line item's lifecycle is controlled by OpenMeter or |
| manually overridden by the API user. |
| title: Lifecycle controller |
| readOnly: true |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: |- |
| The service period covered by this invoice, spanning the earliest line start to |
| the latest line end across all of its lines. |
| |
| For an invoice with no lines the period is empty, which means `from` will be |
| equal to `to`. |
| title: Service period |
| totals: |
| allOf: |
| - $ref: '#/components/schemas/BillingTotals' |
| description: Aggregated financial totals for the line item. |
| title: Totals |
| readOnly: true |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineDiscounts' |
| description: Discounts applied to this line item. |
| title: Discounts |
| readOnly: true |
| credits_applied: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceLineCreditsApplied' |
| description: Credit applied to this line item. |
| title: Credit applied |
| readOnly: true |
| external_references: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineExternalReferences' |
| description: External identifiers for this line item assigned by third-party systems. |
| title: External references |
| readOnly: true |
| subscription: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionReference' |
| description: Reference to the subscription item that generated this line. |
| title: Subscription reference |
| readOnly: true |
| rate_card: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceLineRateCard' |
| description: The rate card configuration snapshot used to price this line item. |
| title: Rate card |
| detailed_lines: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoiceDetailedLine' |
| description: |- |
| Detailed sub-lines that this line has been broken down into. |
| |
| Present when line has individual details. |
| title: Detailed lines |
| readOnly: true |
| charge: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeReference' |
| description: Reference to the charge associated with this line item. |
| title: Charge |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| A top-level line item on an invoice. |
| |
| Each line represents a single charge, typically associated with a rate card from |
| a subscription. Detailed (child) lines are nested under `detailed_lines` when |
| present. |
| BillingInvoiceStandardStatus: |
| type: string |
| enum: |
| - draft |
| - issuing |
| - issued |
| - payment_processing |
| - overdue |
| - paid |
| - uncollectible |
| - voided |
| description: Lifecycle status of a standard invoice. |
| BillingInvoiceStatusDetails: |
| type: object |
| required: |
| - immutable |
| - failed |
| - extended_status |
| - available_actions |
| properties: |
| immutable: |
| type: boolean |
| description: Whether the invoice is immutable (i.e. cannot be modified or deleted). |
| title: Immutable |
| readOnly: true |
| failed: |
| type: boolean |
| description: Whether the invoice is in a failed state. |
| title: Failed |
| readOnly: true |
| extended_status: |
| type: string |
| description: |- |
| Fine-grained internal status string providing additional workflow detail beyond |
| the top-level status enum. |
| title: Extended status |
| readOnly: true |
| available_actions: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceAvailableActions' |
| description: The set of state-transition actions currently available for this invoice. |
| title: Available actions |
| readOnly: true |
| additionalProperties: false |
| description: Detailed status information for a standard invoice. |
| BillingInvoiceValidationIssue: |
| type: object |
| required: |
| - code |
| - message |
| - severity |
| properties: |
| code: |
| type: string |
| description: Machine-readable error code. |
| title: Code |
| readOnly: true |
| message: |
| type: string |
| description: Human-readable description of the error. |
| title: Message |
| readOnly: true |
| attributes: |
| type: object |
| additionalProperties: {} |
| description: Additional structured context. |
| title: Attributes |
| readOnly: true |
| severity: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceValidationIssueSeverity' |
| description: Severity of the validation issue. |
| title: Severity |
| readOnly: true |
| field: |
| type: string |
| description: |- |
| JSON path to the field that caused this validation issue, if applicable. |
| |
| For example: `lines/0/rate_card/price`. |
| title: Field path |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| A validation issue found during invoice processing. |
| |
| Converges on the same structure used by plan and subscription validation errors: |
| a machine-readable `code`, a human-readable `message`, optional structured |
| `attributes`, plus a `severity` and optional `field` path. |
| BillingInvoiceValidationIssueSeverity: |
| type: string |
| enum: |
| - critical |
| - warning |
| description: Severity level of an invoice validation issue. |
| BillingInvoiceWorkflow: |
| type: object |
| properties: |
| invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceWorkflowInvoicingSettings' |
| description: Invoicing settings for this invoice. |
| title: Invoicing settings |
| payment: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowPaymentSettings' |
| description: Payment settings for this invoice. |
| title: Payment settings |
| additionalProperties: false |
| description: |- |
| Invoice-level snapshot of the workflow configuration. |
| |
| Contains only the settings that are meaningful for an already-created invoice: |
| invoicing behaviour and payment settings. Collection alignment and tax policy |
| are gather-time / profile-wide concerns and are not included. |
| BillingInvoiceWorkflowAppsReferences: |
| type: object |
| required: |
| - tax |
| - invoicing |
| - payment |
| properties: |
| tax: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The tax app used for this workflow |
| readOnly: true |
| invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The invoicing app used for this workflow |
| readOnly: true |
| payment: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The payment app used for this workflow |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| BillingInvoiceWorkflowAppsReferences represents the references (id) to the apps |
| used by a billing profile |
| BillingInvoiceWorkflowInvoicingSettings: |
| type: object |
| properties: |
| auto_advance: |
| type: boolean |
| description: Whether to automatically issue the invoice after the draft_period has passed. |
| default: true |
| draft_period: |
| type: string |
| format: ISO8601 |
| description: The period for the invoice to be kept in draft status for manual reviews. |
| example: P1D |
| default: P0D |
| due_after: |
| type: string |
| format: ISO8601 |
| description: The period after which the invoice is considered overdue if not paid. |
| example: P30D |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Invoice-level invoicing settings. |
| |
| A subset of BillingWorkflowInvoicingSettings limited to fields that are |
| meaningful per-invoice. progressive_billing is omitted as it is a gather-time / |
| profile-level decision. |
| BillingInvoiceWorkflowSettings: |
| type: object |
| required: |
| - source_billing_profile |
| - workflow |
| properties: |
| apps: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceWorkflowAppsReferences' |
| description: The apps that will be used to orchestrate the invoice's workflow. |
| title: Application that generated the invoice |
| readOnly: true |
| source_billing_profile: |
| allOf: |
| - $ref: '#/components/schemas/BillingProfileReference' |
| description: The billing profile that was the source of this workflow snapshot. |
| title: Source billing profile |
| readOnly: true |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/BillingInvoiceWorkflow' |
| description: |- |
| The workflow configuration that was active when the invoice was created. |
| |
| Only the fields that are meaningful at the per-invoice level are included: |
| invoicing behaviour (auto-advance, draft period) and payment settings |
| (collection method, due date). Profile-wide settings such as collection |
| alignment, progressive billing, and tax policy are omitted. |
| title: Workflow config |
| additionalProperties: false |
| description: Snapshot of the billing workflow configuration captured at invoice creation. |
| BillingLifecycleController: |
| type: string |
| enum: |
| - system |
| - manual |
| description: |- |
| Identifies whether a resource lifecycle is controlled by OpenMeter or manually |
| overridden by the API user. |
| |
| Values: |
|
|
| - `system`: The resource lifecycle is controlled by OpenMeter. |
| - `manual`: The resource lifecycle was manually overridden by the API user. |
| title: Lifecycle controller |
| BillingParty: |
| type: object |
| properties: |
| id: |
| type: string |
| description: Unique identifier for the party. |
| readOnly: true |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: An optional unique key of the party. |
| name: |
| type: string |
| description: Legal name or representation of the party. |
| tax_id: |
| allOf: |
| - $ref: '#/components/schemas/BillingPartyTaxIdentity' |
| description: |- |
| The entity's legal identification used for tax purposes. They may have other |
| numbers, but we're only interested in those valid for tax purposes. |
| addresses: |
| allOf: |
| - $ref: '#/components/schemas/BillingPartyAddresses' |
| description: Address for where information should be sent if needed. |
| additionalProperties: false |
| description: Party represents a person or business entity. |
| BillingPartyAddresses: |
| type: object |
| required: |
| - billing_address |
| properties: |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/Address' |
| description: Billing address. |
| additionalProperties: false |
| description: A collection of addresses for the party. |
| BillingPartyTaxIdentity: |
| type: object |
| properties: |
| code: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxIdentificationCode' |
| description: Normalized tax identification code shown on the original identity document. |
| additionalProperties: false |
| description: |- |
| Identity stores the details required to identify an entity for tax purposes in a |
| specific country. |
| BillingPlan: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| - version |
| - currency |
| - billing_cadence |
| - status |
| - phases |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| A key is a semi-unique string that is used to identify the plan. It is used to |
| reference the latest `active` version of the plan and is unique with the version |
| number. |
| title: Key |
| version: |
| type: integer |
| minimum: 1 |
| description: |- |
| Plans are versioned to allow you to make changes without affecting running |
| subscriptions. |
| title: Version |
| default: 1 |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency code of the plan. |
| title: Currency |
| billing_cadence: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: The billing cadence for subscriptions using this plan. |
| title: Billing cadence |
| pro_rating_enabled: |
| type: boolean |
| description: Whether pro-rating is enabled for this plan. |
| title: Pro-rating enabled |
| default: true |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The date and time when the plan becomes `active`. When not specified, the plan |
| is in `draft` status. |
| title: Effective start date |
| readOnly: true |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| A scheduled date and time when the plan becomes `archived`. When not specified, |
| the plan is in `active` status indefinitely. |
| title: Effective end date |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingPlanStatus' |
| description: |- |
| The status of the plan. Computed based on the effective start and end dates: |
| |
| - `draft`: `effective_from` is not set. |
| - `scheduled`: `now < effective_from`. |
| - `active`: `effective_from <= now` and (`effective_to` is not set or |
| `now < effective_to`). |
| - `archived`: `effective_to <= now`. |
| title: Status |
| readOnly: true |
| phases: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPlanPhase' |
| minItems: 1 |
| description: |- |
| The plan phases define the pricing ramp for a subscription. A phase switch |
| occurs only at the end of a billing period. At least one phase is required. |
| title: Plan phases |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: |- |
| Settlement mode for plan. |
| |
| Values: |
|
|
| - `credit_then_invoice`: Credits are applied first, then any remainder is |
| invoiced. |
| - `credit_only`: Usage is settled exclusively against credits. |
| title: Settlement Mode |
| default: credit_then_invoice |
| readOnly: true |
| validation_errors: |
| type: array |
| items: |
| $ref: '#/components/schemas/ProductCatalogValidationError' |
| description: |- |
| List of validation errors in `draft` state that prevent the plan from being |
| published. |
| title: Validation errors |
| readOnly: true |
| additionalProperties: false |
| description: Plans provide a template for subscriptions. |
| BillingPlanPhase: |
| type: object |
| required: |
| - name |
| - key |
| - rate_cards |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| duration: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: |- |
| The duration of the phase. When not specified, the phase runs indefinitely. Only |
| the last phase may omit the duration. |
| title: Duration |
| rate_cards: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingRateCard' |
| description: The rate cards of the plan. |
| title: Rate cards |
| additionalProperties: false |
| description: |- |
| The plan phase or pricing ramp allows changing a plan's rate cards over time as |
| a subscription progresses. |
| BillingPlanStatus: |
| type: string |
| enum: |
| - draft |
| - active |
| - archived |
| - scheduled |
| description: |- |
| The status of a plan. |
| |
| - `draft`: The plan has not yet been published and can be edited. |
| - `active`: The plan is published and can be used in subscriptions. |
| - `archived`: The plan is no longer available for use. |
| - `scheduled`: The plan is scheduled to be published at a future date. |
| BillingPrice: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingPriceFree' |
| - $ref: '#/components/schemas/BillingPriceFlat' |
| - $ref: '#/components/schemas/BillingPriceUnit' |
| - $ref: '#/components/schemas/BillingPriceGraduated' |
| - $ref: '#/components/schemas/BillingPriceVolume' |
| discriminator: |
| propertyName: type |
| mapping: |
| free: '#/components/schemas/BillingPriceFree' |
| flat: '#/components/schemas/BillingPriceFlat' |
| unit: '#/components/schemas/BillingPriceUnit' |
| graduated: '#/components/schemas/BillingPriceGraduated' |
| volume: '#/components/schemas/BillingPriceVolume' |
| description: Price. |
| BillingPriceFlat: |
| type: object |
| required: |
| - type |
| - amount |
| properties: |
| type: |
| type: string |
| enum: |
| - flat |
| description: The type of the price. |
| title: Type |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The amount of the flat price. |
| title: Amount |
| additionalProperties: false |
| description: Flat price. |
| BillingPriceFree: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - free |
| description: The type of the price. |
| title: Type |
| additionalProperties: false |
| description: Free price. |
| BillingPriceGraduated: |
| type: object |
| required: |
| - type |
| - tiers |
| properties: |
| type: |
| type: string |
| enum: |
| - graduated |
| description: The type of the price. |
| title: Type |
| tiers: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPriceTier' |
| minItems: 1 |
| description: The tiers of the graduated price. At least one tier is required. |
| title: Tiers |
| additionalProperties: false |
| description: |- |
| Graduated tiered price. |
| |
| Each tier's rate applies only to the usage within that tier. Pricing can change |
| as cumulative usage crosses tier boundaries. |
|
|
| When UnitConfig is present on the rate card, tier boundaries (up_to_amount) are |
| expressed in converted billing units. |
| BillingPricePaymentTerm: |
| type: string |
| enum: |
| - in_advance |
| - in_arrears |
| description: The payment term of a flat price. |
| BillingPriceTier: |
| type: object |
| properties: |
| up_to_amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Up to and including this quantity will be contained in the tier. If undefined, |
| the tier is open-ended (the last tier). |
| title: Up to quantity |
| flat_price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPriceFlat' |
| description: The flat price component of the tier. Charged once when the tier is entered. |
| title: Flat price component |
| unit_price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPriceUnit' |
| description: The unit price component of the tier. Charged per billing unit within the tier. |
| title: Unit price component |
| additionalProperties: false |
| description: |- |
| A price tier used in graduated and volume pricing. |
| |
| At least one price component (flat_price or unit_price) must be set. When |
| UnitConfig is present on the rate card, up_to_amount is expressed in converted |
| billing units. |
| BillingPriceUnit: |
| type: object |
| required: |
| - type |
| - amount |
| properties: |
| type: |
| type: string |
| enum: |
| - unit |
| description: The type of the price. |
| title: Type |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The amount of the unit price. |
| title: Amount |
| additionalProperties: false |
| description: |- |
| Unit price. |
| |
| Charges a fixed rate per billing unit. When UnitConfig is present on the rate |
| card, billing units are the converted quantities (e.g. GB instead of bytes). |
| BillingPriceVolume: |
| type: object |
| required: |
| - type |
| - tiers |
| properties: |
| type: |
| type: string |
| enum: |
| - volume |
| description: The type of the price. |
| title: Type |
| tiers: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPriceTier' |
| minItems: 1 |
| description: The tiers of the volume price. At least one tier is required. |
| title: Tiers |
| additionalProperties: false |
| description: |- |
| Volume tiered price. |
| |
| The maximum quantity within a period determines the per-unit price for all units |
| in that period. |
|
|
| When UnitConfig is present on the rate card, tier boundaries (up_to_amount) are |
| expressed in converted billing units. |
| BillingProfile: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - supplier |
| - workflow |
| - apps |
| - default |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| supplier: |
| allOf: |
| - $ref: '#/components/schemas/BillingParty' |
| description: |- |
| The name and contact information for the supplier this billing profile |
| represents |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflow' |
| description: The billing workflow settings for this profile |
| apps: |
| allOf: |
| - $ref: '#/components/schemas/BillingProfileAppReferences' |
| description: The applications used by this billing profile. |
| default: |
| type: boolean |
| description: Whether this is the default profile. |
| additionalProperties: false |
| description: |- |
| Billing profiles contain the settings for billing and controls invoice |
| generation. |
| BillingProfileAppReferences: |
| type: object |
| required: |
| - tax |
| - invoicing |
| - payment |
| properties: |
| tax: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The tax app used for this workflow. |
| invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The invoicing app used for this workflow. |
| payment: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppReference' |
| description: The payment app used for this workflow. |
| additionalProperties: false |
| description: References to the applications used by a billing profile. |
| BillingProfilePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingProfile' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| BillingProfileReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the billing profile. |
| additionalProperties: false |
| description: Billing profile reference. |
| BillingRateCard: |
| type: object |
| required: |
| - name |
| - key |
| - price |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| feature: |
| allOf: |
| - $ref: '#/components/schemas/FeatureReference' |
| description: The feature associated with the rate card. |
| title: Feature reference |
| billing_cadence: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: |- |
| The billing cadence of the rate card. When null, the charge is one-time |
| (non-recurring). Only valid for flat prices. |
| title: Billing cadence |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price of the rate card. |
| title: Price |
| unit_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingUnitConfig' |
| description: |- |
| Unit conversion configuration for the rate card. |
| |
| Synthesized on read for plans authored with v1 dynamic or package prices: |
| dynamic prices map to a unit price with a multiply unit config, and package |
| prices map to a unit price with a divide unit config. |
|
|
| Accepted on create and update only when the UnitConfig feature is enabled on the |
| deployment; otherwise rejected. |
| title: Unit config |
| payment_term: |
| allOf: |
| - $ref: '#/components/schemas/BillingPricePaymentTerm' |
| description: |- |
| The payment term of the rate card. In advance payment term can only be used for |
| flat prices. |
| title: Payment term |
| default: in_arrears |
| commitments: |
| allOf: |
| - $ref: '#/components/schemas/BillingSpendCommitments' |
| description: |- |
| Spend commitments for this rate card. Only applicable to usage-based prices |
| (unit, graduated, volume). |
| title: Commitments |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardDiscounts' |
| description: The discounts of the rate card. |
| title: Discounts |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardTaxConfig' |
| description: The tax config of the rate card. |
| title: Tax config |
| entitlement: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardEntitlement' |
| description: |- |
| The entitlement template granted to subscribers of a plan or addon containing |
| this rate card. Requires `feature` to be set. |
| title: Entitlement template |
| additionalProperties: false |
| description: A rate card defines the pricing and entitlement of a feature or service. |
| BillingRateCardBooleanEntitlement: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - boolean |
| description: The type of the entitlement template. |
| title: Type |
| additionalProperties: false |
| description: The entitlement template of a boolean entitlement. |
| BillingRateCardDiscounts: |
| type: object |
| properties: |
| percentage: |
| type: number |
| minimum: 0 |
| maximum: 100 |
| description: Percentage discount applied to the price (0–100). |
| usage: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Number of usage units granted free before billing starts. Only applies to |
| usage-based lines (not flat fees). Usage is treated as zero until this amount is |
| exhausted. |
| additionalProperties: false |
| description: Discount configuration for a rate card. |
| BillingRateCardEntitlement: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingRateCardMeteredEntitlement' |
| - $ref: '#/components/schemas/BillingRateCardStaticEntitlement' |
| - $ref: '#/components/schemas/BillingRateCardBooleanEntitlement' |
| discriminator: |
| propertyName: type |
| mapping: |
| metered: '#/components/schemas/BillingRateCardMeteredEntitlement' |
| static: '#/components/schemas/BillingRateCardStaticEntitlement' |
| boolean: '#/components/schemas/BillingRateCardBooleanEntitlement' |
| description: |- |
| Entitlement template configured on a rate card. The feature is taken from the |
| rate card itself, so it is omitted here. |
| BillingRateCardMeteredEntitlement: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - metered |
| description: The type of the entitlement template. |
| title: Type |
| is_soft_limit: |
| type: boolean |
| description: |- |
| If soft limit is true, the subject can use the feature even if the entitlement |
| is exhausted; access remains granted. |
| title: Soft limit |
| default: false |
| limit: |
| type: number |
| format: double |
| minimum: 0 |
| description: |- |
| The amount of usage granted each usage period, in the feature's unit. Usage is |
| counted against this allowance and the balance resets every usage period. When |
| `is_soft_limit` is true the subject keeps access after the limit is reached; |
| otherwise access is denied once the allowance is exhausted. |
| title: Usage limit |
| usage_period: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: |- |
| The reset interval of the metered entitlement in ISO8601 format. Defaults to the |
| billing cadence of the rate card. |
| title: Usage period |
| additionalProperties: false |
| description: The entitlement template of a metered entitlement. |
| BillingRateCardProrationConfiguration: |
| type: object |
| required: |
| - mode |
| properties: |
| mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardProrationMode' |
| description: The proration mode of the rate card. |
| title: Proration mode |
| additionalProperties: false |
| description: The proration configuration of the rate card. |
| BillingRateCardProrationMode: |
| type: string |
| enum: |
| - no_proration |
| - prorate_prices |
| description: |- |
| The proration mode of the rate card. |
| |
| Values: |
|
|
| - `no_proration`: No proration. |
| - `prorate_prices`: Prorate the price based on the time remaining in the billing |
| period. |
| BillingRateCardStaticEntitlement: |
| type: object |
| required: |
| - type |
| - config |
| properties: |
| type: |
| type: string |
| enum: |
| - static |
| description: The type of the entitlement template. |
| title: Type |
| config: |
| description: |- |
| The entitlement config as a JSON object. Returned when checking entitlement |
| access; useful for configuring fine-grained access settings implemented in your |
| own system. |
| title: Config |
| additionalProperties: false |
| description: The entitlement template of a static entitlement. |
| BillingRateCardTaxConfig: |
| type: object |
| required: |
| - code |
| properties: |
| behavior: |
| $ref: '#/components/schemas/BillingTaxBehavior' |
| code: |
| $ref: '#/components/schemas/TaxCodeReference' |
| additionalProperties: false |
| description: The tax config of the rate card. |
| BillingSettlementMode: |
| type: string |
| enum: |
| - credit_then_invoice |
| - credit_only |
| description: |- |
| Settlement mode for billing. |
| |
| Values: |
|
|
| - `credit_then_invoice`: Credits are applied first, then any remainder is |
| invoiced. |
| - `credit_only`: Usage is settled exclusively against credits. |
| title: Settlement mode |
| BillingSpendCommitments: |
| type: object |
| properties: |
| minimum_amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The customer is committed to spend at least the amount. |
| title: Minimum amount |
| maximum_amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The customer is limited to spend at most the amount. |
| title: Maximum amount |
| additionalProperties: false |
| description: |- |
| Spend commitments for a rate card. The customer is committed to spend at least |
| the minimum amount and at most the maximum amount. |
| BillingSubscription: |
| type: object |
| required: |
| - id |
| - created_at |
| - updated_at |
| - customer_id |
| - billing_anchor |
| - status |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| customer_id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The customer ID of the subscription. |
| title: Customer ID |
| readOnly: true |
| plan_id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The plan ID of the subscription. Set if subscription is created from a plan. |
| title: Plan ID |
| readOnly: true |
| billing_anchor: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| A billing anchor is the fixed point in time that determines the subscription's |
| recurring billing cycle. It affects when charges occur and how prorations are |
| calculated. Common anchors: |
| |
| - Calendar month (1st of each month): `2025-01-01T00:00:00Z` |
| - Subscription anniversary (day customer signed up) |
| - Custom date (customer-specified day) |
| title: Billing anchor |
| readOnly: true |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionStatus' |
| description: The status of the subscription. |
| title: Status |
| readOnly: true |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: |- |
| Settlement mode for billing. |
| |
| Values: |
|
|
| - `credit_then_invoice`: Credits are applied first, then any remainder is |
| invoiced. |
| - `credit_only`: Usage is settled exclusively against credits. |
| title: Settlement Mode |
| additionalProperties: false |
| description: Subscription. |
| BillingSubscriptionCancel: |
| type: object |
| properties: |
| timing: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionEditTiming' |
| description: If not provided the subscription is canceled immediately. |
| default: immediate |
| additionalProperties: false |
| description: Request for canceling a subscription. |
| BillingSubscriptionChange: |
| type: object |
| required: |
| - customer |
| - plan |
| - timing |
| properties: |
| labels: |
| $ref: '#/components/schemas/Labels' |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: |- |
| Settlement mode for billing. |
| |
| Values: |
|
|
| - `credit_then_invoice`: Credits are applied first, then any remainder is |
| invoiced. |
| - `credit_only`: Usage is settled exclusively against credits. |
| title: Settlement Mode |
| customer: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| The ID of the customer to create the subscription for. |
| |
| Either customer ID or customer key must be provided. If both are provided, the |
| ID will be used. |
| title: Customer ID |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| The key of the customer to create the subscription for. |
| |
| Either customer ID or customer key must be provided. If both are provided, the |
| ID will be used. |
| title: Customer Key |
| additionalProperties: false |
| description: The customer to create the subscription for. |
| plan: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| The plan ID of the subscription. Set if subscription is created from a plan. |
| |
| ID or Key of the plan is required if creating a subscription from a plan. If |
| both are provided, the ID will be used. |
| title: Plan ID |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| The plan Key of the subscription, if any. Set if subscription is created from a |
| plan. |
| |
| ID or Key of the plan is required if creating a subscription from a plan. If |
| both are provided, the ID will be used. |
| title: Plan Key |
| version: |
| type: integer |
| description: |- |
| The plan version of the subscription, if any. If not provided, the latest |
| version of the plan will be used. |
| title: Plan Version |
| additionalProperties: false |
| description: The plan reference of the subscription. |
| billing_anchor: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| A billing anchor is the fixed point in time that determines the subscription's |
| recurring billing cycle. It affects when charges occur and how prorations are |
| calculated. Common anchors: |
| |
| - Calendar month (1st of each month): `2025-01-01T00:00:00Z` |
| - Subscription anniversary (day customer signed up) |
| - Custom date (customer-specified day) |
|
|
| If not provided, the subscription will be created with the subscription's |
| creation time as the billing anchor. |
| title: Billing anchor |
| timing: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionEditTiming' |
| description: |- |
| Timing configuration for the change, when the change should take effect. For |
| changing a subscription, the accepted values depend on the subscription |
| configuration. |
| additionalProperties: false |
| description: Request for changing a subscription. |
| BillingSubscriptionChangeResponse: |
| type: object |
| required: |
| - current |
| - next |
| properties: |
| current: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscription' |
| description: The current subscription before the change. |
| next: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscription' |
| description: The new state of the subscription after the change. |
| additionalProperties: false |
| description: Response for changing a subscription. |
| BillingSubscriptionCreate: |
| type: object |
| required: |
| - customer |
| - plan |
| properties: |
| labels: |
| $ref: '#/components/schemas/Labels' |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: |- |
| Settlement mode for billing. |
| |
| Values: |
|
|
| - `credit_then_invoice`: Credits are applied first, then any remainder is |
| invoiced. |
| - `credit_only`: Usage is settled exclusively against credits. |
| title: Settlement Mode |
| customer: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| The ID of the customer to create the subscription for. |
| |
| Either customer ID or customer key must be provided. If both are provided, the |
| ID will be used. |
| title: Customer ID |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| The key of the customer to create the subscription for. |
| |
| Either customer ID or customer key must be provided. If both are provided, the |
| ID will be used. |
| title: Customer Key |
| additionalProperties: false |
| description: The customer to create the subscription for. |
| plan: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| The plan ID of the subscription. Set if subscription is created from a plan. |
| |
| ID or Key of the plan is required if creating a subscription from a plan. If |
| both are provided, the ID will be used. |
| title: Plan ID |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| The plan Key of the subscription, if any. Set if subscription is created from a |
| plan. |
| |
| ID or Key of the plan is required if creating a subscription from a plan. If |
| both are provided, the ID will be used. |
| title: Plan Key |
| version: |
| type: integer |
| description: |- |
| The plan version of the subscription, if any. If not provided, the latest |
| version of the plan will be used. |
| title: Plan Version |
| additionalProperties: false |
| description: The plan reference of the subscription. |
| billing_anchor: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| A billing anchor is the fixed point in time that determines the subscription's |
| recurring billing cycle. It affects when charges occur and how prorations are |
| calculated. Common anchors: |
| |
| - Calendar month (1st of each month): `2025-01-01T00:00:00Z` |
| - Subscription anniversary (day customer signed up) |
| - Custom date (customer-specified day) |
|
|
| If not provided, the subscription will be created with the subscription's |
| creation time as the billing anchor. |
| title: Billing anchor |
| additionalProperties: false |
| description: Subscription create request. |
| BillingSubscriptionEditTiming: |
| oneOf: |
| - $ref: '#/components/schemas/BillingSubscriptionEditTimingEnum' |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| Subscription edit timing defined when the changes should take effect. If the |
| provided configuration is not supported by the subscription, an error will be |
| returned. |
| example: immediate |
| BillingSubscriptionEditTimingEnum: |
| type: string |
| enum: |
| - immediate |
| - next_billing_cycle |
| description: |- |
| Subscription edit timing. When immediate, the requested changes take effect |
| immediately. When next_billing_cycle, the requested changes take effect at the |
| next billing cycle. |
| BillingSubscriptionReference: |
| type: object |
| required: |
| - id |
| - phase |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the subscription. |
| title: Subscription ID |
| readOnly: true |
| phase: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the phase. |
| title: Phase ID |
| readOnly: true |
| item: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the item. |
| title: Item ID |
| readOnly: true |
| required: |
| - id |
| additionalProperties: false |
| description: The item of the phase. |
| title: Item ID |
| readOnly: true |
| required: |
| - id |
| - item |
| additionalProperties: false |
| description: The phase of the subscription. |
| title: Phase ID |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Subscription reference represents a reference to the specific subscription item |
| this entity represents. |
| BillingSubscriptionStatus: |
| type: string |
| enum: |
| - active |
| - inactive |
| - canceled |
| - scheduled |
| description: Subscription status. |
| BillingSupplier: |
| type: object |
| properties: |
| name: |
| type: string |
| description: Legal name or representation of the party. |
| tax_id: |
| allOf: |
| - $ref: '#/components/schemas/BillingPartyTaxIdentity' |
| description: |- |
| The entity's legal identification used for tax purposes. They may have other |
| numbers, but we're only interested in those valid for tax purposes. |
| addresses: |
| allOf: |
| - $ref: '#/components/schemas/BillingPartyAddresses' |
| description: Address for where information should be sent if needed. |
| id: |
| type: string |
| description: Unique identifier for the party. |
| additionalProperties: false |
| description: |- |
| Snapshot of the supplier's information at the time the invoice was issued. |
| |
| Structurally a read-only subset of `BillingParty` (the type configured on the |
| billing profile), so the snapshot stays aligned with the source. `key` is |
| omitted because it is not part of the snapshotted supplier data. |
| BillingTaxBehavior: |
| type: string |
| enum: |
| - inclusive |
| - exclusive |
| description: |- |
| Tax behavior. |
| |
| This enum is used to specify whether tax is included in the price or excluded |
| from the price. |
| BillingTaxCode: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| - app_mappings |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| app_mappings: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingTaxCodeAppMapping' |
| description: Mapping of app types to tax codes. |
| title: App type to tax code mappings |
| additionalProperties: false |
| description: Tax codes by provider. |
| BillingTaxCodeAppMapping: |
| type: object |
| required: |
| - app_type |
| - tax_code |
| properties: |
| app_type: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppType' |
| description: The app type that the tax code is associated with. |
| title: App type |
| tax_code: |
| type: string |
| description: Tax code. |
| title: Tax code |
| additionalProperties: false |
| description: Mapping of app types to tax codes. |
| BillingTaxConfig: |
| type: object |
| properties: |
| behavior: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxBehavior' |
| description: |- |
| Tax behavior. |
| |
| If not specified the billing profile is used to determine the tax behavior. If |
| not specified in the billing profile, the provider's default behavior is used. |
| title: Tax behavior |
| stripe: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfigStripe' |
| description: Stripe tax config. |
| title: Stripe tax config |
| deprecated: true |
| external_invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfigExternalInvoicing' |
| description: External invoicing tax config. |
| title: External invoicing tax config |
| deprecated: true |
| tax_code_id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Tax code ID. |
| title: Tax code ID |
| deprecated: true |
| tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: |- |
| Tax code reference. |
| |
| When both `tax_code` and `tax_code_id` are provided, `tax_code` takes |
| precedence. When `stripe.code` is also provided, `tax_code` still wins and |
| `stripe.code` is ignored. |
| title: Tax code |
| additionalProperties: false |
| description: Set of provider specific tax configs. |
| BillingTaxConfigExternalInvoicing: |
| type: object |
| required: |
| - code |
| properties: |
| code: |
| type: string |
| maxLength: 64 |
| description: The tax code should be interpreted by the external invoicing provider. |
| title: Tax code |
| additionalProperties: false |
| description: External invoicing tax config. |
| BillingTaxConfigStripe: |
| type: object |
| required: |
| - code |
| properties: |
| code: |
| type: string |
| pattern: ^txcd_\d{8}$ |
| description: Product [tax code](https://docs.stripe.com/tax/tax-codes). |
| title: Tax code |
| example: txcd_10000000 |
| additionalProperties: false |
| description: The tax config for Stripe. |
| BillingTaxIdentificationCode: |
| type: string |
| minLength: 1 |
| maxLength: 32 |
| description: |- |
| Tax identifier code is a normalized tax code shown on the original identity |
| document. |
| BillingTotals: |
| type: object |
| required: |
| - amount |
| - taxes_total |
| - taxes_inclusive_total |
| - taxes_exclusive_total |
| - charges_total |
| - discounts_total |
| - credits_total |
| - total |
| properties: |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total value of the resource before taxes, discounts and commitments. |
| title: Amount |
| readOnly: true |
| taxes_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total tax amount applied to the resource. |
| title: Taxes total |
| readOnly: true |
| taxes_inclusive_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total tax amount already included in the resource amount. |
| title: Inclusive taxes total |
| readOnly: true |
| taxes_exclusive_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total tax amount added on top of the resource amount. |
| title: Exclusive taxes total |
| readOnly: true |
| charges_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total amount contributed by additional charges. |
| title: Charges total |
| readOnly: true |
| discounts_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total amount deducted through discounts. |
| title: Discounts total |
| readOnly: true |
| credits_total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The total amount deducted through credits before taxes are applied. |
| title: Credits total |
| readOnly: true |
| total: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The final total value of the resource after taxes, discounts and commitments. |
| title: Total |
| readOnly: true |
| additionalProperties: false |
| description: Totals contains the summaries of all calculations for a billing resource. |
| BillingUnitConfig: |
| type: object |
| required: |
| - operation |
| - conversion_factor |
| properties: |
| operation: |
| allOf: |
| - $ref: '#/components/schemas/BillingUnitConfigOperation' |
| description: The arithmetic operation to apply to the raw metered quantity. |
| title: Conversion operation |
| conversion_factor: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| The factor used in the conversion operation. |
| |
| - For `divide`: `converted = raw / conversionFactor`. |
| - For `multiply`: `converted = raw × conversionFactor`. |
|
|
| Must be a positive non-zero value. |
| title: Conversion factor |
| rounding: |
| allOf: |
| - $ref: '#/components/schemas/BillingUnitConfigRoundingMode' |
| description: |- |
| The rounding mode applied to the converted quantity for invoicing. |
| |
| Defaults to none (no rounding). Entitlement checks always use the precise |
| (unrounded) value. |
| title: Rounding mode |
| default: none |
| precision: |
| type: integer |
| description: |- |
| The number of decimal places to retain after rounding. |
| |
| Only meaningful when rounding is not "none". Defaults to 0 (round to whole |
| numbers). |
| title: Rounding precision (decimal places) |
| default: 0 |
| display_unit: |
| type: string |
| description: |- |
| A human-readable label for the converted unit shown on invoices and in the |
| customer portal (e.g., "GB", "hours", "M tokens"). |
| |
| Optional. When omitted, no unit label is rendered. |
| title: Display unit label |
| additionalProperties: false |
| description: |- |
| Unit conversion configuration. |
| |
| Transforms raw metered quantities into billing-ready units before pricing and |
| entitlement evaluation. Applied at the rate card level so the same feature can |
| be billed in different units across plans. |
|
|
| Examples: |
|
|
| - Meter bytes, bill GB: operation=divide, conversionFactor=1e9, |
| rounding=ceiling, displayUnit="GB" |
| - Meter seconds, bill hours: operation=divide, conversionFactor=3600, |
| rounding=ceiling, displayUnit="hours" |
| - Cost + 20% margin: operation=multiply, conversionFactor=1.2 |
| - Bill per million tokens: operation=divide, conversionFactor=1e6, |
| rounding=ceiling, displayUnit="M" |
|
|
| v1 equivalents: |
|
|
| - DynamicPrice(multiplier): operation=multiply, conversionFactor=multiplier + |
| UnitPrice(amount=1) |
| - PackagePrice(amount, quantityPerPkg): operation=divide, |
| conversionFactor=quantityPerPkg, rounding=ceiling + UnitPrice(amount) |
| BillingUnitConfigOperation: |
| type: string |
| enum: |
| - divide |
| - multiply |
| description: |- |
| The arithmetic operation used to convert raw metered units into billing units. |
| |
| - `divide`: Divide the metered quantity by the conversion factor (e.g., bytes ÷ |
| 1e9 = GB). |
| - `multiply`: Multiply the metered quantity by the conversion factor (e.g., cost |
| × 1.2 = cost + 20% margin). |
| BillingUnitConfigRoundingMode: |
| type: string |
| enum: |
| - ceiling |
| - floor |
| - half_up |
| - none |
| description: |- |
| The rounding mode applied to the converted quantity for invoicing. |
| |
| Rounding is applied only to the invoiced quantity. Entitlement balance checks |
| use the precise decimal value after conversion. |
|
|
| - `ceiling`: Round up to the next integer (typical for package-style billing). |
| - `floor`: Round down to the previous integer. |
| - `half_up`: Round to the nearest integer, with 0.5 rounding up. |
| - `none`: No rounding; the converted value is used as-is. |
| BillingWorkflow: |
| type: object |
| properties: |
| collection: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowCollectionSettings' |
| description: The collection settings for this workflow |
| invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowInvoicingSettings' |
| description: The invoicing settings for this workflow |
| payment: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowPaymentSettings' |
| description: The payment settings for this workflow |
| tax: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowTaxSettings' |
| description: The tax settings for this workflow |
| additionalProperties: false |
| description: Billing workflow settings. |
| BillingWorkflowCollectionAlignment: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingWorkflowCollectionAlignmentSubscription' |
| - $ref: '#/components/schemas/BillingWorkflowCollectionAlignmentAnchored' |
| discriminator: |
| propertyName: type |
| mapping: |
| subscription: '#/components/schemas/BillingWorkflowCollectionAlignmentSubscription' |
| anchored: '#/components/schemas/BillingWorkflowCollectionAlignmentAnchored' |
| description: |- |
| The alignment for collecting the pending line items into an invoice. |
| |
| Defaults to subscription, which means that we are to create a new invoice every |
| time the a subscription period starts (for in advance items) or ends (for in |
| arrears items). |
| BillingWorkflowCollectionAlignmentAnchored: |
| type: object |
| required: |
| - type |
| - recurring_period |
| properties: |
| type: |
| type: string |
| enum: |
| - anchored |
| description: The type of alignment. |
| recurring_period: |
| allOf: |
| - $ref: '#/components/schemas/RecurringPeriod' |
| description: The recurring period for the alignment. |
| additionalProperties: false |
| description: |- |
| BillingWorkflowCollectionAlignmentAnchored specifies the alignment for |
| collecting the pending line items into an invoice. |
| BillingWorkflowCollectionAlignmentSubscription: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - subscription |
| description: The type of alignment. |
| additionalProperties: false |
| description: |- |
| BillingWorkflowCollectionAlignmentSubscription specifies the alignment for |
| collecting the pending line items into an invoice. |
| BillingWorkflowCollectionSettings: |
| type: object |
| properties: |
| alignment: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowCollectionAlignment' |
| description: The alignment for collecting the pending line items into an invoice. |
| default: |
| type: subscription |
| interval: |
| type: string |
| format: ISO8601 |
| description: |- |
| This grace period can be used to delay the collection of the pending line items |
| specified in alignment. |
| |
| This is useful, in case of multiple subscriptions having slightly different |
| billing periods. |
| example: P1D |
| default: PT1H |
| additionalProperties: false |
| description: |- |
| Workflow collection specifies how to collect the pending line items for an |
| invoice. |
| title: Workflow collection settings |
| BillingWorkflowInvoicingSettings: |
| type: object |
| properties: |
| auto_advance: |
| type: boolean |
| description: Whether to automatically issue the invoice after the draftPeriod has passed. |
| default: true |
| draft_period: |
| type: string |
| format: ISO8601 |
| description: The period for the invoice to be kept in draft status for manual reviews. |
| example: P1D |
| default: P0D |
| progressive_billing: |
| type: boolean |
| description: Should progressive billing be allowed for this workflow? |
| default: true |
| subscription_end_proration_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflowInvoicingSubscriptionEndProrationMode' |
| description: Controls how subscription-ending shortened service periods are billed. |
| default: bill_actual_period |
| additionalProperties: false |
| description: Invoice settings for a billing workflow. |
| title: Workflow invoice settings |
| BillingWorkflowInvoicingSubscriptionEndProrationMode: |
| type: string |
| enum: |
| - bill_full_period |
| - bill_actual_period |
| description: Billing workflow subscription end proration mode. |
| BillingWorkflowPaymentChargeAutomaticallySettings: |
| type: object |
| required: |
| - collection_method |
| properties: |
| collection_method: |
| type: string |
| enum: |
| - charge_automatically |
| description: The collection method for the invoice. |
| additionalProperties: false |
| description: |- |
| Payment settings for a billing workflow when the collection method is charge |
| automatically. |
| BillingWorkflowPaymentSendInvoiceSettings: |
| type: object |
| required: |
| - collection_method |
| properties: |
| collection_method: |
| type: string |
| enum: |
| - send_invoice |
| description: The collection method for the invoice. |
| due_after: |
| type: string |
| format: ISO8601 |
| description: |- |
| The period after which the invoice is due. With some payment solutions it's only |
| applicable for manual collection method. |
| example: P30D |
| default: P30D |
| additionalProperties: false |
| description: |- |
| Payment settings for a billing workflow when the collection method is send |
| invoice. |
| BillingWorkflowPaymentSettings: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/BillingWorkflowPaymentChargeAutomaticallySettings' |
| - $ref: '#/components/schemas/BillingWorkflowPaymentSendInvoiceSettings' |
| discriminator: |
| propertyName: collection_method |
| mapping: |
| charge_automatically: '#/components/schemas/BillingWorkflowPaymentChargeAutomaticallySettings' |
| send_invoice: '#/components/schemas/BillingWorkflowPaymentSendInvoiceSettings' |
| description: Payment settings for a billing workflow. |
| BillingWorkflowTaxSettings: |
| type: object |
| properties: |
| enabled: |
| type: boolean |
| description: |- |
| Enable automatic tax calculation when tax is supported by the app. For example, |
| with Stripe Invoicing when enabled, tax is calculated via Stripe Tax. |
| default: true |
| enforced: |
| type: boolean |
| description: |- |
| Enforce tax calculation when tax is supported by the app. When enabled, the |
| billing system will not allow to create an invoice without tax calculation. |
| Enforcement is different per apps, for example, Stripe app requires customer to |
| have a tax location when starting a paid subscription. |
| default: false |
| default_tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfig' |
| description: |- |
| Default tax configuration to apply to the invoices for line items. |
| |
| Setting a tax code (`stripe.code` / `taxCodeId`) on a profile's default tax |
| config is deprecated and can no longer be added or changed: the organization |
| default tax code is used instead. Existing tax-code values may still be removed, |
| and `behavior` remains fully supported. |
| additionalProperties: false |
| description: Tax settings for a billing workflow. |
| title: Workflow tax settings |
| ChargePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCharge' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| ClosedPeriod: |
| type: object |
| required: |
| - from |
| - to |
| properties: |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The start of the period. |
| |
| The period is inclusive at the start. |
| title: Start |
| example: '2023-01-01T01:01:01.001Z' |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The end of the period. |
| |
| The period is exclusive at the end. |
| title: End |
| example: '2023-01-01T01:01:01.001Z' |
| additionalProperties: false |
| description: |- |
| A period with defined start and end dates. |
| |
| The period is always inclusive at the start and exclusive at the end. |
| CostBasisPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCostBasis' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| CountryCode: |
| type: string |
| minLength: 2 |
| maxLength: 2 |
| pattern: ^[A-Z]{2}$ |
| description: |- |
| [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) alpha-2 country |
| code. Custom two-letter country codes are also supported for convenience. |
| example: US |
| CreateAddonRequest: |
| type: object |
| required: |
| - name |
| - key |
| - instance_type |
| - currency |
| - rate_cards |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| A key is a semi-unique string that is used to identify the add-on. It is used to |
| reference the latest `active` version of the add-on and is unique with the |
| version number. |
| title: Key |
| instance_type: |
| allOf: |
| - $ref: '#/components/schemas/AddonInstanceType' |
| description: The InstanceType of the add-ons. Can be "single" or "multiple". |
| title: The InstanceType of the add-ons. Can be "single" or "multiple". |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: The currency code of the add-on. |
| title: Currency |
| rate_cards: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingRateCard' |
| description: The rate cards of the add-on. |
| title: Rate cards |
| additionalProperties: false |
| description: Addon create request. |
| CreateBillingProfileRequest: |
| type: object |
| required: |
| - name |
| - supplier |
| - workflow |
| - apps |
| - default |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| supplier: |
| allOf: |
| - $ref: '#/components/schemas/BillingParty' |
| description: |- |
| The name and contact information for the supplier this billing profile |
| represents |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflow' |
| description: The billing workflow settings for this profile |
| apps: |
| allOf: |
| - $ref: '#/components/schemas/BillingProfileAppReferences' |
| description: The applications used by this billing profile. |
| default: |
| type: boolean |
| description: Whether this is the default profile. |
| additionalProperties: false |
| description: BillingProfile create request. |
| CreateChargeFlatFeeRequest: |
| type: object |
| required: |
| - name |
| - type |
| - currency |
| - invoice_at |
| - service_period |
| - settlement_mode |
| - payment_term |
| - proration_configuration |
| - amount_before_proration |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| type: |
| type: string |
| enum: |
| - flat_fee |
| description: The type of the charge. |
| title: Type |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency of the charge. |
| title: Currency |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| unique_reference_id: |
| type: string |
| description: Unique reference ID of the charge. |
| title: Unique reference ID |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: Settlement mode of the charge. |
| title: Settlement mode |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfig' |
| description: Tax configuration of the charge. |
| title: Tax configuration |
| payment_term: |
| allOf: |
| - $ref: '#/components/schemas/BillingPricePaymentTerm' |
| description: Payment term of the flat fee charge. |
| title: Payment term |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingChargeFlatFeeDiscounts' |
| description: The discounts applied to the charge. |
| title: Discounts |
| feature_key: |
| type: string |
| description: The feature associated with the charge, when applicable. |
| title: Feature key |
| proration_configuration: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardProrationConfiguration' |
| description: The proration configuration of the charge. |
| title: Proration configuration |
| amount_before_proration: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyAmount' |
| description: The amount before proration of the charge. |
| title: Amount before proration |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| additionalProperties: false |
| description: Flat fee charge create request. |
| CreateChargeRequest: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/CreateChargeFlatFeeRequest' |
| - $ref: '#/components/schemas/CreateChargeUsageBasedRequest' |
| discriminator: |
| propertyName: type |
| mapping: |
| flat_fee: '#/components/schemas/CreateChargeFlatFeeRequest' |
| usage_based: '#/components/schemas/CreateChargeUsageBasedRequest' |
| description: Customer charge. |
| title: Customer charge create request. |
| CreateChargeUsageBasedRequest: |
| type: object |
| required: |
| - name |
| - type |
| - currency |
| - invoice_at |
| - service_period |
| - settlement_mode |
| - feature_key |
| - price |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| type: |
| type: string |
| enum: |
| - usage_based |
| description: The type of the charge. |
| title: Type |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency of the charge. |
| title: Currency |
| invoice_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The timestamp when the charge is intended to be invoiced. |
| title: Invoice at |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The effective service period covered by the charge. |
| title: Service period |
| unique_reference_id: |
| type: string |
| description: Unique reference ID of the charge. |
| title: Unique reference ID |
| settlement_mode: |
| allOf: |
| - $ref: '#/components/schemas/BillingSettlementMode' |
| description: Settlement mode of the charge. |
| title: Settlement mode |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxConfig' |
| description: Tax configuration of the charge. |
| title: Tax configuration |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCardDiscounts' |
| description: Discounts applied to the usage-based charge. |
| title: Discounts |
| feature_key: |
| type: string |
| description: The feature associated with the charge. |
| title: Feature key |
| price: |
| allOf: |
| - $ref: '#/components/schemas/BillingPrice' |
| description: The price of the charge. |
| title: Price |
| full_service_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The full, unprorated service period of the charge. |
| title: Full service period |
| billing_period: |
| allOf: |
| - $ref: '#/components/schemas/ClosedPeriod' |
| description: The billing period the charge belongs to. |
| title: Billing period |
| additionalProperties: false |
| description: Usage-based charge create request. |
| CreateCostBasisRequest: |
| type: object |
| required: |
| - fiat_code |
| - rate |
| properties: |
| fiat_code: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The fiat currency code for the cost basis. |
| rate: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The cost rate for the currency. |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| An ISO-8601 timestamp representation of the date from which the cost basis is |
| effective. If not provided, it will be effective immediately and will be set to |
| `now` by the system. |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| An ISO-8601 timestamp representation of the date until which the cost basis is |
| effective. If provided, it must be later than `effective_from`. If not provided, |
| it remains effective until superseded. |
| additionalProperties: false |
| description: CostBasis create request. |
| CreateCreditAdjustmentRequest: |
| type: object |
| required: |
| - name |
| - currency |
| - amount |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: The currency of the granted credits. |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Granted credit amount. |
| additionalProperties: false |
| description: CreditAdjustment create request. |
| CreateCreditGrantFilters: |
| type: object |
| properties: |
| features: |
| type: array |
| items: |
| $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| Limit the credit grant to specific features. If no features are specified, the |
| credit grant can be used for any feature. |
| example: |
| - input_tokens |
| - output_tokens |
| additionalProperties: false |
| description: Filters for the credit grant. |
| CreateCreditGrantPurchase: |
| type: object |
| required: |
| - currency |
| properties: |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency of the purchase amount. |
| per_unit_cost_basis: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Cost basis per credit unit used to calculate the purchase amount. |
| |
| If `per_unit_cost_basis` is 0.50 and credit amount is $100.00, the total charge |
| is $50.00. The value must be greater than 0. If the cost basis is 0, use |
| `funding_method=none` instead. |
|
|
| Defaults to 1.0. |
| default: '1.0' |
| availability_policy: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditAvailabilityPolicy' |
| description: |- |
| Controls when credits become available for consumption. |
| |
| Defaults to `on_creation`. |
| default: on_creation |
| additionalProperties: false |
| description: Purchase and payment terms of the grant. |
| CreateCreditGrantRequest: |
| type: object |
| required: |
| - name |
| - funding_method |
| - currency |
| - amount |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| funding_method: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditFundingMethod' |
| description: Funding method of the grant. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CreateCurrencyCode' |
| description: The currency of the granted credits. |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Granted credit amount. |
| purchase: |
| allOf: |
| - $ref: '#/components/schemas/CreateCreditGrantPurchase' |
| description: Present when a funding workflow applies (funding_method is not `none`). |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/CreateCreditGrantTaxConfig' |
| description: |- |
| Tax configuration for the grant. |
| |
| For `invoice` and `external` funding methods, tax configuration should be |
| provided to ensure correct revenue recognition. When not provided, the default |
| credit grant tax code is applied, if that's not set the global default taxcode |
| is used. |
| filters: |
| $ref: '#/components/schemas/CreateCreditGrantFilters' |
| priority: |
| type: integer |
| format: int16 |
| minimum: 1 |
| maximum: 1000 |
| description: Draw-down priority of the grant. Lower values have higher priority. |
| default: 10 |
| effective_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The timestamp when the credit grant becomes effective. |
| |
| Defaults to the current date and time. |
| expires_after: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: |- |
| The duration after which the credit grant expires. |
| |
| Defaults to never expiring. |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| Idempotency key for the credit grant creation request. |
| |
| When provided, reusing the same key returns an HTTP 409 Conflict instead of |
| creating a duplicate grant, which makes create requests safe to retry. |
| additionalProperties: false |
| description: CreditGrant create request. |
| CreateCreditGrantTaxConfig: |
| type: object |
| properties: |
| behavior: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxBehavior' |
| description: Tax behavior applied to the invoice line item. |
| tax_code: |
| allOf: |
| - $ref: '#/components/schemas/CreateResourceReference' |
| description: Tax code applied to the invoice line item. |
| additionalProperties: false |
| description: |- |
| Tax configuration for a credit grant. |
| |
| Tax configuration should be provided to ensure correct revenue recognition, |
| including for externally funded grants. |
| title: Tax configuration for a credit grant |
| CreateCurrencyCode: |
| type: string |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Fiat or custom currency code. |
| x-go-type: string |
| CreateCurrencyCustomRequest: |
| type: object |
| required: |
| - name |
| - code |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| The name of the currency. It should be a human-readable string that represents |
| the name of the currency, such as "US Dollar" or "Euro". |
| symbol: |
| type: string |
| minLength: 1 |
| description: |- |
| The symbol of the currency. It should be a string that represents the symbol of |
| the currency, such as "$" for US Dollar or "€" for Euro. |
| code: |
| $ref: '#/components/schemas/BillingCurrencyCodeCustom' |
| additionalProperties: false |
| description: CurrencyCustom create request. |
| CreateCustomerRequest: |
| type: object |
| required: |
| - name |
| - key |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ExternalResourceKey' |
| usage_attribution: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerUsageAttribution' |
| description: Mapping to attribute metered usage to the customer by the event subject. |
| title: Usage Attribution |
| primary_email: |
| type: string |
| description: The primary email address of the customer. |
| title: Primary Email |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency of the customer. Used for billing, tax and invoicing. |
| title: Currency |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/Address' |
| description: The billing address of the customer. Used for tax and invoicing. |
| title: Billing Address |
| additionalProperties: false |
| description: Customer create request. |
| CreateFeatureRequest: |
| type: object |
| required: |
| - name |
| - key |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| meter: |
| allOf: |
| - $ref: '#/components/schemas/FeatureMeterReference' |
| description: |- |
| The meter that the feature is associated with and based on which usage is |
| calculated. If not specified, the feature is static. |
| title: Meter reference |
| unit_cost: |
| allOf: |
| - $ref: '#/components/schemas/BillingFeatureUnitCost' |
| description: |- |
| Optional per-unit cost configuration. Use "manual" for a fixed per-unit cost, or |
| "llm" to look up cost from the LLM cost database based on meter group-by |
| properties. |
| title: Unit cost |
| additionalProperties: false |
| description: Feature create request. |
| CreateMeterRequest: |
| type: object |
| required: |
| - name |
| - key |
| - aggregation |
| - event_type |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| aggregation: |
| allOf: |
| - $ref: '#/components/schemas/MeterAggregation' |
| description: The aggregation type to use for the meter. |
| event_type: |
| type: string |
| minLength: 1 |
| description: The event type to include in the aggregation. |
| example: prompt |
| events_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The date since the meter should include events. Useful to skip old events. If |
| not specified, all historical events are included. |
| value_property: |
| type: string |
| minLength: 1 |
| description: |- |
| JSONPath expression to extract the value from the ingested event's data |
| property. |
| |
| The ingested value for sum, avg, min, and max aggregations is a number or a |
| string that can be parsed to a number. |
|
|
| For unique_count aggregation, the ingested value must be a string. For count |
| aggregation the value_property is ignored. |
| example: $.tokens |
| dimensions: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| Named JSONPath expressions to extract the group by values from the event data. |
| |
| Keys must be unique and consist only alphanumeric and underscore characters. |
| example: |
| type: $.type |
| additionalProperties: false |
| description: Meter create request. |
| CreatePlanAddonRequest: |
| type: object |
| required: |
| - name |
| - addon |
| - from_plan_phase |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| addon: |
| allOf: |
| - $ref: '#/components/schemas/AddonReference' |
| description: The add-on associated with the plan. |
| title: Add-on |
| from_plan_phase: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The key of the plan phase from which the add-on becomes available for purchase. |
| title: From plan phase |
| max_quantity: |
| type: integer |
| minimum: 1 |
| description: |- |
| The maximum number of times the add-on can be purchased for the plan. For |
| single-instance add-ons this field must be omitted. For multi-instance add-ons |
| when omitted, unlimited quantity can be purchased. |
| title: Max quantity |
| additionalProperties: false |
| description: PlanAddon create request. |
| CreatePlanRequest: |
| type: object |
| required: |
| - name |
| - key |
| - currency |
| - billing_cadence |
| - phases |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: |- |
| A key is a semi-unique string that is used to identify the plan. It is used to |
| reference the latest `active` version of the plan and is unique with the version |
| number. |
| title: Key |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency code of the plan. |
| title: Currency |
| billing_cadence: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: The billing cadence for subscriptions using this plan. |
| title: Billing cadence |
| pro_rating_enabled: |
| type: boolean |
| description: Whether pro-rating is enabled for this plan. |
| title: Pro-rating enabled |
| default: true |
| phases: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPlanPhase' |
| minItems: 1 |
| description: |- |
| The plan phases define the pricing ramp for a subscription. A phase switch |
| occurs only at the end of a billing period. At least one phase is required. |
| title: Plan phases |
| additionalProperties: false |
| description: Plan create request. |
| CreateResourceReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: TaxCode reference. |
| CreateSubscriptionAddonRequest: |
| type: object |
| required: |
| - addon |
| - quantity |
| - timing |
| properties: |
| labels: |
| $ref: '#/components/schemas/Labels' |
| addon: |
| allOf: |
| - $ref: '#/components/schemas/AddonReference' |
| description: The add-on associated with the subscription. |
| title: Add-on |
| quantity: |
| type: integer |
| minimum: 1 |
| description: The quantity of the add-on. Always 1 for single instance add-ons. |
| title: Quantity |
| timing: |
| allOf: |
| - $ref: '#/components/schemas/BillingSubscriptionEditTiming' |
| description: |- |
| The timing of the operation. After the create or update, a new entry will be |
| created in the timeline. |
| title: Timing |
| additionalProperties: false |
| description: SubscriptionAddon create request. |
| CreateTaxCodeRequest: |
| type: object |
| required: |
| - name |
| - key |
| - app_mappings |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| app_mappings: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingTaxCodeAppMapping' |
| description: Mapping of app types to tax codes. |
| title: App type to tax code mappings |
| additionalProperties: false |
| description: TaxCode create request. |
| CreditBalance: |
| type: object |
| required: |
| - currency |
| - live |
| - settled |
| - pending |
| properties: |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| readOnly: true |
| live: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Credits available after applying currently live charge impacts. |
| example: '200.00' |
| readOnly: true |
| settled: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Credits that have been booked on the ledger as of the balance timestamp. |
| example: '150.00' |
| readOnly: true |
| pending: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Credits that have been granted but are not yet written to the ledger, or are |
| written to the ledger with a future booked time. |
| example: '50.00' |
| readOnly: true |
| additionalProperties: false |
| description: The credit balance by currency. |
| title: Credit balance |
| CreditGrantPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCreditGrant' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| CreditTransactionPaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCreditTransaction' |
| meta: |
| $ref: '#/components/schemas/CursorMeta' |
| additionalProperties: false |
| description: Cursor paginated response. |
| CurrencyAmount: |
| type: object |
| required: |
| - amount |
| - currency |
| properties: |
| amount: |
| $ref: '#/components/schemas/Numeric' |
| currency: |
| $ref: '#/components/schemas/CurrencyCode' |
| additionalProperties: false |
| description: Monetary amount in a specific currency. |
| CurrencyCode: |
| type: string |
| minLength: 3 |
| maxLength: 3 |
| pattern: ^[A-Z]{3}$ |
| description: |- |
| Three-letter [ISO4217](https://www.iso.org/iso-4217-currency-codes.html) |
| currency code. Custom three-letter currency codes are also supported for |
| convenience. |
| example: USD |
| CurrencyPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCurrency' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| CursorPaginationQueryPage: |
| type: object |
| properties: |
| size: |
| type: integer |
| description: The number of items to include per page. |
| after: |
| type: string |
| description: Request the next page of data, starting with the item after this parameter. |
| before: |
| type: string |
| description: Request the previous page of data, starting with the item before this parameter. |
| additionalProperties: false |
| description: Determines which page of the collection to retrieve. |
| CustomerPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingCustomer' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| CustomerReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: Customer reference. |
| DateTime: |
| type: string |
| format: date-time |
| description: |- |
| [RFC3339](https://tools.ietf.org/html/rfc3339) formatted date-time string in |
| UTC. |
| title: RFC3339 Date-Time |
| example: '2023-01-01T01:01:01.001Z' |
| DateTimeFieldFilter: |
| anyOf: |
| - $ref: '#/components/schemas/DateTime' |
| - type: object |
| properties: |
| eq: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Value strictly equals given RFC-3339 formatted timestamp in UTC. |
| lt: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Value is less than the given RFC-3339 formatted timestamp in UTC. |
| lte: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Value is less than or equal to the given RFC-3339 formatted timestamp in UTC. |
| gt: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Value is greater than the given RFC-3339 formatted timestamp in UTC. |
| gte: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Value is greater than or equal to the given RFC-3339 formatted timestamp in UTC. |
| additionalProperties: false |
| description: |- |
| Filters on the given datetime (RFC-3339) field value. All properties are |
| optional; provide exactly one to specify the comparison. |
| title: DateTime Field Filter |
| x-go-type-import: |
| path: github.com/openmeterio/openmeter/api/v3/filters |
| x-go-type: filters.FilterDateTime |
| ExternalResourceKey: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| ExternalResourceKey is a unique string that is used to identify a resource in an |
| external system. |
| title: External Resource Key |
| example: 019ae40f-4258-7f15-9491-842f42a7d6ac |
| Feature: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| meter: |
| allOf: |
| - $ref: '#/components/schemas/FeatureMeterReference' |
| description: |- |
| The meter that the feature is associated with and based on which usage is |
| calculated. If not specified, the feature is static. |
| title: Meter reference |
| unit_cost: |
| allOf: |
| - $ref: '#/components/schemas/BillingFeatureUnitCost' |
| description: |- |
| Optional per-unit cost configuration. Use "manual" for a fixed per-unit cost, or |
| "llm" to look up cost from the LLM cost database based on meter group-by |
| properties. |
| title: Unit cost |
| additionalProperties: false |
| description: A capability or billable dimension offered by a provider. |
| FeatureCostQueryResult: |
| type: object |
| required: |
| - data |
| properties: |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Start of the queried period. |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: End of the queried period. |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/FeatureCostQueryRow' |
| description: The cost data rows. |
| additionalProperties: false |
| description: Result of a feature cost query. |
| FeatureCostQueryRow: |
| type: object |
| required: |
| - usage |
| - cost |
| - currency |
| - from |
| - to |
| - dimensions |
| properties: |
| usage: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The metered usage value for the period. |
| cost: |
| type: string |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| nullable: true |
| description: |- |
| The computed cost amount (usage × unit cost). Null when pricing is not available |
| for the given combination of dimensions. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: The currency code of the cost amount. |
| detail: |
| type: string |
| description: |- |
| Detail message when cost amount is null, explaining why the cost could not be |
| resolved. |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The start of the time bucket the value is aggregated over. |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The end of the time bucket the value is aggregated over. |
| dimensions: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| The dimensions the value is aggregated over. `subject` and `customer_id` are |
| reserved dimensions. |
| additionalProperties: false |
| description: A row in the result of a feature cost query. |
| FeatureMeterReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: The ID of the meter to associate with this feature. |
| title: Meter ID |
| filters: |
| type: object |
| additionalProperties: |
| $ref: '#/components/schemas/QueryFilterStringMapItem' |
| maxProperties: 10 |
| description: Filters to apply to the dimensions of the meter. |
| title: Meter dimensions filters |
| additionalProperties: false |
| description: Reference to a meter associated with a feature. |
| FeaturePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/Feature' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| FeatureReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: Feature reference. |
| GetCreditBalanceParamsFilter: |
| type: object |
| properties: |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilterExact' |
| description: Filter credit balance by currency. |
| feature_key: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: |- |
| Filter credit balance by feature key. Omit to return the total portfolio value. |
| Use `exists=false` to return only unrestricted balance. |
| additionalProperties: false |
| description: Filter options for getting a credit balance. |
| GovernanceFeatureAccess: |
| type: object |
| required: |
| - has_access |
| properties: |
| has_access: |
| type: boolean |
| description: |- |
| Whether the customer currently has access to the feature. |
| |
| `true` for boolean and static entitlements that are available, and for metered |
| entitlements with remaining balance. `false` when the feature is unavailable, |
| the usage limit has been reached, or (when applicable) credits have been |
| exhausted. |
| title: Has access |
| readOnly: true |
| reason: |
| allOf: |
| - $ref: '#/components/schemas/GovernanceFeatureAccessReason' |
| description: |- |
| Optional reason when the customer does not have access to the feature. Populated |
| when `has_access` is `false`. |
| title: Reason |
| readOnly: true |
| additionalProperties: false |
| description: Access status for a single feature. |
| GovernanceFeatureAccessReason: |
| type: object |
| required: |
| - code |
| - message |
| properties: |
| code: |
| allOf: |
| - $ref: '#/components/schemas/GovernanceFeatureAccessReasonCode' |
| description: Machine-readable error code. |
| title: Code |
| readOnly: true |
| message: |
| type: string |
| description: Human-readable description of the error. |
| title: Message |
| readOnly: true |
| attributes: |
| type: object |
| additionalProperties: {} |
| description: Additional structured context. |
| title: Attributes |
| readOnly: true |
| additionalProperties: false |
| description: Reason a feature is not accessible to a customer. |
| GovernanceFeatureAccessReasonCode: |
| type: string |
| enum: |
| - unknown |
| - usage_limit_reached |
| - feature_unavailable |
| - feature_not_found |
| - no_credit_available |
| description: Machine-readable reason code for denied feature access. |
| GovernanceQueryError: |
| type: object |
| required: |
| - code |
| - message |
| properties: |
| code: |
| allOf: |
| - $ref: '#/components/schemas/GovernanceQueryErrorCode' |
| description: Machine-readable error code. |
| title: Code |
| readOnly: true |
| message: |
| type: string |
| description: Human-readable description of the error. |
| title: Message |
| readOnly: true |
| attributes: |
| type: object |
| additionalProperties: {} |
| description: Additional structured context. |
| title: Attributes |
| readOnly: true |
| customer: |
| type: string |
| description: The customer identifier from the request that produced this error. |
| title: Customer identifier |
| readOnly: true |
| additionalProperties: false |
| description: Query error within a partially successful governance query response. |
| GovernanceQueryErrorCode: |
| type: string |
| enum: |
| - unknown |
| - customer_not_found |
| description: Error code for a governance query failure. |
| GovernanceQueryRequest: |
| type: object |
| required: |
| - customer |
| properties: |
| include_credits: |
| type: boolean |
| description: |- |
| Whether to include credit balance availability for each resolved customer. When |
| true, each feature evaluation includes credit balance checks. |
| |
| Defaults to `false`. |
| title: Include credits |
| default: false |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/GovernanceQueryRequestCustomers' |
| title: Customer |
| feature: |
| allOf: |
| - $ref: '#/components/schemas/GovernanceQueryRequestFeatures' |
| title: Feature |
| additionalProperties: false |
| description: Query to evaluate feature access for a list of customers. |
| GovernanceQueryRequestCustomers: |
| type: object |
| required: |
| - keys |
| properties: |
| keys: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: |- |
| Each entry can be a customer `key` or a usage-attribution subject `key`. |
| Identifiers that cannot be resolved to a customer are reported in the response |
| `errors` array. |
| title: Customer keys and usage-attribution subjects |
| additionalProperties: false |
| description: List of customer identifiers to evaluate access for. |
| GovernanceQueryRequestFeatures: |
| type: object |
| required: |
| - keys |
| properties: |
| keys: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: List of feature keys to evaluate access for. |
| title: Feature Keys |
| additionalProperties: false |
| description: |- |
| Optional list of feature keys to evaluate access for. If omitted, all features |
| available in the organization are returned. Providing this list is recommended |
| to reduce the response size and the load on the backend services. |
| GovernanceQueryResponse: |
| type: object |
| required: |
| - data |
| - errors |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/GovernanceQueryResult' |
| description: Access evaluation results, one entry per resolved customer. |
| title: Data |
| readOnly: true |
| errors: |
| type: array |
| items: |
| $ref: '#/components/schemas/GovernanceQueryError' |
| description: Partial errors encountered while processing the request. |
| title: Errors |
| readOnly: true |
| meta: |
| allOf: |
| - $ref: '#/components/schemas/CursorMeta' |
| description: |- |
| Pagination metadata. The endpoint may return a partial response if the full |
| response would exceed server-side limits. |
| title: Meta |
| readOnly: true |
| additionalProperties: false |
| description: Response of the governance query. |
| GovernanceQueryResult: |
| type: object |
| required: |
| - matched |
| - customer |
| - features |
| - updated_at |
| properties: |
| matched: |
| type: array |
| items: |
| type: string |
| description: |- |
| The list of identifiers from the request that resolved to this customer. Each |
| entry is either the customer `key` or one of its usage-attribution subject |
| `key`s. |
| |
| Duplicate or aliased identifiers that resolve to the same customer collapse to a |
| single result entry, with every requested identifier listed here. |
| title: Matched identifiers |
| readOnly: true |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomer' |
| description: The customer the matched identifiers resolved to. |
| title: Customer |
| readOnly: true |
| features: |
| type: object |
| additionalProperties: |
| $ref: '#/components/schemas/GovernanceFeatureAccess' |
| description: |- |
| Map of features with their access status. |
| |
| Map keys are the feature keys requested in `feature.keys`, or every feature |
| `key` available in the organization when the feature filter was omitted. |
| title: Features |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| Timestamp of the most recent change to the customer's access state reflected in |
| this result. |
| title: Updated at |
| readOnly: true |
| additionalProperties: false |
| description: Access evaluation result for a single resolved customer. |
| ISO8601Duration: |
| type: string |
| pattern: ^P(?:\d+(?:\.\d+)?Y)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?W)?(?:\d+(?:\.\d+)?D)?(?:T(?:\d+(?:\.\d+)?H)?(?:\d+(?:\.\d+)?M)?(?:\d+(?:\.\d+)?S)?)?$ |
| description: |- |
| [ISO 8601 Duration](https://docs.digi.com/resources/documentation/digidocs/90001488-13/reference/r_iso_8601_duration_format.htm) |
| string. |
| title: ISO 8601 Duration |
| example: P1Y |
| format: ISO8601 |
| IngestedEventPaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/MeteringIngestedEvent' |
| meta: |
| $ref: '#/components/schemas/CursorMeta' |
| additionalProperties: false |
| description: Cursor paginated response. |
| InvoicePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingInvoice' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| LLMCostModel: |
| type: object |
| required: |
| - id |
| - name |
| properties: |
| id: |
| type: string |
| description: Identifier of the model, e.g., "gpt-4", "claude-3-5-sonnet". |
| name: |
| type: string |
| description: Name of the model, e.g., "GPT-4", "Claude 3.5 Sonnet". |
| additionalProperties: false |
| description: LLM Model |
| LLMCostModelPricing: |
| type: object |
| required: |
| - input_per_token |
| - output_per_token |
| properties: |
| input_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Input price per token (USD). |
| output_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Output price per token (USD). |
| cache_read_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cache read price per token (USD). |
| cache_write_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Cache write price per token (USD). |
| reasoning_per_token: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: Reasoning output price per token (USD). |
| additionalProperties: false |
| description: Token pricing for an LLM model, denominated per token. |
| LLMCostOverrideCreate: |
| type: object |
| required: |
| - provider |
| - model_id |
| - pricing |
| - currency |
| - effective_from |
| properties: |
| provider: |
| type: string |
| description: Provider/vendor of the model. |
| model_id: |
| type: string |
| description: Canonical model identifier. |
| model_name: |
| type: string |
| description: Human-readable model name. |
| pricing: |
| allOf: |
| - $ref: '#/components/schemas/LLMCostModelPricing' |
| description: Token pricing data. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency code. |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: When this override becomes effective. |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: When this override expires. |
| additionalProperties: false |
| description: |- |
| Input for creating a per-namespace price override. Unique per provider, model |
| and currency. If an override already exists for the given provider, model and |
| currency, it will be updated. If an override does not exist, it will be created. |
| LLMCostPrice: |
| type: object |
| required: |
| - id |
| - provider |
| - model |
| - pricing |
| - currency |
| - source |
| - effective_from |
| - created_at |
| - updated_at |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Unique identifier. |
| readOnly: true |
| provider: |
| allOf: |
| - $ref: '#/components/schemas/LLMCostProvider' |
| description: Provider of the model. |
| readOnly: true |
| model: |
| allOf: |
| - $ref: '#/components/schemas/LLMCostModel' |
| description: The model. |
| readOnly: true |
| pricing: |
| allOf: |
| - $ref: '#/components/schemas/LLMCostModelPricing' |
| description: Token pricing data. |
| readOnly: true |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency code (currently always "USD"). |
| readOnly: true |
| source: |
| allOf: |
| - $ref: '#/components/schemas/LLMCostPriceSource' |
| description: Where this price came from. |
| readOnly: true |
| effective_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: When this price becomes effective. |
| readOnly: true |
| effective_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: When this price expires. Omitted when the price is currently effective. |
| readOnly: true |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Creation timestamp. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Last update timestamp. |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| An LLM cost price record, representing the cost per token for a specific model |
| from a specific provider. |
| LLMCostPriceSource: |
| type: string |
| enum: |
| - manual |
| - system |
| description: Identifies where an LLM cost price came from. |
| LLMCostProvider: |
| type: object |
| required: |
| - id |
| - name |
| properties: |
| id: |
| type: string |
| description: Identifier of the provider, e.g., "openai", "anthropic". |
| name: |
| type: string |
| description: Name of the provider, e.g., "OpenAI", "Anthropic". |
| additionalProperties: false |
| description: LLM Provider |
| ListAddonsParamsFilter: |
| type: object |
| properties: |
| id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| name: |
| $ref: '#/components/schemas/StringFieldFilter' |
| status: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| currency: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| additionalProperties: false |
| description: Filter options for listing add-ons. |
| ListChargesParamsFilter: |
| type: object |
| properties: |
| status: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilterExact' |
| description: |- |
| Filter charges by status. |
| |
| Supported statuses are: |
|
|
| - `created` |
| - `active` |
| - `final` |
| - `deleted` |
|
|
| If omitted, all statuses are returned except for `deleted`. |
| additionalProperties: false |
| description: Filter options for listing charges. |
| ListCostBasesParamsFilter: |
| type: object |
| properties: |
| fiat_code: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Filter cost bases by fiat currency code. |
| additionalProperties: false |
| description: Filter options for listing cost bases. |
| ListCreditGrantsParamsFilter: |
| type: object |
| properties: |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantStatus' |
| description: Filter credit grants by status. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Filter credit grants by currency. |
| key: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter credit grants by key. |
| additionalProperties: false |
| description: Filter options for listing credit grants. |
| ListCreditTransactionsParamsFilter: |
| type: object |
| properties: |
| type: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditTransactionType' |
| description: Filter credit transactions by type. |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/BillingCurrencyCode' |
| description: Filter credit transactions by currency. |
| feature_key: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: |- |
| Filter credit transactions by feature key. Omit to return all credit |
| transactions. Use `exists=false` to return only unrestricted credit |
| transactions. |
| additionalProperties: false |
| description: Filter options for listing credit transactions. |
| ListCurrenciesParamsFilter: |
| type: object |
| properties: |
| type: |
| $ref: '#/components/schemas/BillingCurrencyType' |
| code: |
| $ref: '#/components/schemas/StringFieldFilter' |
| additionalProperties: false |
| description: Filter options for listing currencies. |
| ListCustomerEntitlementAccessResponseData: |
| type: object |
| required: |
| - data |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingEntitlementAccessResult' |
| description: The list of entitlement access results. |
| readOnly: true |
| additionalProperties: false |
| description: List customer entitlement access response data. |
| ListCustomersParamsFilter: |
| type: object |
| properties: |
| key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| name: |
| $ref: '#/components/schemas/StringFieldFilter' |
| primary_email: |
| $ref: '#/components/schemas/StringFieldFilter' |
| usage_attribution_subject_key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| plan_key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| billing_profile_id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| additionalProperties: false |
| description: Filter options for listing customers. |
| ListEventsParamsFilter: |
| type: object |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter events by ID. |
| source: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter events by source. |
| subject: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter events by subject. |
| type: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter events by type. |
| customer_id: |
| allOf: |
| - $ref: '#/components/schemas/ULIDFieldFilter' |
| description: Filter events by the associated customer ID. |
| time: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter events by event time. |
| ingested_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter events by the time the event was ingested. |
| stored_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter events by the time the event was stored. |
| additionalProperties: false |
| description: Filter options for listing ingested events. |
| ListFeatureParamsFilter: |
| type: object |
| properties: |
| meter_id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| name: |
| $ref: '#/components/schemas/StringFieldFilter' |
| additionalProperties: false |
| description: Filter options for listing features. |
| ListInvoicesParamsFilter: |
| type: object |
| properties: |
| status: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilterExact' |
| description: Filter by invoice status. |
| customer_id: |
| allOf: |
| - $ref: '#/components/schemas/ULIDFieldFilter' |
| description: Filter by customer ID. |
| issued_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter by the time the invoice was issued. |
| service_period_start: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter by service period start. |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTimeFieldFilter' |
| description: Filter by invoice creation time. |
| additionalProperties: false |
| description: Filter options for listing invoices. |
| ListLLMCostPricesParamsFilter: |
| type: object |
| properties: |
| provider: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter by provider. e.g. ?filter[provider][eq]=openai |
| model_id: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter by model ID. e.g. ?filter[model_id][eq]=gpt-4 |
| model_name: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter by model name. e.g. ?filter[model_name][contains]=gpt |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter by currency code. e.g. ?filter[currency][eq]=USD |
| source: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter by source. e.g. ?filter[source][eq]=system |
| additionalProperties: false |
| description: Filter options for listing LLM cost prices. |
| ListMetersParamsFilter: |
| type: object |
| properties: |
| key: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter meters by key. |
| name: |
| allOf: |
| - $ref: '#/components/schemas/StringFieldFilter' |
| description: Filter meters by name. |
| additionalProperties: false |
| description: Filter options for listing meters. |
| ListPlansParamsFilter: |
| type: object |
| properties: |
| key: |
| $ref: '#/components/schemas/StringFieldFilter' |
| name: |
| $ref: '#/components/schemas/StringFieldFilter' |
| status: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| currency: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| additionalProperties: false |
| description: Filter options for listing plans. |
| ListSubscriptionsParamsFilter: |
| type: object |
| properties: |
| id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| customer_id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| status: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| plan_id: |
| $ref: '#/components/schemas/ULIDFieldFilter' |
| plan_key: |
| $ref: '#/components/schemas/StringFieldFilterExact' |
| additionalProperties: false |
| description: Filter options for listing subscriptions. |
| Meter: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - key |
| - aggregation |
| - event_type |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| key: |
| $ref: '#/components/schemas/ResourceKey' |
| aggregation: |
| allOf: |
| - $ref: '#/components/schemas/MeterAggregation' |
| description: The aggregation type to use for the meter. |
| event_type: |
| type: string |
| minLength: 1 |
| description: The event type to include in the aggregation. |
| example: prompt |
| events_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The date since the meter should include events. Useful to skip old events. If |
| not specified, all historical events are included. |
| value_property: |
| type: string |
| minLength: 1 |
| description: |- |
| JSONPath expression to extract the value from the ingested event's data |
| property. |
| |
| The ingested value for sum, avg, min, and max aggregations is a number or a |
| string that can be parsed to a number. |
|
|
| For unique_count aggregation, the ingested value must be a string. For count |
| aggregation the value_property is ignored. |
| example: $.tokens |
| dimensions: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| Named JSONPath expressions to extract the group by values from the event data. |
| |
| Keys must be unique and consist only alphanumeric and underscore characters. |
| example: |
| type: $.type |
| additionalProperties: false |
| description: A meter is a configuration that defines how to match and aggregate events. |
| example: |
| id: 01G65Z755AFWAKHE12NY0CQ9FH |
| key: tokens_total |
| name: Tokens Total |
| description: AI Token Usage |
| aggregation: sum |
| event_type: prompt |
| value_property: $.tokens |
| dimensions: |
| model: $.model |
| type: $.type |
| created_at: '2024-01-01T01:01:01.001Z' |
| updated_at: '2024-01-01T01:01:01.001Z' |
| MeterAggregation: |
| type: string |
| enum: |
| - sum |
| - count |
| - unique_count |
| - avg |
| - min |
| - max |
| - latest |
| description: The aggregation type to use for the meter. |
| MeterPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/Meter' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| MeterQueryFilters: |
| type: object |
| properties: |
| dimensions: |
| type: object |
| additionalProperties: |
| $ref: '#/components/schemas/QueryFilterStringMapItem' |
| maxProperties: 10 |
| description: |- |
| Filters to apply to the dimensions of the query. For `subject` and `customer_id` |
| only equals ("eq", "in") comparisons are supported. |
| additionalProperties: false |
| description: Filters to apply to a meter query. |
| MeterQueryGranularity: |
| type: string |
| enum: |
| - PT1M |
| - PT1H |
| - P1D |
| - P1M |
| description: |- |
| The granularity of the time grouping. Time durations are specified in ISO 8601 |
| format. |
| MeterQueryRequest: |
| type: object |
| properties: |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The start of the period the usage is queried from. |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The end of the period the usage is queried to. |
| granularity: |
| allOf: |
| - $ref: '#/components/schemas/MeterQueryGranularity' |
| description: |- |
| The size of the time buckets to group the usage into. If not specified, the |
| usage is aggregated over the entire period. |
| time_zone: |
| type: string |
| description: |- |
| The value is the name of the time zone as defined in the IANA Time Zone Database |
| (http://www.iana.org/time-zones). The time zone is used to determine the start |
| and end of the time buckets. If not specified, the UTC timezone will be used. |
| default: UTC |
| group_by_dimensions: |
| type: array |
| items: |
| type: string |
| maxItems: 100 |
| description: The dimensions to group the results by. |
| example: |
| - model |
| - type |
| filters: |
| allOf: |
| - $ref: '#/components/schemas/MeterQueryFilters' |
| description: Filters to apply to the query. |
| additionalProperties: false |
| description: A meter query request. |
| example: |
| from: '2023-01-01T00:00:00Z' |
| to: '2023-01-02T00:00:00Z' |
| granularity: P1D |
| time_zone: UTC |
| MeterQueryResult: |
| type: object |
| required: |
| - data |
| properties: |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The start of the period the usage is queried from. |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The end of the period the usage is queried to. |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/MeterQueryRow' |
| description: The usage data. If no data is available, an empty array is returned. |
| additionalProperties: false |
| description: Meter query result. |
| example: |
| from: '2023-01-01T00:00:00Z' |
| to: '2023-01-02T00:00:00Z' |
| data: |
| - value: '12.3456' |
| from: '2023-01-01T00:00:00Z' |
| to: '2023-01-02T00:00:00Z' |
| dimensions: |
| customer_id: 01G65Z755AFWAKHE12NY0CQ9FH |
| model: gpt-4-turbo |
| type: input |
| MeterQueryRow: |
| type: object |
| required: |
| - value |
| - from |
| - to |
| - dimensions |
| properties: |
| value: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The aggregated value. |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The start of the time bucket the value is aggregated over. |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The end of the time bucket the value is aggregated over. |
| dimensions: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| The dimensions the value is aggregated over. `subject` and `customer_id` are |
| reserved dimensions. |
| additionalProperties: false |
| description: A row in the result of a meter query. |
| example: |
| value: '12.3456' |
| from: '2023-01-01T00:00:00Z' |
| to: '2023-01-02T00:00:00Z' |
| dimensions: |
| customer_id: 01G65Z755AFWAKHE12NY0CQ9FH |
| model: gpt-4-turbo |
| type: input |
| MeteringEvent: |
| type: object |
| required: |
| - id |
| - source |
| - specversion |
| - type |
| - subject |
| properties: |
| id: |
| type: string |
| minLength: 1 |
| description: Identifies the event. |
| example: 5c10fade-1c9e-4d6c-8275-c52c36731d3c |
| source: |
| type: string |
| minLength: 1 |
| format: uri-reference |
| description: Identifies the context in which an event happened. |
| example: service-name |
| specversion: |
| type: string |
| minLength: 1 |
| description: The version of the CloudEvents specification which the event uses. |
| example: '1.0' |
| default: '1.0' |
| type: |
| type: string |
| minLength: 1 |
| description: |- |
| Contains a value describing the type of event related to the originating |
| occurrence. |
| example: com.example.someevent |
| datacontenttype: |
| type: string |
| enum: |
| - application/json |
| nullable: true |
| description: |- |
| Content type of the CloudEvents data value. Only the value "application/json" is |
| allowed over HTTP. |
| example: application/json |
| dataschema: |
| type: string |
| format: uri |
| nullable: true |
| minLength: 1 |
| description: Identifies the schema that data adheres to. |
| subject: |
| type: string |
| minLength: 1 |
| description: |- |
| Describes the subject of the event in the context of the event producer |
| (identified by source). |
| example: customer-id |
| time: |
| type: string |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| nullable: true |
| description: Timestamp of when the occurrence happened. Must adhere to RFC 3339. |
| example: '2023-01-01T01:01:01.001Z' |
| data: |
| type: object |
| additionalProperties: {} |
| nullable: true |
| description: The event payload. Optional, if present it must be a JSON object. |
| additionalProperties: false |
| description: Metering event following the CloudEvents specification. |
| title: Metering Event |
| example: |
| specversion: '1.0' |
| id: 5c10fade-1c9e-4d6c-8275-c52c36731d3c |
| source: service-name |
| type: prompt |
| subject: customer-id |
| time: '2023-01-01T01:01:01.001Z' |
| data: |
| prompt: Hello, world! |
| tokens: 100 |
| model: gpt-4o |
| type: input |
| MeteringIngestedEvent: |
| type: object |
| required: |
| - event |
| - ingested_at |
| - stored_at |
| properties: |
| event: |
| allOf: |
| - $ref: '#/components/schemas/MeteringEvent' |
| description: The original event ingested. |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/CustomerReference' |
| description: The customer if the event is associated with a customer. |
| ingested_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The date and time the event was ingested and its processing started. |
| stored_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: The date and time the event was stored in the database. |
| validation_errors: |
| type: array |
| items: |
| $ref: '#/components/schemas/MeteringIngestedEventValidationError' |
| description: The validation errors of the ingested event. |
| additionalProperties: false |
| description: An ingested metering event with ingestion metadata. |
| title: Ingested Event |
| example: |
| event: |
| id: 5c10fade-1c9e-4d6c-8275-c52c36731d3c |
| source: service-name |
| specversion: '1.0' |
| type: prompt |
| subject: customer_key |
| time: '2023-01-01T01:01:01.001Z' |
| customer: |
| id: 01G65Z755AFWAKHE12NY0CQ9FH |
| ingested_at: '2023-01-01T01:01:01.001Z' |
| stored_at: '2023-01-01T01:01:02.001Z' |
| MeteringIngestedEventValidationError: |
| type: object |
| required: |
| - code |
| - message |
| properties: |
| code: |
| type: string |
| description: The machine readable code of the error. |
| title: Code |
| readOnly: true |
| message: |
| type: string |
| description: The human readable description of the error. |
| title: Message |
| readOnly: true |
| attributes: |
| type: object |
| additionalProperties: {} |
| description: Additional attributes. |
| title: Attributes |
| readOnly: true |
| additionalProperties: false |
| description: Event validation errors. |
| Numeric: |
| type: string |
| pattern: ^\-?[0-9]+(\.[0-9]+)?$ |
| description: Numeric represents an arbitrary precision number. |
| OrganizationDefaultTaxCodes: |
| type: object |
| required: |
| - invoicing_tax_code |
| - credit_grant_tax_code |
| - created_at |
| - updated_at |
| properties: |
| invoicing_tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: Default tax code for invoicing. |
| title: Invoicing tax code |
| credit_grant_tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: Default tax code for credit grants. |
| title: Credit grant tax code |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp of creation. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: Timestamp of last update. |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| Organization-level default tax code references. |
| |
| Stores the default tax codes applied to specific billing contexts for this |
| organization. Provisioned automatically when the organization is created. |
| PlanAddon: |
| type: object |
| required: |
| - id |
| - name |
| - created_at |
| - updated_at |
| - addon |
| - from_plan_phase |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| addon: |
| allOf: |
| - $ref: '#/components/schemas/AddonReference' |
| description: The add-on associated with the plan. |
| title: Add-on |
| from_plan_phase: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The key of the plan phase from which the add-on becomes available for purchase. |
| title: From plan phase |
| max_quantity: |
| type: integer |
| minimum: 1 |
| description: |- |
| The maximum number of times the add-on can be purchased for the plan. For |
| single-instance add-ons this field must be omitted. For multi-instance add-ons |
| when omitted, unlimited quantity can be purchased. |
| title: Max quantity |
| validation_errors: |
| type: array |
| items: |
| $ref: '#/components/schemas/ProductCatalogValidationError' |
| description: List of validation errors. |
| title: Validation errors |
| readOnly: true |
| additionalProperties: false |
| description: |- |
| PlanAddon represents an association between a plan and an add-on, controlling |
| which add-ons are available for purchase within a plan. |
| PlanAddonPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/PlanAddon' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| PlanPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPlan' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| PricePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/LLMCostPrice' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| ProductCatalogValidationError: |
| type: object |
| required: |
| - code |
| - message |
| - field |
| properties: |
| code: |
| type: string |
| description: Machine-readable error code. |
| title: Code |
| readOnly: true |
| message: |
| type: string |
| description: Human-readable description of the error. |
| title: Message |
| readOnly: true |
| attributes: |
| type: object |
| additionalProperties: {} |
| description: Additional structured context. |
| title: Attributes |
| readOnly: true |
| field: |
| type: string |
| description: The path to the field. |
| title: Field |
| example: addons/pro/ratecards/token/featureKey |
| readOnly: true |
| additionalProperties: false |
| description: Validation errors providing detailed description of the issue. |
| QueryFilterString: |
| type: object |
| properties: |
| eq: |
| type: string |
| description: The attribute equals the provided value. |
| neq: |
| type: string |
| description: The attribute does not equal the provided value. |
| in: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: The attribute is one of the provided values. |
| nin: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: The attribute is not one of the provided values. |
| contains: |
| type: string |
| description: The attribute contains the provided value. |
| ncontains: |
| type: string |
| description: The attribute does not contain the provided value. |
| and: |
| minItems: 1 |
| maxItems: 10 |
| description: Combines the provided filters with a logical AND. |
| type: array |
| items: |
| $ref: '#/components/schemas/QueryFilterString' |
| or: |
| minItems: 1 |
| maxItems: 10 |
| description: Combines the provided filters with a logical OR. |
| type: array |
| items: |
| $ref: '#/components/schemas/QueryFilterString' |
| additionalProperties: false |
| description: |- |
| A query filter for a string attribute. Operators are mutually exclusive, only |
| one operator is allowed at a time. |
| title: Query String Filter |
| QueryFilterStringMapItem: |
| type: object |
| properties: |
| exists: |
| type: boolean |
| description: The attribute exists. |
| eq: |
| type: string |
| description: The attribute equals the provided value. |
| neq: |
| type: string |
| description: The attribute does not equal the provided value. |
| in: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: The attribute is one of the provided values. |
| nin: |
| type: array |
| items: |
| type: string |
| minItems: 1 |
| maxItems: 100 |
| description: The attribute is not one of the provided values. |
| contains: |
| type: string |
| description: The attribute contains the provided value. |
| ncontains: |
| type: string |
| description: The attribute does not contain the provided value. |
| and: |
| type: array |
| items: |
| $ref: '#/components/schemas/QueryFilterString' |
| minItems: 1 |
| maxItems: 10 |
| description: Combines the provided filters with a logical AND. |
| or: |
| type: array |
| items: |
| $ref: '#/components/schemas/QueryFilterString' |
| minItems: 1 |
| maxItems: 10 |
| description: Combines the provided filters with a logical OR. |
| additionalProperties: false |
| description: |- |
| A query filter for an item in a string map attribute. Operators are mutually |
| exclusive, only one operator is allowed at a time. |
| title: Query String Map Item Filter |
| RecurringPeriod: |
| type: object |
| required: |
| - anchor |
| - interval |
| properties: |
| anchor: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: A date-time anchor to base the recurring period on. |
| title: Anchor time |
| example: '2023-01-01T01:01:01.001Z' |
| interval: |
| allOf: |
| - $ref: '#/components/schemas/ISO8601Duration' |
| description: The interval duration in ISO 8601 format. |
| title: Interval in ISO 8601 duration format |
| example: P1M |
| additionalProperties: false |
| description: Recurring period with an anchor and an interval. |
| ResourceKey: |
| type: string |
| minLength: 1 |
| maxLength: 64 |
| pattern: ^[a-z0-9]+(?:_[a-z0-9]+)*$ |
| description: A key is a unique string that is used to identify a resource. |
| title: Resource Key |
| example: resource_key |
| StringFieldFilter: |
| anyOf: |
| - type: string |
| - type: object |
| properties: |
| eq: |
| type: string |
| description: Value strictly equals the given string value. |
| neq: |
| type: string |
| description: Value does not equal the given string value. |
| contains: |
| type: string |
| description: Value contains the given string value (fuzzy match). |
| ocontains: |
| type: string |
| description: |- |
| Returns entities that fuzzy-match any of the comma-delimited phrases in the |
| filter string. |
| oeq: |
| type: string |
| description: |- |
| Returns entities that exact match any of the comma-delimited phrases in the |
| filter string. |
| gt: |
| type: string |
| description: Value is greater than the given string value (lexicographic compare). |
| gte: |
| type: string |
| description: |- |
| Value is greater than or equal to the given string value (lexicographic |
| compare). |
| lt: |
| type: string |
| description: Value is less than the given string value (lexicographic compare). |
| lte: |
| type: string |
| description: Value is less than or equal to the given string value (lexicographic compare). |
| exists: |
| type: boolean |
| description: |- |
| When true, the field must be present (non-null); when false, the field must be |
| absent (null). |
| additionalProperties: false |
| description: |- |
| Filters on the given string field value by either exact or fuzzy match. All |
| properties are optional; provide exactly one to specify the comparison. |
| x-go-type-import: |
| path: github.com/openmeterio/openmeter/api/v3/filters |
| x-go-type: filters.FilterString |
| StringFieldFilterExact: |
| anyOf: |
| - type: string |
| - type: object |
| properties: |
| eq: |
| type: string |
| description: Value strictly equals the given string value. |
| oeq: |
| type: string |
| description: |- |
| Returns entities that exact match any of the comma-delimited phrases in the |
| filter string. |
| neq: |
| type: string |
| description: Value does not equal the given string value. |
| additionalProperties: false |
| description: |- |
| Filters on the given string field value by exact match. All properties are |
| optional; provide exactly one to specify the comparison. |
| title: String Field Filter Exact |
| x-go-type-import: |
| path: github.com/openmeterio/openmeter/api/v3/filters |
| x-go-type: filters.FilterStringExact |
| SubscriptionAddon: |
| type: object |
| required: |
| - id |
| - created_at |
| - updated_at |
| - name |
| - addon |
| - quantity |
| - quantity_at |
| - active_from |
| - timeline |
| - rate_cards |
| properties: |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| readOnly: true |
| labels: |
| $ref: '#/components/schemas/Labels' |
| created_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity creation date. |
| readOnly: true |
| updated_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity last update date. |
| readOnly: true |
| deleted_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of entity deletion date. |
| readOnly: true |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| readOnly: true |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| readOnly: true |
| addon: |
| allOf: |
| - $ref: '#/components/schemas/AddonReference' |
| description: The add-on associated with the subscription. |
| title: Add-on |
| quantity: |
| type: integer |
| minimum: 1 |
| description: The quantity of the add-on. Always 1 for single instance add-ons. |
| title: Quantity |
| quantity_at: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| An ISO-8601 timestamp representation of which point in time the quantity was |
| resolved to. |
| readOnly: true |
| active_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of the cadence start of the resource. |
| readOnly: true |
| active_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of the cadence end of the resource. |
| readOnly: true |
| timeline: |
| type: array |
| items: |
| $ref: '#/components/schemas/SubscriptionAddonTimelineSegment' |
| description: The timeline of the add-on. The returned periods are sorted and continuous. |
| title: Timeline |
| example: |
| - quantity: 1 |
| active_from: '2025-01-01T00:00:00Z' |
| active_to: '2025-01-02T00:00:00Z' |
| - quantity: 0 |
| active_from: '2025-01-02T00:00:00Z' |
| active_to: '2025-01-03T00:00:00Z' |
| - quantity: 1 |
| active_from: '2025-01-03T00:00:00Z' |
| readOnly: true |
| rate_cards: |
| type: array |
| items: |
| $ref: '#/components/schemas/SubscriptionAddonRateCard' |
| description: The rate cards of the add-on. |
| title: Rate cards |
| readOnly: true |
| additionalProperties: false |
| description: Addon purchased with a subscription. |
| SubscriptionAddonPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/SubscriptionAddon' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| SubscriptionAddonRateCard: |
| type: object |
| required: |
| - rate_card |
| - affected_subscription_item_ids |
| properties: |
| rate_card: |
| allOf: |
| - $ref: '#/components/schemas/BillingRateCard' |
| description: The rate card. |
| title: Rate card |
| affected_subscription_item_ids: |
| type: array |
| items: |
| $ref: '#/components/schemas/ULID' |
| description: The IDs of the subscription items that this rate card belongs to. |
| title: Affected subscription item IDs |
| readOnly: true |
| additionalProperties: false |
| description: A rate card for a subscription add-on. |
| SubscriptionAddonTimelineSegment: |
| type: object |
| required: |
| - active_from |
| - quantity |
| properties: |
| active_from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of the cadence start of the resource. |
| readOnly: true |
| active_to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: An ISO-8601 timestamp representation of the cadence end of the resource. |
| readOnly: true |
| quantity: |
| type: integer |
| minimum: 0 |
| description: The quantity of the add-on for the given period. |
| title: Quantity |
| example: 1 |
| readOnly: true |
| additionalProperties: false |
| description: A subscription add-on event. |
| SubscriptionPagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingSubscription' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| TaxCodePagePaginatedResponse: |
| type: object |
| required: |
| - data |
| - meta |
| properties: |
| data: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingTaxCode' |
| meta: |
| $ref: '#/components/schemas/PaginatedMeta' |
| additionalProperties: false |
| description: Page paginated response. |
| TaxCodeReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: TaxCode reference. |
| ULID: |
| type: string |
| pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$ |
| description: ULID (Universally Unique Lexicographically Sortable Identifier). |
| title: ULID |
| example: 01G65Z755AFWAKHE12NY0CQ9FH |
| ULIDFieldFilter: |
| anyOf: |
| - $ref: '#/components/schemas/ULID' |
| - type: object |
| properties: |
| eq: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Value strictly equals the given ULID value. |
| oeq: |
| type: string |
| description: |- |
| Returns entities that exact match any of the comma-delimited ULIDs in the filter |
| string. |
| neq: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: Value does not equal the given ULID value. |
| additionalProperties: false |
| description: |- |
| Filters on the given ULID field value by exact match. All properties are |
| optional; provide exactly one to specify the comparison. |
| title: ULID Field Filter |
| x-go-type-import: |
| path: github.com/openmeterio/openmeter/api/v3/filters |
| x-go-type: filters.FilterULID |
| UpdateAddress: |
| type: object |
| properties: |
| country: |
| allOf: |
| - $ref: '#/components/schemas/CountryCode' |
| description: |- |
| Country code in [ISO 3166-1](https://www.iso.org/iso-3166-country-codes.html) |
| alpha-2 format. |
| title: Country |
| postal_code: |
| type: string |
| description: Postal code. |
| title: Postal Code |
| state: |
| type: string |
| description: State or province. |
| title: State |
| city: |
| type: string |
| description: City. |
| title: City |
| line1: |
| type: string |
| description: First line of the address. |
| title: Line 1 |
| line2: |
| type: string |
| description: Second line of the address. |
| title: Line 2 |
| phone_number: |
| type: string |
| description: Phone number. |
| title: Phone Number |
| additionalProperties: false |
| description: Address |
| UpdateBillingInvoiceWorkflow: |
| type: object |
| properties: |
| invoicing: |
| allOf: |
| - $ref: '#/components/schemas/UpdateBillingInvoiceWorkflowInvoicingSettings' |
| description: Invoicing settings for this invoice. |
| title: Invoicing settings |
| payment: |
| allOf: |
| - $ref: '#/components/schemas/UpdateBillingWorkflowPaymentSettings' |
| description: Payment settings for this invoice. |
| title: Payment settings |
| additionalProperties: false |
| description: |- |
| Invoice-level snapshot of the workflow configuration. |
| |
| Contains only the settings that are meaningful for an already-created invoice: |
| invoicing behaviour and payment settings. Collection alignment and tax policy |
| are gather-time / profile-wide concerns and are not included. |
| UpdateBillingInvoiceWorkflowInvoicingSettings: |
| type: object |
| properties: |
| auto_advance: |
| type: boolean |
| description: Whether to automatically issue the invoice after the draft_period has passed. |
| default: true |
| draft_period: |
| type: string |
| format: ISO8601 |
| description: The period for the invoice to be kept in draft status for manual reviews. |
| example: P1D |
| default: P0D |
| additionalProperties: false |
| description: |- |
| Invoice-level invoicing settings. |
| |
| A subset of BillingWorkflowInvoicingSettings limited to fields that are |
| meaningful per-invoice. progressive_billing is omitted as it is a gather-time / |
| profile-level decision. |
| UpdateBillingPartyAddresses: |
| type: object |
| required: |
| - billing_address |
| properties: |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/UpdateAddress' |
| description: Billing address. |
| additionalProperties: false |
| description: A collection of addresses for the party. |
| UpdateBillingPartyTaxIdentity: |
| type: object |
| properties: |
| code: |
| allOf: |
| - $ref: '#/components/schemas/BillingTaxIdentificationCode' |
| description: Normalized tax identification code shown on the original identity document. |
| additionalProperties: false |
| description: |- |
| Identity stores the details required to identify an entity for tax purposes in a |
| specific country. |
| UpdateBillingWorkflowPaymentChargeAutomaticallySettings: |
| type: object |
| required: |
| - collection_method |
| properties: |
| collection_method: |
| type: string |
| enum: |
| - charge_automatically |
| description: The collection method for the invoice. |
| additionalProperties: false |
| description: |- |
| Payment settings for a billing workflow when the collection method is charge |
| automatically. |
| UpdateBillingWorkflowPaymentSendInvoiceSettings: |
| type: object |
| required: |
| - collection_method |
| properties: |
| collection_method: |
| type: string |
| enum: |
| - send_invoice |
| description: The collection method for the invoice. |
| due_after: |
| type: string |
| format: ISO8601 |
| description: |- |
| The period after which the invoice is due. With some payment solutions it's only |
| applicable for manual collection method. |
| example: P30D |
| default: P30D |
| additionalProperties: false |
| description: |- |
| Payment settings for a billing workflow when the collection method is send |
| invoice. |
| UpdateBillingWorkflowPaymentSettings: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/UpdateBillingWorkflowPaymentChargeAutomaticallySettings' |
| - $ref: '#/components/schemas/UpdateBillingWorkflowPaymentSendInvoiceSettings' |
| discriminator: |
| propertyName: collection_method |
| mapping: |
| charge_automatically: '#/components/schemas/UpdateBillingWorkflowPaymentChargeAutomaticallySettings' |
| send_invoice: '#/components/schemas/UpdateBillingWorkflowPaymentSendInvoiceSettings' |
| description: Payment settings for a billing workflow. |
| UpdateClosedPeriod: |
| type: object |
| required: |
| - from |
| - to |
| properties: |
| from: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The start of the period. |
| |
| The period is inclusive at the start. |
| title: Start |
| example: '2023-01-01T01:01:01.001Z' |
| to: |
| allOf: |
| - $ref: '#/components/schemas/DateTime' |
| description: |- |
| The end of the period. |
| |
| The period is exclusive at the end. |
| title: End |
| example: '2023-01-01T01:01:01.001Z' |
| additionalProperties: false |
| description: |- |
| A period with defined start and end dates. |
| |
| The period is always inclusive at the start and exclusive at the end. |
| UpdateCreditGrantExternalSettlementRequest: |
| type: object |
| required: |
| - status |
| properties: |
| status: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditPurchasePaymentSettlementStatus' |
| description: The new payment settlement status. |
| additionalProperties: false |
| description: |- |
| Request body for updating the external payment settlement status of a credit |
| grant. |
| UpdateCustomerUsageAttribution: |
| type: object |
| required: |
| - subject_keys |
| properties: |
| subject_keys: |
| type: array |
| items: |
| $ref: '#/components/schemas/UsageAttributionSubjectKey' |
| minItems: 0 |
| description: |- |
| The subjects that are attributed to the customer. Can be empty when no usage |
| event subjects are associated with the customer. |
| title: Subject Keys |
| additionalProperties: false |
| description: |- |
| Mapping to attribute metered usage to the customer. One customer can have zero |
| or more subjects, but one subject can only belong to one customer. |
| UpdateDiscounts: |
| type: object |
| properties: |
| percentage: |
| type: number |
| minimum: 0 |
| maximum: 100 |
| description: Percentage discount applied to the price (0–100). |
| usage: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Number of usage units granted free before billing starts. Only applies to |
| usage-based lines (not flat fees). Usage is treated as zero until this amount is |
| exhausted. |
| additionalProperties: false |
| description: Discount configuration for a rate card. |
| UpdateFeatureRequest: |
| type: object |
| properties: |
| unit_cost: |
| allOf: |
| - $ref: '#/components/schemas/BillingFeatureUnitCost' |
| nullable: true |
| description: |- |
| Optional per-unit cost configuration. Use "manual" for a fixed per-unit cost, or |
| "llm" to look up cost from the LLM cost database based on meter group-by |
| properties. Set to `null` to clear the existing unit cost; omit to leave it |
| unchanged. |
| title: Unit cost |
| additionalProperties: false |
| description: |- |
| Request body for updating a feature. Currently only the unit_cost field can be |
| updated. |
| UpdateInvoiceCustomer: |
| type: object |
| required: |
| - name |
| - id |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| usage_attribution: |
| allOf: |
| - $ref: '#/components/schemas/UpdateCustomerUsageAttribution' |
| description: Mapping to attribute metered usage to the customer by the event subject. |
| title: Usage Attribution |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/UpdateAddress' |
| description: The billing address of the customer. Used for tax and invoicing. |
| title: Billing Address |
| id: |
| $ref: '#/components/schemas/ULID' |
| key: |
| allOf: |
| - $ref: '#/components/schemas/ExternalResourceKey' |
| description: |- |
| Optional external resource key for the customer. |
| |
| Omitted when the customer was created without a key. Unlike on the customer |
| resource itself, the key is optional here because the invoice snapshot may |
| predate or omit it. |
| additionalProperties: false |
| description: Snapshot of the customer's information at the time the invoice was issued. |
| UpdateInvoiceLine: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/UpdateInvoiceStandardLine' |
| discriminator: |
| propertyName: type |
| mapping: |
| standard_line: '#/components/schemas/UpdateInvoiceStandardLine' |
| description: |- |
| A top-level line item on an invoice. |
| |
| Each line represents a single charge, typically associated with a rate card from |
| a subscription. Detailed (child) lines are nested under `detailed_lines` when |
| present. |
| UpdateInvoiceLineRateCard: |
| type: object |
| required: |
| - price |
| properties: |
| price: |
| allOf: |
| - $ref: '#/components/schemas/UpdatePrice' |
| description: The price definition used to calculate charges for this line. |
| title: Price |
| tax_config: |
| allOf: |
| - $ref: '#/components/schemas/UpdateRateCardTaxConfig' |
| description: Tax configuration snapshot for this line. |
| title: Tax config |
| feature_key: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The feature key associated with this line's rate card. |
| title: Feature key |
| discounts: |
| allOf: |
| - $ref: '#/components/schemas/UpdateDiscounts' |
| description: Discount configuration from the rate card. |
| title: Discounts |
| additionalProperties: false |
| description: Rate card configuration snapshot for a usage-based invoice line. |
| UpdateInvoiceRequest: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/UpdateInvoiceStandardRequest' |
| discriminator: |
| propertyName: type |
| mapping: |
| standard: '#/components/schemas/UpdateInvoiceStandardRequest' |
| description: UpdateInvoiceRequest update request. |
| UpdateInvoiceStandardLine: |
| type: object |
| required: |
| - name |
| - type |
| - service_period |
| - rate_card |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| id: |
| allOf: |
| - $ref: '#/components/schemas/ULID' |
| description: |- |
| ID of the line. |
| |
| Optional on update: omit to create a new line, or supply the ID of an existing |
| line to edit it. Existing lines omitted from an update's `lines` array are |
| deleted. |
| title: ID |
| type: |
| type: string |
| enum: |
| - standard_line |
| description: The type of charge this line item represents. |
| title: Type |
| service_period: |
| allOf: |
| - $ref: '#/components/schemas/UpdateClosedPeriod' |
| description: |- |
| The service period covered by this invoice, spanning the earliest line start to |
| the latest line end across all of its lines. |
| |
| For an invoice with no lines the period is empty, which means `from` will be |
| equal to `to`. |
| title: Service period |
| rate_card: |
| allOf: |
| - $ref: '#/components/schemas/UpdateInvoiceLineRateCard' |
| description: The rate card configuration snapshot used to price this line item. |
| title: Rate card |
| additionalProperties: false |
| description: |- |
| A top-level line item on an invoice. |
| |
| Each line represents a single charge, typically associated with a rate card from |
| a subscription. Detailed (child) lines are nested under `detailed_lines` when |
| present. |
| UpdateInvoiceStandardRequest: |
| type: object |
| required: |
| - supplier |
| - customer |
| - type |
| - workflow |
| properties: |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| supplier: |
| allOf: |
| - $ref: '#/components/schemas/UpdateSupplier' |
| description: |- |
| Snapshot of the supplier's contact information at the time the invoice was |
| issued. |
| title: Supplier |
| customer: |
| allOf: |
| - $ref: '#/components/schemas/UpdateInvoiceCustomer' |
| description: Snapshot of the customer's information at the time the invoice was issued. |
| title: Customer |
| type: |
| type: string |
| enum: |
| - standard |
| description: Discriminator field identifying this as a standard invoice. |
| title: Type |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/UpdateInvoiceWorkflowSettings' |
| description: Workflow configuration snapshot captured at invoice creation time. |
| title: Workflow |
| lines: |
| type: array |
| items: |
| $ref: '#/components/schemas/UpdateInvoiceLine' |
| description: |- |
| Line items on this invoice. |
| |
| Always returned on single-resource GET; omitted on list endpoints unless |
| explicitly expanded. Editable via update: existing lines are matched by `id`, |
| lines without an `id` are created, and lines present on the invoice but omitted |
| from the update request are deleted. Detailed (child) lines are always computed |
| and cannot be edited directly. |
| title: Lines |
| additionalProperties: false |
| description: InvoiceStandard update request. |
| UpdateInvoiceWorkflowSettings: |
| type: object |
| required: |
| - workflow |
| properties: |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/UpdateBillingInvoiceWorkflow' |
| description: |- |
| The workflow configuration that was active when the invoice was created. |
| |
| Only the fields that are meaningful at the per-invoice level are included: |
| invoicing behaviour (auto-advance, draft period) and payment settings |
| (collection method, due date). Profile-wide settings such as collection |
| alignment, progressive billing, and tax policy are omitted. |
| title: Workflow config |
| additionalProperties: false |
| description: Snapshot of the billing workflow configuration captured at invoice creation. |
| UpdateMeterRequest: |
| type: object |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| dimensions: |
| type: object |
| additionalProperties: |
| type: string |
| description: |- |
| Named JSONPath expressions to extract the group by values from the event data. |
| |
| Keys must be unique and consist only alphanumeric and underscore characters. |
| example: |
| type: $.type |
| additionalProperties: false |
| description: Meter update request. |
| UpdateOrganizationDefaultTaxCodesRequest: |
| type: object |
| properties: |
| invoicing_tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: Default tax code for invoicing. |
| title: Invoicing tax code |
| credit_grant_tax_code: |
| allOf: |
| - $ref: '#/components/schemas/TaxCodeReference' |
| description: Default tax code for credit grants. |
| title: Credit grant tax code |
| additionalProperties: false |
| description: OrganizationDefaultTaxCodes update request. |
| UpdatePrice: |
| type: object |
| oneOf: |
| - $ref: '#/components/schemas/UpdatePriceFree' |
| - $ref: '#/components/schemas/UpdatePriceFlat' |
| - $ref: '#/components/schemas/UpdatePriceUnit' |
| - $ref: '#/components/schemas/UpdatePriceGraduated' |
| - $ref: '#/components/schemas/UpdatePriceVolume' |
| discriminator: |
| propertyName: type |
| mapping: |
| free: '#/components/schemas/UpdatePriceFree' |
| flat: '#/components/schemas/UpdatePriceFlat' |
| unit: '#/components/schemas/UpdatePriceUnit' |
| graduated: '#/components/schemas/UpdatePriceGraduated' |
| volume: '#/components/schemas/UpdatePriceVolume' |
| description: Price. |
| UpdatePriceFlat: |
| type: object |
| required: |
| - type |
| - amount |
| properties: |
| type: |
| type: string |
| enum: |
| - flat |
| description: The type of the price. |
| title: Type |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The amount of the flat price. |
| title: Amount |
| additionalProperties: false |
| description: Flat price. |
| UpdatePriceFree: |
| type: object |
| required: |
| - type |
| properties: |
| type: |
| type: string |
| enum: |
| - free |
| description: The type of the price. |
| title: Type |
| additionalProperties: false |
| description: Free price. |
| UpdatePriceGraduated: |
| type: object |
| required: |
| - type |
| - tiers |
| properties: |
| type: |
| type: string |
| enum: |
| - graduated |
| description: The type of the price. |
| title: Type |
| tiers: |
| type: array |
| items: |
| $ref: '#/components/schemas/UpdatePriceTier' |
| minItems: 1 |
| description: The tiers of the graduated price. At least one tier is required. |
| title: Tiers |
| additionalProperties: false |
| description: |- |
| Graduated tiered price. |
| |
| Each tier's rate applies only to the usage within that tier. Pricing can change |
| as cumulative usage crosses tier boundaries. |
|
|
| When UnitConfig is present on the rate card, tier boundaries (up_to_amount) are |
| expressed in converted billing units. |
| UpdatePriceTier: |
| type: object |
| properties: |
| up_to_amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: |- |
| Up to and including this quantity will be contained in the tier. If undefined, |
| the tier is open-ended (the last tier). |
| title: Up to quantity |
| flat_price: |
| allOf: |
| - $ref: '#/components/schemas/UpdatePriceFlat' |
| description: The flat price component of the tier. Charged once when the tier is entered. |
| title: Flat price component |
| unit_price: |
| allOf: |
| - $ref: '#/components/schemas/UpdatePriceUnit' |
| description: The unit price component of the tier. Charged per billing unit within the tier. |
| title: Unit price component |
| additionalProperties: false |
| description: |- |
| A price tier used in graduated and volume pricing. |
| |
| At least one price component (flat_price or unit_price) must be set. When |
| UnitConfig is present on the rate card, up_to_amount is expressed in converted |
| billing units. |
| UpdatePriceUnit: |
| type: object |
| required: |
| - type |
| - amount |
| properties: |
| type: |
| type: string |
| enum: |
| - unit |
| description: The type of the price. |
| title: Type |
| amount: |
| allOf: |
| - $ref: '#/components/schemas/Numeric' |
| description: The amount of the unit price. |
| title: Amount |
| additionalProperties: false |
| description: |- |
| Unit price. |
| |
| Charges a fixed rate per billing unit. When UnitConfig is present on the rate |
| card, billing units are the converted quantities (e.g. GB instead of bytes). |
| UpdatePriceVolume: |
| type: object |
| required: |
| - type |
| - tiers |
| properties: |
| type: |
| type: string |
| enum: |
| - volume |
| description: The type of the price. |
| title: Type |
| tiers: |
| type: array |
| items: |
| $ref: '#/components/schemas/UpdatePriceTier' |
| minItems: 1 |
| description: The tiers of the volume price. At least one tier is required. |
| title: Tiers |
| additionalProperties: false |
| description: |- |
| Volume tiered price. |
| |
| The maximum quantity within a period determines the per-unit price for all units |
| in that period. |
|
|
| When UnitConfig is present on the rate card, tier boundaries (up_to_amount) are |
| expressed in converted billing units. |
| UpdateRateCardTaxConfig: |
| type: object |
| required: |
| - code |
| properties: |
| behavior: |
| $ref: '#/components/schemas/BillingTaxBehavior' |
| code: |
| $ref: '#/components/schemas/UpdateResourceReference' |
| additionalProperties: false |
| description: The tax config of the rate card. |
| UpdateResourceReference: |
| type: object |
| required: |
| - id |
| properties: |
| id: |
| $ref: '#/components/schemas/ULID' |
| additionalProperties: false |
| description: TaxCode reference. |
| UpdateSupplier: |
| type: object |
| properties: |
| name: |
| type: string |
| description: Legal name or representation of the party. |
| tax_id: |
| allOf: |
| - $ref: '#/components/schemas/UpdateBillingPartyTaxIdentity' |
| description: |- |
| The entity's legal identification used for tax purposes. They may have other |
| numbers, but we're only interested in those valid for tax purposes. |
| addresses: |
| allOf: |
| - $ref: '#/components/schemas/UpdateBillingPartyAddresses' |
| description: Address for where information should be sent if needed. |
| id: |
| type: string |
| description: Unique identifier for the party. |
| additionalProperties: false |
| description: |- |
| Snapshot of the supplier's information at the time the invoice was issued. |
| |
| Structurally a read-only subset of `BillingParty` (the type configured on the |
| billing profile), so the snapshot stays aligned with the source. `key` is |
| omitted because it is not part of the snapshotted supplier data. |
| UpsertAddonRequest: |
| type: object |
| required: |
| - name |
| - instance_type |
| - rate_cards |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| instance_type: |
| allOf: |
| - $ref: '#/components/schemas/AddonInstanceType' |
| description: The InstanceType of the add-ons. Can be "single" or "multiple". |
| title: The InstanceType of the add-ons. Can be "single" or "multiple". |
| rate_cards: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingRateCard' |
| description: The rate cards of the add-on. |
| title: Rate cards |
| additionalProperties: false |
| description: Addon upsert request. |
| UpsertAppCustomerDataRequest: |
| type: object |
| properties: |
| stripe: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerDataStripe' |
| description: Used if the customer has a linked Stripe app. |
| title: Stripe |
| external_invoicing: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerDataExternalInvoicing' |
| description: Used if the customer has a linked external invoicing app. |
| title: External invoicing |
| additionalProperties: false |
| description: AppCustomerData upsert request. |
| UpsertBillingProfileRequest: |
| type: object |
| required: |
| - name |
| - supplier |
| - workflow |
| - default |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| supplier: |
| allOf: |
| - $ref: '#/components/schemas/BillingParty' |
| description: |- |
| The name and contact information for the supplier this billing profile |
| represents |
| workflow: |
| allOf: |
| - $ref: '#/components/schemas/BillingWorkflow' |
| description: The billing workflow settings for this profile |
| default: |
| type: boolean |
| description: Whether this is the default profile. |
| additionalProperties: false |
| description: BillingProfile upsert request. |
| UpsertCustomerBillingDataRequest: |
| type: object |
| properties: |
| billing_profile: |
| allOf: |
| - $ref: '#/components/schemas/BillingProfileReference' |
| description: |- |
| The billing profile for the customer. |
| |
| If not provided, the default billing profile will be used. |
| title: Billing profile |
| app_data: |
| allOf: |
| - $ref: '#/components/schemas/BillingAppCustomerData' |
| description: App customer data. |
| title: App customer data |
| additionalProperties: false |
| description: CustomerBillingData upsert request. |
| UpsertCustomerRequest: |
| type: object |
| required: |
| - name |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| usage_attribution: |
| allOf: |
| - $ref: '#/components/schemas/BillingCustomerUsageAttribution' |
| description: Mapping to attribute metered usage to the customer by the event subject. |
| title: Usage Attribution |
| primary_email: |
| type: string |
| description: The primary email address of the customer. |
| title: Primary Email |
| currency: |
| allOf: |
| - $ref: '#/components/schemas/CurrencyCode' |
| description: Currency of the customer. Used for billing, tax and invoicing. |
| title: Currency |
| billing_address: |
| allOf: |
| - $ref: '#/components/schemas/Address' |
| description: The billing address of the customer. Used for tax and invoicing. |
| title: Billing Address |
| additionalProperties: false |
| description: Customer upsert request. |
| UpsertPlanAddonRequest: |
| type: object |
| required: |
| - name |
| - from_plan_phase |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| from_plan_phase: |
| allOf: |
| - $ref: '#/components/schemas/ResourceKey' |
| description: The key of the plan phase from which the add-on becomes available for purchase. |
| title: From plan phase |
| max_quantity: |
| type: integer |
| minimum: 1 |
| description: |- |
| The maximum number of times the add-on can be purchased for the plan. For |
| single-instance add-ons this field must be omitted. For multi-instance add-ons |
| when omitted, unlimited quantity can be purchased. |
| title: Max quantity |
| additionalProperties: false |
| description: PlanAddon upsert request. |
| UpsertPlanRequest: |
| type: object |
| required: |
| - name |
| - phases |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| pro_rating_enabled: |
| type: boolean |
| description: Whether pro-rating is enabled for this plan. |
| title: Pro-rating enabled |
| default: true |
| phases: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingPlanPhase' |
| minItems: 1 |
| description: |- |
| The plan phases define the pricing ramp for a subscription. A phase switch |
| occurs only at the end of a billing period. At least one phase is required. |
| title: Plan phases |
| additionalProperties: false |
| description: Plan upsert request. |
| UpsertTaxCodeRequest: |
| type: object |
| required: |
| - name |
| - app_mappings |
| properties: |
| name: |
| type: string |
| minLength: 1 |
| maxLength: 256 |
| description: |- |
| Display name of the resource. |
| |
| Between 1 and 256 characters. |
| description: |
| type: string |
| maxLength: 1024 |
| description: |- |
| Optional description of the resource. |
| |
| Maximum 1024 characters. |
| labels: |
| $ref: '#/components/schemas/Labels' |
| app_mappings: |
| type: array |
| items: |
| $ref: '#/components/schemas/BillingTaxCodeAppMapping' |
| description: Mapping of app types to tax codes. |
| title: App type to tax code mappings |
| additionalProperties: false |
| description: TaxCode upsert request. |
| UsageAttributionSubjectKey: |
| type: string |
| minLength: 1 |
| description: Subject key. |
| VoidCreditGrantRequest: |
| type: object |
| properties: |
| payment_adjustment: |
| allOf: |
| - $ref: '#/components/schemas/BillingCreditGrantVoidPaymentAdjustment' |
| description: |- |
| How voiding adjusts payment state related to the grant. |
| |
| Currently only `none` is supported: voiding does not adjust invoices, payment |
| authorization, settlement, payment intents, or external collection state. If |
| payment later completes, the original invoiced amount may still be collected. |
| default: none |
| additionalProperties: false |
| description: Request body for voiding a credit grant. |
| SortQuery: |
| title: SortQuery |
| type: string |
| example: created_at desc |
| description: | |
| The `asc` suffix is optional as the default sort order is ascending. |
| The `desc` suffix is used to specify a descending order. |
| Multiple sort attributes may be provided via a comma separated list. |
| JSONPath notation may be used to specify a sub-attribute (eg: 'foo.bar desc'). |
| Labels: |
| title: Labels |
| type: object |
| example: |
| env: test |
| maxProperties: 50 |
| description: | |
| Labels store metadata of an entity that can be used for filtering an entity list or for searching across entity types. |
| |
| Keys must be of length 1-63 characters, and cannot start with "kong", "konnect", "mesh", "kic", or "_". |
| additionalProperties: |
| type: string |
| pattern: ^[a-z0-9A-Z]{1}([a-z0-9A-Z-._]*[a-z0-9A-Z]+)?$ |
| minLength: 1 |
| maxLength: 63 |
| PageMeta: |
| type: object |
| description: Contains pagination query parameters and the total number of objects returned. |
| required: |
| - number |
| - size |
| - total |
| properties: |
| number: |
| type: number |
| example: 1 |
| x-speakeasy-terraform-ignore: true |
| size: |
| type: number |
| example: 10 |
| x-speakeasy-terraform-ignore: true |
| total: |
| type: number |
| example: 100 |
| x-speakeasy-terraform-ignore: true |
| PaginatedMeta: |
| type: object |
| title: PaginatedMeta |
| x-speakeasy-terraform-ignore: true |
| description: returns the pagination information |
| properties: |
| page: |
| $ref: '#/components/schemas/PageMeta' |
| required: |
| - page |
| BaseError: |
| type: object |
| title: Error |
| description: standard error |
| required: |
| - status |
| - title |
| - instance |
| - detail |
| properties: |
| status: |
| type: integer |
| description: | |
| The HTTP status code of the error. Useful when passing the response |
| body to child properties in a frontend UI. Must be returned as an integer. |
| readOnly: true |
| title: |
| type: string |
| description: | |
| A short, human-readable summary of the problem. It should not |
| change between occurences of a problem, except for localization. |
| Should be provided as "Sentence case" for direct use in the UI. |
| readOnly: true |
| type: |
| type: string |
| description: The error type. |
| readOnly: true |
| instance: |
| type: string |
| description: | |
| Used to return the correlation ID back to the user, in the format |
| kong:trace:<correlation_id>. This helps us find the relevant logs |
| when a customer reports an issue. |
| readOnly: true |
| detail: |
| type: string |
| description: | |
| A human readable explanation specific to this occurence of the problem. |
| This field may contain request/entity data to help the user understand |
| what went wrong. Enclose variable values in square brackets. Should be |
| provided as "Sentence case" for direct use in the UI. |
| readOnly: true |
| InvalidRules: |
| description: invalid parameters rules |
| type: string |
| readOnly: true |
| nullable: true |
| enum: |
| - required |
| - is_array |
| - is_base64 |
| - is_boolean |
| - is_date_time |
| - is_integer |
| - is_null |
| - is_number |
| - is_object |
| - is_string |
| - is_uuid |
| - is_fqdn |
| - is_arn |
| - unknown_property |
| - missing_reference |
| - is_label |
| - matches_regex |
| - invalid |
| - is_supported_network_availability_zone_list |
| - is_supported_network_cidr_block |
| - is_supported_provider_region |
| - type |
| InvalidParameterStandard: |
| type: object |
| additionalProperties: false |
| properties: |
| field: |
| type: string |
| example: name |
| readOnly: true |
| rule: |
| $ref: '#/components/schemas/InvalidRules' |
| source: |
| type: string |
| example: body |
| reason: |
| type: string |
| example: is a required field |
| readOnly: true |
| required: |
| - field |
| - reason |
| InvalidParameterMinimumLength: |
| type: object |
| additionalProperties: false |
| properties: |
| field: |
| type: string |
| example: name |
| readOnly: true |
| rule: |
| description: invalid parameters rules |
| type: string |
| readOnly: true |
| nullable: false |
| enum: |
| - min_length |
| - min_digits |
| - min_lowercase |
| - min_uppercase |
| - min_symbols |
| - min_items |
| - min |
| minimum: |
| type: integer |
| example: 8 |
| source: |
| type: string |
| example: body |
| reason: |
| type: string |
| example: must have at least 8 characters |
| readOnly: true |
| required: |
| - field |
| - reason |
| - rule |
| - minimum |
| InvalidParameterMaximumLength: |
| type: object |
| additionalProperties: false |
| properties: |
| field: |
| type: string |
| example: name |
| readOnly: true |
| rule: |
| description: invalid parameters rules |
| type: string |
| readOnly: true |
| nullable: false |
| enum: |
| - max_length |
| - max_items |
| - max |
| maximum: |
| type: integer |
| example: 8 |
| source: |
| type: string |
| example: body |
| reason: |
| type: string |
| example: must not have more than 8 characters |
| readOnly: true |
| required: |
| - field |
| - reason |
| - rule |
| - maximum |
| InvalidParameterChoiceItem: |
| type: object |
| additionalProperties: false |
| properties: |
| field: |
| type: string |
| example: name |
| readOnly: true |
| rule: |
| description: invalid parameters rules |
| type: string |
| readOnly: true |
| nullable: false |
| enum: |
| - enum |
| reason: |
| type: string |
| example: is a required field |
| readOnly: true |
| choices: |
| type: array |
| uniqueItems: true |
| readOnly: true |
| nullable: false |
| minItems: 1 |
| items: {} |
| source: |
| type: string |
| example: body |
| required: |
| - field |
| - reason |
| - rule |
| - choices |
| InvalidParameterDependentItem: |
| type: object |
| additionalProperties: false |
| properties: |
| field: |
| type: string |
| example: name |
| readOnly: true |
| rule: |
| description: invalid parameters rules |
| type: string |
| readOnly: true |
| nullable: true |
| enum: |
| - dependent_fields |
| reason: |
| type: string |
| example: is a required field |
| readOnly: true |
| dependents: |
| type: array |
| uniqueItems: true |
| nullable: true |
| items: {} |
| readOnly: true |
| source: |
| type: string |
| example: body |
| required: |
| - field |
| - rule |
| - reason |
| - dependents |
| InvalidParameters: |
| type: array |
| nullable: false |
| uniqueItems: true |
| minItems: 1 |
| description: invalid parameters |
| items: |
| oneOf: |
| - $ref: '#/components/schemas/InvalidParameterStandard' |
| - $ref: '#/components/schemas/InvalidParameterMinimumLength' |
| - $ref: '#/components/schemas/InvalidParameterMaximumLength' |
| - $ref: '#/components/schemas/InvalidParameterChoiceItem' |
| - $ref: '#/components/schemas/InvalidParameterDependentItem' |
| BadRequestError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| required: |
| - invalid_parameters |
| properties: |
| invalid_parameters: |
| $ref: '#/components/schemas/InvalidParameters' |
| UnauthorizedError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| properties: |
| status: |
| example: 401 |
| title: |
| example: Unauthorized |
| type: |
| example: https://httpstatuses.com/401 |
| instance: |
| example: kong:trace:1234567890 |
| detail: |
| example: Invalid credentials |
| ForbiddenError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| properties: |
| status: |
| example: 403 |
| title: |
| example: Forbidden |
| type: |
| example: https://httpstatuses.com/403 |
| instance: |
| example: kong:trace:1234567890 |
| detail: |
| example: Forbidden |
| NotFoundError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| properties: |
| status: |
| example: 404 |
| title: |
| example: Not Found |
| type: |
| example: https://httpstatuses.com/404 |
| instance: |
| example: kong:trace:1234567890 |
| detail: |
| example: Not found |
| GoneError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| properties: |
| status: |
| example: 410 |
| title: |
| example: Gone |
| type: |
| example: https://httpstatuses.com/410 |
| instance: |
| example: kong:trace:1234567890 |
| detail: |
| example: Gone |
| ConflictError: |
| allOf: |
| - $ref: '#/components/schemas/BaseError' |
| - type: object |
| properties: |
| status: |
| example: 409 |
| title: |
| example: Conflict |
| type: |
| example: https://httpstatuses.com/409 |
| instance: |
| example: kong:trace:1234567890 |
| detail: |
| example: Conflict |
| CursorMetaPage: |
| type: object |
| required: |
| - size |
| - next |
| - previous |
| properties: |
| first: |
| description: URI to the first page |
| type: string |
| format: path |
| last: |
| description: URI to the last page |
| type: string |
| format: path |
| next: |
| description: URI to the next page |
| type: string |
| format: path |
| nullable: true |
| previous: |
| description: URI to the previous page |
| type: string |
| format: path |
| nullable: true |
| size: |
| description: Requested page size |
| type: number |
| example: 10 |
| CursorMeta: |
| type: object |
| description: Pagination metadata. |
| required: |
| - page |
| properties: |
| page: |
| $ref: '#/components/schemas/CursorMetaPage' |
| responses: |
| BadRequest: |
| description: Bad Request |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/BadRequestError' |
| Unauthorized: |
| description: Unauthorized |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/UnauthorizedError' |
| examples: |
| UnauthorizedExample: |
| $ref: '#/components/examples/UnauthorizedExample' |
| Forbidden: |
| description: Forbidden |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/ForbiddenError' |
| examples: |
| UnauthorizedExample: |
| $ref: '#/components/examples/ForbiddenExample' |
| NotFound: |
| description: Not Found |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/NotFoundError' |
| examples: |
| NotFoundExample: |
| $ref: '#/components/examples/NotFoundExample' |
| Gone: |
| description: Gone |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/GoneError' |
| Conflict: |
| description: Conflict |
| content: |
| application/problem+json: |
| schema: |
| $ref: '#/components/schemas/ConflictError' |
| examples: |
| UnauthorizedExample: |
| value: |
| status: 401 |
| title: Unauthorized |
| instance: kong:trace:8347343766220159418 |
| detail: Unauthorized |
| ForbiddenExample: |
| value: |
| status: 403 |
| title: Forbidden |
| instance: kong:trace:2723154947768991354 |
| detail: You do not have permission to perform this action |
| NotFoundExample: |
| value: |
| status: 404 |
| title: Not Found |
| instance: kong:trace:6816496025408232265 |
| detail: Not Found |
|
|