UNPKG

orb-billing

Version:

The official TypeScript library for the Orb API

147 lines 5.38 kB
import { APIResource } from "../core/resource.js"; import * as ItemsAPI from "./items.js"; import { APIPromise } from "../core/api-promise.js"; import { Page, type PageParams, PagePromise } from "../core/pagination.js"; import { RequestOptions } from "../internal/request-options.js"; /** * The Metric resource represents a calculation of a quantity based on events. * Metrics are defined by the query that transforms raw usage events into meaningful values for your customers. */ export declare class Metrics extends APIResource { /** * This endpoint is used to create a [metric](/core-concepts###metric) using a SQL * string. See [SQL support](/extensibility/advanced-metrics#sql-support) for a * description of constructing SQL queries with examples. * * @example * ```ts * const billableMetric = await client.metrics.create({ * description: 'Sum of bytes downloaded in fast mode', * item_id: 'item_id', * name: 'Bytes downloaded', * sql: "SELECT sum(bytes_downloaded) FROM events WHERE download_speed = 'fast'", * }); * ``` */ create(body: MetricCreateParams, options?: RequestOptions): APIPromise<BillableMetric>; /** * This endpoint allows you to update the `metadata` property on a metric. If you * pass `null` for the metadata value, it will clear any existing metadata for that * invoice. * * @example * ```ts * const billableMetric = await client.metrics.update( * 'metric_id', * ); * ``` */ update(metricID: string, body: MetricUpdateParams, options?: RequestOptions): APIPromise<BillableMetric>; /** * This endpoint is used to list [metrics](/core-concepts#metric). It returns * information about the metrics including its name, description, and item. * * @example * ```ts * // Automatically fetches more pages as needed. * for await (const billableMetric of client.metrics.list()) { * // ... * } * ``` */ list(query?: MetricListParams | null | undefined, options?: RequestOptions): PagePromise<BillableMetricsPage, BillableMetric>; /** * This endpoint is used to fetch [metric](/core-concepts#metric) details given a * metric identifier. It returns information about the metrics including its name, * description, and item. * * @example * ```ts * const billableMetric = await client.metrics.fetch( * 'metric_id', * ); * ``` */ fetch(metricID: string, options?: RequestOptions): APIPromise<BillableMetric>; } export type BillableMetricsPage = Page<BillableMetric>; /** * The Metric resource represents a calculation of a quantity based on events. * Metrics are defined by the query that transforms raw usage events into * meaningful values for your customers. */ export interface BillableMetric { id: string; description: string | null; /** * The Item resource represents a sellable product or good. Items are associated * with all line items, billable metrics, and prices and are used for defining * external sync behavior for invoices and tax calculation purposes. */ item: ItemsAPI.Item; /** * User specified key-value pairs for the resource. If not present, this defaults * to an empty dictionary. Individual keys can be removed by setting the value to * `null`, and the entire metadata mapping can be cleared by setting `metadata` to * `null`. */ metadata: { [key: string]: string; }; name: string; /** * The SQL definition of the metric. For metrics defined via configuration rather * than SQL, this is a derived SQL representation. */ sql: string; status: 'active' | 'draft' | 'archived'; parameter_definitions?: Array<{ [key: string]: unknown; }> | null; } export interface MetricCreateParams { /** * A description of the metric. */ description: string | null; /** * The id of the item */ item_id: string; /** * The name of the metric. */ name: string; /** * A sql string defining the metric. */ sql: string; /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; } export interface MetricUpdateParams { /** * User-specified key/value pairs for the resource. Individual keys can be removed * by setting the value to `null`, and the entire metadata mapping can be cleared * by setting `metadata` to `null`. */ metadata?: { [key: string]: string | null; } | null; } export interface MetricListParams extends PageParams { 'created_at[gt]'?: string | null; 'created_at[gte]'?: string | null; 'created_at[lt]'?: string | null; 'created_at[lte]'?: string | null; } export declare namespace Metrics { export { type BillableMetric as BillableMetric, type BillableMetricsPage as BillableMetricsPage, type MetricCreateParams as MetricCreateParams, type MetricUpdateParams as MetricUpdateParams, type MetricListParams as MetricListParams, }; } //# sourceMappingURL=metrics.d.ts.map