orb-billing
Version:
The official TypeScript library for the Orb API
130 lines • 6.52 kB
JavaScript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from "../core/resource.mjs";
import { Page } from "../core/pagination.mjs";
import { buildHeaders } from "../internal/headers.mjs";
import { path } from "../internal/utils/path.mjs";
/**
* [Alerts within Orb](/product-catalog/configuring-alerts) monitor spending,
* usage, or credit balance and trigger webhooks when a threshold is exceeded.
*
* Alerts created through the API can be scoped to either customers or subscriptions.
*/
export class Alerts extends APIResource {
/**
* This endpoint retrieves an alert by its ID.
*/
retrieve(alertID, options) {
return this._client.get(path `/alerts/${alertID}`, options);
}
/**
* This endpoint updates the thresholds of an alert. On cost alerts it also updates
* `price_filters`, and on subscription-scoped grouped cost alerts
* `threshold_overrides`; omitting either leaves it unchanged, and an empty list
* clears it.
*/
update(alertConfigurationID, body, options) {
return this._client.put(path `/alerts/${alertConfigurationID}`, { body, ...options });
}
/**
* This endpoint returns a list of alerts within Orb.
*
* The request must specify one of `customer_id`, `external_customer_id`, or
* `subscription_id`.
*
* If querying by subscription_id, the endpoint will return the subscription level
* alerts as well as the plan level alerts associated with the subscription.
*
* The list of alerts is ordered starting from the most recently created alert.
* This endpoint follows Orb's
* [standardized pagination format](/api-reference/pagination).
*/
list(query = {}, options) {
return this._client.getAPIList('/alerts', (Page), { query, ...options });
}
/**
* This endpoint deletes a subscription or customer-scoped alert. The alert is
* soft-deleted: it stops firing immediately and no longer appears in fetch or list
* responses, while the underlying record is retained internally for audit.
*
* Plan-level alerts cannot be deleted via the API — disable them instead
* (`POST /v1/alerts/{alert_configuration_id}/disable`). Their removal would need
* to be unwound from every subscription the alert was propagated to, which isn't
* supported yet.
*/
delete(alertConfigurationID, options) {
return this._client.delete(path `/alerts/${alertConfigurationID}`, {
...options,
headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
});
}
/**
* This endpoint creates a new alert to monitor a customer's credit balance. There
* are three types of alerts that can be scoped to customers:
* `credit_balance_depleted`, `credit_balance_dropped`, and
* `credit_balance_recovered`. Customers can have a maximum of one of each type of
* alert per [credit balance currency](/product-catalog/prepurchase).
* `credit_balance_dropped` alerts require a list of thresholds to be provided
* while `credit_balance_depleted` and `credit_balance_recovered` alerts do not
* require thresholds.
*/
createForCustomer(customerID, body, options) {
return this._client.post(path `/alerts/customer_id/${customerID}`, { body, ...options });
}
/**
* This endpoint creates a new alert to monitor a customer's credit balance. There
* are three types of alerts that can be scoped to customers:
* `credit_balance_depleted`, `credit_balance_dropped`, and
* `credit_balance_recovered`. Customers can have a maximum of one of each type of
* alert per [credit balance currency](/product-catalog/prepurchase).
* `credit_balance_dropped` alerts require a list of thresholds to be provided
* while `credit_balance_depleted` and `credit_balance_recovered` alerts do not
* require thresholds.
*/
createForExternalCustomer(externalCustomerID, body, options) {
return this._client.post(path `/alerts/external_customer_id/${externalCustomerID}`, { body, ...options });
}
/**
* This endpoint is used to create alerts at the subscription level.
*
* Subscription level alerts can be one of three types: `usage_exceeded`,
* `cost_exceeded`, or `spend_exceeded`. A `usage_exceeded` alert is scoped to a
* particular metric and is triggered when the usage of that metric exceeds
* predefined thresholds during the current billing cycle. A `cost_exceeded` alert
* is triggered when the total amount due during the current billing cycle
* surpasses predefined thresholds. `cost_exceeded` alerts do not include burndown
* of pre-purchase credits. A `spend_exceeded` alert is triggered when the rated
* spend (the pricing subtotal, before invoice-level adjustments and credits)
* denominated in the alert's currency exceeds predefined thresholds during the
* current billing cycle; `price_filters` can scope which prices contribute. Each
* subscription can have one `cost_exceeded` alert and one `usage_exceeded` alert
* per metric that is a part of the subscription.
*/
createForSubscription(subscriptionID, body, options) {
return this._client.post(path `/alerts/subscription_id/${subscriptionID}`, { body, ...options });
}
/**
* This endpoint allows you to disable an alert. To disable a plan-level alert for
* a specific subscription, you must include the `subscription_id`. The
* `subscription_id` is not required for customer or subscription level alerts.
*/
disable(alertConfigurationID, params = {}, options) {
const { subscription_id } = params ?? {};
return this._client.post(path `/alerts/${alertConfigurationID}/disable`, {
query: { subscription_id },
...options,
});
}
/**
* This endpoint allows you to enable an alert. To enable a plan-level alert for a
* specific subscription, you must include the `subscription_id`. The
* `subscription_id` is not required for customer or subscription level alerts.
*/
enable(alertConfigurationID, params = {}, options) {
const { subscription_id } = params ?? {};
return this._client.post(path `/alerts/${alertConfigurationID}/enable`, {
query: { subscription_id },
...options,
});
}
}
//# sourceMappingURL=alerts.mjs.map