@metronome/sdk 3.0.0 → 3.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +142 -0
- package/README.md +2 -2
- package/client.d.mts +5 -3
- package/client.d.mts.map +1 -1
- package/client.d.ts +5 -3
- package/client.d.ts.map +1 -1
- package/client.js +26 -10
- package/client.js.map +1 -1
- package/client.mjs +26 -10
- package/client.mjs.map +1 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +5 -0
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +5 -0
- package/internal/parse.mjs.map +1 -1
- package/internal/tslib.js +17 -17
- package/internal/utils/query.d.mts +2 -0
- package/internal/utils/query.d.mts.map +1 -0
- package/internal/utils/query.d.ts +2 -0
- package/internal/utils/query.d.ts.map +1 -0
- package/internal/utils/query.js +10 -0
- package/internal/utils/query.js.map +1 -0
- package/internal/utils/query.mjs +6 -0
- package/internal/utils/query.mjs.map +1 -0
- package/internal/utils.d.mts +1 -0
- package/internal/utils.d.ts +1 -0
- package/internal/utils.js +1 -0
- package/internal/utils.js.map +1 -1
- package/internal/utils.mjs +1 -0
- package/package.json +12 -1
- package/resources/shared.d.mts +49 -24
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +49 -24
- package/resources/shared.d.ts.map +1 -1
- package/resources/v1/alerts.d.mts +3 -0
- package/resources/v1/alerts.d.mts.map +1 -1
- package/resources/v1/alerts.d.ts +3 -0
- package/resources/v1/alerts.d.ts.map +1 -1
- package/resources/v1/alerts.js +3 -0
- package/resources/v1/alerts.js.map +1 -1
- package/resources/v1/alerts.mjs +3 -0
- package/resources/v1/alerts.mjs.map +1 -1
- package/resources/v1/audit-logs.d.mts +3 -0
- package/resources/v1/audit-logs.d.mts.map +1 -1
- package/resources/v1/audit-logs.d.ts +3 -0
- package/resources/v1/audit-logs.d.ts.map +1 -1
- package/resources/v1/audit-logs.js +3 -0
- package/resources/v1/audit-logs.js.map +1 -1
- package/resources/v1/audit-logs.mjs +3 -0
- package/resources/v1/audit-logs.mjs.map +1 -1
- package/resources/v1/billable-metrics.d.mts +3 -0
- package/resources/v1/billable-metrics.d.mts.map +1 -1
- package/resources/v1/billable-metrics.d.ts +3 -0
- package/resources/v1/billable-metrics.d.ts.map +1 -1
- package/resources/v1/billable-metrics.js +3 -0
- package/resources/v1/billable-metrics.js.map +1 -1
- package/resources/v1/billable-metrics.mjs +3 -0
- package/resources/v1/billable-metrics.mjs.map +1 -1
- package/resources/v1/contracts/contracts.d.mts +134 -14
- package/resources/v1/contracts/contracts.d.mts.map +1 -1
- package/resources/v1/contracts/contracts.d.ts +134 -14
- package/resources/v1/contracts/contracts.d.ts.map +1 -1
- package/resources/v1/contracts/contracts.js +69 -0
- package/resources/v1/contracts/contracts.js.map +1 -1
- package/resources/v1/contracts/contracts.mjs +69 -0
- package/resources/v1/contracts/contracts.mjs.map +1 -1
- package/resources/v1/contracts/index.d.mts +1 -1
- package/resources/v1/contracts/index.d.mts.map +1 -1
- package/resources/v1/contracts/index.d.ts +1 -1
- package/resources/v1/contracts/index.d.ts.map +1 -1
- package/resources/v1/contracts/index.js.map +1 -1
- package/resources/v1/contracts/index.mjs.map +1 -1
- package/resources/v1/contracts/named-schedules.d.mts +3 -0
- package/resources/v1/contracts/named-schedules.d.mts.map +1 -1
- package/resources/v1/contracts/named-schedules.d.ts +3 -0
- package/resources/v1/contracts/named-schedules.d.ts.map +1 -1
- package/resources/v1/contracts/named-schedules.js +3 -0
- package/resources/v1/contracts/named-schedules.js.map +1 -1
- package/resources/v1/contracts/named-schedules.mjs +3 -0
- package/resources/v1/contracts/named-schedules.mjs.map +1 -1
- package/resources/v1/contracts/products.d.mts +3 -0
- package/resources/v1/contracts/products.d.mts.map +1 -1
- package/resources/v1/contracts/products.d.ts +3 -0
- package/resources/v1/contracts/products.d.ts.map +1 -1
- package/resources/v1/contracts/products.js +3 -0
- package/resources/v1/contracts/products.js.map +1 -1
- package/resources/v1/contracts/products.mjs +3 -0
- package/resources/v1/contracts/products.mjs.map +1 -1
- package/resources/v1/contracts/rate-cards/named-schedules.d.mts +3 -0
- package/resources/v1/contracts/rate-cards/named-schedules.d.mts.map +1 -1
- package/resources/v1/contracts/rate-cards/named-schedules.d.ts +3 -0
- package/resources/v1/contracts/rate-cards/named-schedules.d.ts.map +1 -1
- package/resources/v1/contracts/rate-cards/named-schedules.js +3 -0
- package/resources/v1/contracts/rate-cards/named-schedules.js.map +1 -1
- package/resources/v1/contracts/rate-cards/named-schedules.mjs +3 -0
- package/resources/v1/contracts/rate-cards/named-schedules.mjs.map +1 -1
- package/resources/v1/contracts/rate-cards/product-orders.d.mts +3 -0
- package/resources/v1/contracts/rate-cards/product-orders.d.mts.map +1 -1
- package/resources/v1/contracts/rate-cards/product-orders.d.ts +3 -0
- package/resources/v1/contracts/rate-cards/product-orders.d.ts.map +1 -1
- package/resources/v1/contracts/rate-cards/product-orders.js +3 -0
- package/resources/v1/contracts/rate-cards/product-orders.js.map +1 -1
- package/resources/v1/contracts/rate-cards/product-orders.mjs +3 -0
- package/resources/v1/contracts/rate-cards/product-orders.mjs.map +1 -1
- package/resources/v1/contracts/rate-cards/rate-cards.d.mts +3 -0
- package/resources/v1/contracts/rate-cards/rate-cards.d.mts.map +1 -1
- package/resources/v1/contracts/rate-cards/rate-cards.d.ts +3 -0
- package/resources/v1/contracts/rate-cards/rate-cards.d.ts.map +1 -1
- package/resources/v1/contracts/rate-cards/rate-cards.js +3 -0
- package/resources/v1/contracts/rate-cards/rate-cards.js.map +1 -1
- package/resources/v1/contracts/rate-cards/rate-cards.mjs +3 -0
- package/resources/v1/contracts/rate-cards/rate-cards.mjs.map +1 -1
- package/resources/v1/contracts/rate-cards/rates.d.mts +6 -3
- package/resources/v1/contracts/rate-cards/rates.d.mts.map +1 -1
- package/resources/v1/contracts/rate-cards/rates.d.ts +6 -3
- package/resources/v1/contracts/rate-cards/rates.d.ts.map +1 -1
- package/resources/v1/contracts/rate-cards/rates.js +3 -0
- package/resources/v1/contracts/rate-cards/rates.js.map +1 -1
- package/resources/v1/contracts/rate-cards/rates.mjs +3 -0
- package/resources/v1/contracts/rate-cards/rates.mjs.map +1 -1
- package/resources/v1/credit-grants.d.mts +3 -0
- package/resources/v1/credit-grants.d.mts.map +1 -1
- package/resources/v1/credit-grants.d.ts +3 -0
- package/resources/v1/credit-grants.d.ts.map +1 -1
- package/resources/v1/credit-grants.js +3 -0
- package/resources/v1/credit-grants.js.map +1 -1
- package/resources/v1/credit-grants.mjs +3 -0
- package/resources/v1/credit-grants.mjs.map +1 -1
- package/resources/v1/custom-fields.d.mts +3 -0
- package/resources/v1/custom-fields.d.mts.map +1 -1
- package/resources/v1/custom-fields.d.ts +3 -0
- package/resources/v1/custom-fields.d.ts.map +1 -1
- package/resources/v1/custom-fields.js +3 -0
- package/resources/v1/custom-fields.js.map +1 -1
- package/resources/v1/custom-fields.mjs +3 -0
- package/resources/v1/custom-fields.mjs.map +1 -1
- package/resources/v1/customers/alerts.d.mts +3 -0
- package/resources/v1/customers/alerts.d.mts.map +1 -1
- package/resources/v1/customers/alerts.d.ts +3 -0
- package/resources/v1/customers/alerts.d.ts.map +1 -1
- package/resources/v1/customers/alerts.js +3 -0
- package/resources/v1/customers/alerts.js.map +1 -1
- package/resources/v1/customers/alerts.mjs +3 -0
- package/resources/v1/customers/alerts.mjs.map +1 -1
- package/resources/v1/customers/billing-config.d.mts +3 -0
- package/resources/v1/customers/billing-config.d.mts.map +1 -1
- package/resources/v1/customers/billing-config.d.ts +3 -0
- package/resources/v1/customers/billing-config.d.ts.map +1 -1
- package/resources/v1/customers/billing-config.js +3 -0
- package/resources/v1/customers/billing-config.js.map +1 -1
- package/resources/v1/customers/billing-config.mjs +3 -0
- package/resources/v1/customers/billing-config.mjs.map +1 -1
- package/resources/v1/customers/commits.d.mts +3 -0
- package/resources/v1/customers/commits.d.mts.map +1 -1
- package/resources/v1/customers/commits.d.ts +3 -0
- package/resources/v1/customers/commits.d.ts.map +1 -1
- package/resources/v1/customers/commits.js +3 -0
- package/resources/v1/customers/commits.js.map +1 -1
- package/resources/v1/customers/commits.mjs +3 -0
- package/resources/v1/customers/commits.mjs.map +1 -1
- package/resources/v1/customers/credits.d.mts +3 -0
- package/resources/v1/customers/credits.d.mts.map +1 -1
- package/resources/v1/customers/credits.d.ts +3 -0
- package/resources/v1/customers/credits.d.ts.map +1 -1
- package/resources/v1/customers/credits.js +3 -0
- package/resources/v1/customers/credits.js.map +1 -1
- package/resources/v1/customers/credits.mjs +3 -0
- package/resources/v1/customers/credits.mjs.map +1 -1
- package/resources/v1/customers/customers.d.mts +77 -1
- package/resources/v1/customers/customers.d.mts.map +1 -1
- package/resources/v1/customers/customers.d.ts +77 -1
- package/resources/v1/customers/customers.d.ts.map +1 -1
- package/resources/v1/customers/customers.js +53 -0
- package/resources/v1/customers/customers.js.map +1 -1
- package/resources/v1/customers/customers.mjs +53 -0
- package/resources/v1/customers/customers.mjs.map +1 -1
- package/resources/v1/customers/index.d.mts +1 -1
- package/resources/v1/customers/index.d.mts.map +1 -1
- package/resources/v1/customers/index.d.ts +1 -1
- package/resources/v1/customers/index.d.ts.map +1 -1
- package/resources/v1/customers/index.js.map +1 -1
- package/resources/v1/customers/index.mjs.map +1 -1
- package/resources/v1/customers/invoices.d.mts +20 -12
- package/resources/v1/customers/invoices.d.mts.map +1 -1
- package/resources/v1/customers/invoices.d.ts +20 -12
- package/resources/v1/customers/invoices.d.ts.map +1 -1
- package/resources/v1/customers/invoices.js +3 -0
- package/resources/v1/customers/invoices.js.map +1 -1
- package/resources/v1/customers/invoices.mjs +3 -0
- package/resources/v1/customers/invoices.mjs.map +1 -1
- package/resources/v1/customers/named-schedules.d.mts +3 -0
- package/resources/v1/customers/named-schedules.d.mts.map +1 -1
- package/resources/v1/customers/named-schedules.d.ts +3 -0
- package/resources/v1/customers/named-schedules.d.ts.map +1 -1
- package/resources/v1/customers/named-schedules.js +3 -0
- package/resources/v1/customers/named-schedules.js.map +1 -1
- package/resources/v1/customers/named-schedules.mjs +3 -0
- package/resources/v1/customers/named-schedules.mjs.map +1 -1
- package/resources/v1/customers/plans.d.mts +3 -0
- package/resources/v1/customers/plans.d.mts.map +1 -1
- package/resources/v1/customers/plans.d.ts +3 -0
- package/resources/v1/customers/plans.d.ts.map +1 -1
- package/resources/v1/customers/plans.js +3 -0
- package/resources/v1/customers/plans.js.map +1 -1
- package/resources/v1/customers/plans.mjs +3 -0
- package/resources/v1/customers/plans.mjs.map +1 -1
- package/resources/v1/dashboards.d.mts +3 -0
- package/resources/v1/dashboards.d.mts.map +1 -1
- package/resources/v1/dashboards.d.ts +3 -0
- package/resources/v1/dashboards.d.ts.map +1 -1
- package/resources/v1/dashboards.js +3 -0
- package/resources/v1/dashboards.js.map +1 -1
- package/resources/v1/dashboards.mjs +3 -0
- package/resources/v1/dashboards.mjs.map +1 -1
- package/resources/v1/index.d.mts +3 -2
- package/resources/v1/index.d.mts.map +1 -1
- package/resources/v1/index.d.ts +3 -2
- package/resources/v1/index.d.ts.map +1 -1
- package/resources/v1/index.js +3 -1
- package/resources/v1/index.js.map +1 -1
- package/resources/v1/index.mjs +1 -0
- package/resources/v1/index.mjs.map +1 -1
- package/resources/v1/invoices.d.mts +3 -0
- package/resources/v1/invoices.d.mts.map +1 -1
- package/resources/v1/invoices.d.ts +3 -0
- package/resources/v1/invoices.d.ts.map +1 -1
- package/resources/v1/invoices.js +3 -0
- package/resources/v1/invoices.js.map +1 -1
- package/resources/v1/invoices.mjs +3 -0
- package/resources/v1/invoices.mjs.map +1 -1
- package/resources/v1/packages.d.mts +2352 -0
- package/resources/v1/packages.d.mts.map +1 -0
- package/resources/v1/packages.d.ts +2352 -0
- package/resources/v1/packages.d.ts.map +1 -0
- package/resources/v1/packages.js +160 -0
- package/resources/v1/packages.js.map +1 -0
- package/resources/v1/packages.mjs +156 -0
- package/resources/v1/packages.mjs.map +1 -0
- package/resources/v1/plans.d.mts +3 -0
- package/resources/v1/plans.d.mts.map +1 -1
- package/resources/v1/plans.d.ts +3 -0
- package/resources/v1/plans.d.ts.map +1 -1
- package/resources/v1/plans.js +3 -0
- package/resources/v1/plans.js.map +1 -1
- package/resources/v1/plans.mjs +3 -0
- package/resources/v1/plans.mjs.map +1 -1
- package/resources/v1/pricing-units.d.mts +3 -0
- package/resources/v1/pricing-units.d.mts.map +1 -1
- package/resources/v1/pricing-units.d.ts +3 -0
- package/resources/v1/pricing-units.d.ts.map +1 -1
- package/resources/v1/pricing-units.js +3 -0
- package/resources/v1/pricing-units.js.map +1 -1
- package/resources/v1/pricing-units.mjs +3 -0
- package/resources/v1/pricing-units.mjs.map +1 -1
- package/resources/v1/services.d.mts +3 -0
- package/resources/v1/services.d.mts.map +1 -1
- package/resources/v1/services.d.ts +3 -0
- package/resources/v1/services.d.ts.map +1 -1
- package/resources/v1/services.js +3 -0
- package/resources/v1/services.js.map +1 -1
- package/resources/v1/services.mjs +3 -0
- package/resources/v1/services.mjs.map +1 -1
- package/resources/v1/settings/billing-providers.d.mts +3 -0
- package/resources/v1/settings/billing-providers.d.mts.map +1 -1
- package/resources/v1/settings/billing-providers.d.ts +3 -0
- package/resources/v1/settings/billing-providers.d.ts.map +1 -1
- package/resources/v1/settings/billing-providers.js +3 -0
- package/resources/v1/settings/billing-providers.js.map +1 -1
- package/resources/v1/settings/billing-providers.mjs +3 -0
- package/resources/v1/settings/billing-providers.mjs.map +1 -1
- package/resources/v1/settings/settings.d.mts +3 -0
- package/resources/v1/settings/settings.d.mts.map +1 -1
- package/resources/v1/settings/settings.d.ts +3 -0
- package/resources/v1/settings/settings.d.ts.map +1 -1
- package/resources/v1/settings/settings.js +3 -0
- package/resources/v1/settings/settings.js.map +1 -1
- package/resources/v1/settings/settings.mjs +3 -0
- package/resources/v1/settings/settings.mjs.map +1 -1
- package/resources/v1/usage.d.mts +81 -12
- package/resources/v1/usage.d.mts.map +1 -1
- package/resources/v1/usage.d.ts +81 -12
- package/resources/v1/usage.d.ts.map +1 -1
- package/resources/v1/usage.js +37 -11
- package/resources/v1/usage.js.map +1 -1
- package/resources/v1/usage.mjs +37 -11
- package/resources/v1/usage.mjs.map +1 -1
- package/resources/v1/v1.d.mts +8 -4
- package/resources/v1/v1.d.mts.map +1 -1
- package/resources/v1/v1.d.ts +8 -4
- package/resources/v1/v1.d.ts.map +1 -1
- package/resources/v1/v1.js +4 -0
- package/resources/v1/v1.js.map +1 -1
- package/resources/v1/v1.mjs +4 -0
- package/resources/v1/v1.mjs.map +1 -1
- package/resources/v2/contracts.d.mts +45 -7
- package/resources/v2/contracts.d.mts.map +1 -1
- package/resources/v2/contracts.d.ts +45 -7
- package/resources/v2/contracts.d.ts.map +1 -1
- package/resources/v2/contracts.js +1 -4
- package/resources/v2/contracts.js.map +1 -1
- package/resources/v2/contracts.mjs +1 -4
- package/resources/v2/contracts.mjs.map +1 -1
- package/src/client.ts +37 -15
- package/src/internal/parse.ts +6 -0
- package/src/internal/utils/query.ts +7 -0
- package/src/internal/utils.ts +1 -0
- package/src/resources/shared.ts +51 -25
- package/src/resources/v1/alerts.ts +3 -0
- package/src/resources/v1/audit-logs.ts +3 -0
- package/src/resources/v1/billable-metrics.ts +3 -0
- package/src/resources/v1/contracts/contracts.ts +151 -13
- package/src/resources/v1/contracts/index.ts +2 -0
- package/src/resources/v1/contracts/named-schedules.ts +3 -0
- package/src/resources/v1/contracts/products.ts +3 -0
- package/src/resources/v1/contracts/rate-cards/named-schedules.ts +3 -0
- package/src/resources/v1/contracts/rate-cards/product-orders.ts +3 -0
- package/src/resources/v1/contracts/rate-cards/rate-cards.ts +3 -0
- package/src/resources/v1/contracts/rate-cards/rates.ts +6 -3
- package/src/resources/v1/credit-grants.ts +3 -0
- package/src/resources/v1/custom-fields.ts +3 -0
- package/src/resources/v1/customers/alerts.ts +3 -0
- package/src/resources/v1/customers/billing-config.ts +3 -0
- package/src/resources/v1/customers/commits.ts +3 -0
- package/src/resources/v1/customers/credits.ts +3 -0
- package/src/resources/v1/customers/customers.ts +89 -0
- package/src/resources/v1/customers/index.ts +2 -0
- package/src/resources/v1/customers/invoices.ts +21 -12
- package/src/resources/v1/customers/named-schedules.ts +3 -0
- package/src/resources/v1/customers/plans.ts +3 -0
- package/src/resources/v1/dashboards.ts +3 -0
- package/src/resources/v1/index.ts +19 -0
- package/src/resources/v1/invoices.ts +3 -0
- package/src/resources/v1/packages.ts +3057 -0
- package/src/resources/v1/plans.ts +3 -0
- package/src/resources/v1/pricing-units.ts +3 -0
- package/src/resources/v1/services.ts +3 -0
- package/src/resources/v1/settings/billing-providers.ts +3 -0
- package/src/resources/v1/settings/settings.ts +3 -0
- package/src/resources/v1/usage.ts +80 -12
- package/src/resources/v1/v1.ts +42 -0
- package/src/resources/v2/contracts.ts +55 -7
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/src/client.ts
CHANGED
|
@@ -11,7 +11,7 @@ import type { APIResponseProps } from './internal/parse';
|
|
|
11
11
|
import { getPlatformHeaders } from './internal/detect-platform';
|
|
12
12
|
import * as Shims from './internal/shims';
|
|
13
13
|
import * as Opts from './internal/request-options';
|
|
14
|
-
import
|
|
14
|
+
import { stringifyQuery } from './internal/utils/query';
|
|
15
15
|
import { VERSION } from './version';
|
|
16
16
|
import * as Errors from './core/error';
|
|
17
17
|
import * as Pagination from './core/pagination';
|
|
@@ -233,8 +233,8 @@ export class Metronome {
|
|
|
233
233
|
return buildHeaders([{ Authorization: `Bearer ${this.bearerToken}` }]);
|
|
234
234
|
}
|
|
235
235
|
|
|
236
|
-
protected stringifyQuery(query: Record<string, unknown>): string {
|
|
237
|
-
return
|
|
236
|
+
protected stringifyQuery(query: object | Record<string, unknown>): string {
|
|
237
|
+
return stringifyQuery(query);
|
|
238
238
|
}
|
|
239
239
|
|
|
240
240
|
private getUserAgent(): string {
|
|
@@ -266,12 +266,13 @@ export class Metronome {
|
|
|
266
266
|
: new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));
|
|
267
267
|
|
|
268
268
|
const defaultQuery = this.defaultQuery();
|
|
269
|
-
|
|
270
|
-
|
|
269
|
+
const pathQuery = Object.fromEntries(url.searchParams);
|
|
270
|
+
if (!isEmptyObj(defaultQuery) || !isEmptyObj(pathQuery)) {
|
|
271
|
+
query = { ...pathQuery, ...defaultQuery, ...query };
|
|
271
272
|
}
|
|
272
273
|
|
|
273
274
|
if (typeof query === 'object' && query && !Array.isArray(query)) {
|
|
274
|
-
url.search = this.stringifyQuery(query
|
|
275
|
+
url.search = this.stringifyQuery(query);
|
|
275
276
|
}
|
|
276
277
|
|
|
277
278
|
return url.toString();
|
|
@@ -455,7 +456,7 @@ export class Metronome {
|
|
|
455
456
|
loggerFor(this).info(`${responseInfo} - ${retryMessage}`);
|
|
456
457
|
|
|
457
458
|
const errText = await response.text().catch((err: any) => castToError(err).message);
|
|
458
|
-
const errJSON = safeJSON(errText);
|
|
459
|
+
const errJSON = safeJSON(errText) as any;
|
|
459
460
|
const errMessage = errJSON ? undefined : errText;
|
|
460
461
|
|
|
461
462
|
loggerFor(this).debug(
|
|
@@ -492,9 +493,14 @@ export class Metronome {
|
|
|
492
493
|
getAPIList<Item, PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>>(
|
|
493
494
|
path: string,
|
|
494
495
|
Page: new (...args: any[]) => PageClass,
|
|
495
|
-
opts?: RequestOptions
|
|
496
|
+
opts?: PromiseOrValue<RequestOptions>,
|
|
496
497
|
): Pagination.PagePromise<PageClass, Item> {
|
|
497
|
-
return this.requestAPIList(
|
|
498
|
+
return this.requestAPIList(
|
|
499
|
+
Page,
|
|
500
|
+
opts && 'then' in opts ?
|
|
501
|
+
opts.then((opts) => ({ method: 'get', path, ...opts }))
|
|
502
|
+
: { method: 'get', path, ...opts },
|
|
503
|
+
);
|
|
498
504
|
}
|
|
499
505
|
|
|
500
506
|
requestAPIList<
|
|
@@ -502,7 +508,7 @@ export class Metronome {
|
|
|
502
508
|
PageClass extends Pagination.AbstractPage<Item> = Pagination.AbstractPage<Item>,
|
|
503
509
|
>(
|
|
504
510
|
Page: new (...args: ConstructorParameters<typeof Pagination.AbstractPage>) => PageClass,
|
|
505
|
-
options: FinalRequestOptions
|
|
511
|
+
options: PromiseOrValue<FinalRequestOptions>,
|
|
506
512
|
): Pagination.PagePromise<PageClass, Item> {
|
|
507
513
|
const request = this.makeRequest(options, null, undefined);
|
|
508
514
|
return new Pagination.PagePromise<PageClass, Item>(this as any as Metronome, request, Page);
|
|
@@ -515,9 +521,10 @@ export class Metronome {
|
|
|
515
521
|
controller: AbortController,
|
|
516
522
|
): Promise<Response> {
|
|
517
523
|
const { signal, method, ...options } = init || {};
|
|
518
|
-
|
|
524
|
+
const abort = this._makeAbort(controller);
|
|
525
|
+
if (signal) signal.addEventListener('abort', abort, { once: true });
|
|
519
526
|
|
|
520
|
-
const timeout = setTimeout(
|
|
527
|
+
const timeout = setTimeout(abort, ms);
|
|
521
528
|
|
|
522
529
|
const isReadableBody =
|
|
523
530
|
((globalThis as any).ReadableStream && options.body instanceof (globalThis as any).ReadableStream) ||
|
|
@@ -594,9 +601,9 @@ export class Metronome {
|
|
|
594
601
|
}
|
|
595
602
|
}
|
|
596
603
|
|
|
597
|
-
// If the API asks us to wait a certain amount of time
|
|
598
|
-
//
|
|
599
|
-
if (
|
|
604
|
+
// If the API asks us to wait a certain amount of time, just do what it
|
|
605
|
+
// says, but otherwise calculate a default
|
|
606
|
+
if (timeoutMillis === undefined) {
|
|
600
607
|
const maxRetries = options.maxRetries ?? this.maxRetries;
|
|
601
608
|
timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);
|
|
602
609
|
}
|
|
@@ -684,6 +691,12 @@ export class Metronome {
|
|
|
684
691
|
return headers.values;
|
|
685
692
|
}
|
|
686
693
|
|
|
694
|
+
private _makeAbort(controller: AbortController) {
|
|
695
|
+
// note: we can't just inline this method inside `fetchWithTimeout()` because then the closure
|
|
696
|
+
// would capture all request options, and cause a memory leak.
|
|
697
|
+
return () => controller.abort();
|
|
698
|
+
}
|
|
699
|
+
|
|
687
700
|
private buildBody({ options: { body, headers: rawHeaders } }: { options: FinalRequestOptions }): {
|
|
688
701
|
bodyHeaders: HeadersLike;
|
|
689
702
|
body: BodyInit | undefined;
|
|
@@ -716,6 +729,14 @@ export class Metronome {
|
|
|
716
729
|
(Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))
|
|
717
730
|
) {
|
|
718
731
|
return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body as AsyncIterable<Uint8Array>) };
|
|
732
|
+
} else if (
|
|
733
|
+
typeof body === 'object' &&
|
|
734
|
+
headers.values.get('content-type') === 'application/x-www-form-urlencoded'
|
|
735
|
+
) {
|
|
736
|
+
return {
|
|
737
|
+
bodyHeaders: { 'content-type': 'application/x-www-form-urlencoded' },
|
|
738
|
+
body: this.stringifyQuery(body),
|
|
739
|
+
};
|
|
719
740
|
} else {
|
|
720
741
|
return this.#encoder({ body, headers });
|
|
721
742
|
}
|
|
@@ -771,6 +792,7 @@ export declare namespace Metronome {
|
|
|
771
792
|
|
|
772
793
|
export { V1 as V1 };
|
|
773
794
|
|
|
795
|
+
export type BalanceFilter = API.BalanceFilter;
|
|
774
796
|
export type BaseThresholdCommit = API.BaseThresholdCommit;
|
|
775
797
|
export type BaseUsageFilter = API.BaseUsageFilter;
|
|
776
798
|
export type Commit = API.Commit;
|
package/src/internal/parse.ts
CHANGED
|
@@ -29,6 +29,12 @@ export async function defaultParseResponse<T>(client: Metronome, props: APIRespo
|
|
|
29
29
|
const mediaType = contentType?.split(';')[0]?.trim();
|
|
30
30
|
const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');
|
|
31
31
|
if (isJSON) {
|
|
32
|
+
const contentLength = response.headers.get('content-length');
|
|
33
|
+
if (contentLength === '0') {
|
|
34
|
+
// if there is no content we can't do anything
|
|
35
|
+
return undefined as T;
|
|
36
|
+
}
|
|
37
|
+
|
|
32
38
|
const json = await response.json();
|
|
33
39
|
return json as T;
|
|
34
40
|
}
|
package/src/internal/utils.ts
CHANGED
package/src/resources/shared.ts
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
import * as Shared from './shared';
|
|
4
4
|
import { BodyCursorPage } from '../core/pagination';
|
|
5
5
|
|
|
6
|
+
export interface BalanceFilter {
|
|
7
|
+
/**
|
|
8
|
+
* The balance type to filter by.
|
|
9
|
+
*/
|
|
10
|
+
balance_types?: Array<'PREPAID_COMMIT' | 'POSTPAID_COMMIT' | 'CREDIT'>;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Custom fields to compute balance across. Must match all custom fields
|
|
14
|
+
*/
|
|
15
|
+
custom_fields?: { [key: string]: string };
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Specific IDs to compute balance across.
|
|
19
|
+
*/
|
|
20
|
+
ids?: Array<string>;
|
|
21
|
+
}
|
|
22
|
+
|
|
6
23
|
export interface BaseThresholdCommit {
|
|
7
24
|
/**
|
|
8
25
|
* The commit product that will be used to generate the line item for commit
|
|
@@ -407,10 +424,12 @@ export namespace CommitHierarchyConfiguration {
|
|
|
407
424
|
* list rate when consuming a credit or commit.
|
|
408
425
|
*/
|
|
409
426
|
export interface CommitRate {
|
|
410
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
427
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
411
428
|
|
|
412
429
|
/**
|
|
413
|
-
* Commit rate price. For FLAT rate_type, this must be >=0.
|
|
430
|
+
* Commit rate price. For FLAT rate_type, this must be >=0. For PERCENTAGE
|
|
431
|
+
* rate_type, this is a decimal fraction, e.g. use 0.1 for 10%; this must be >=0
|
|
432
|
+
* and <=1.
|
|
414
433
|
*/
|
|
415
434
|
price?: number;
|
|
416
435
|
|
|
@@ -438,8 +457,16 @@ export interface CommitSpecifier {
|
|
|
438
457
|
}
|
|
439
458
|
|
|
440
459
|
export interface CommitSpecifierInput {
|
|
460
|
+
/**
|
|
461
|
+
* If provided, the specifier will apply to product usage with these set of
|
|
462
|
+
* presentation group values.
|
|
463
|
+
*/
|
|
441
464
|
presentation_group_values?: { [key: string]: string };
|
|
442
465
|
|
|
466
|
+
/**
|
|
467
|
+
* If provided, the specifier will apply to product usage with these set of pricing
|
|
468
|
+
* group values.
|
|
469
|
+
*/
|
|
443
470
|
pricing_group_values?: { [key: string]: string };
|
|
444
471
|
|
|
445
472
|
/**
|
|
@@ -481,12 +508,12 @@ export interface Contract {
|
|
|
481
508
|
*/
|
|
482
509
|
customer_billing_provider_configuration?: Contract.CustomerBillingProviderConfiguration;
|
|
483
510
|
|
|
484
|
-
prepaid_balance_threshold_configuration?: PrepaidBalanceThresholdConfiguration;
|
|
485
|
-
|
|
486
511
|
/**
|
|
487
|
-
*
|
|
512
|
+
* ID of the package this contract was created from, if applicable.
|
|
488
513
|
*/
|
|
489
|
-
|
|
514
|
+
package_id?: string;
|
|
515
|
+
|
|
516
|
+
prepaid_balance_threshold_configuration?: PrepaidBalanceThresholdConfiguration;
|
|
490
517
|
|
|
491
518
|
/**
|
|
492
519
|
* Determines which scheduled and commit charges to consolidate onto the Contract's
|
|
@@ -1101,7 +1128,7 @@ export namespace ContractV2 {
|
|
|
1101
1128
|
}
|
|
1102
1129
|
|
|
1103
1130
|
export interface OverwriteRate {
|
|
1104
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
1131
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
1105
1132
|
|
|
1106
1133
|
credit_type?: Shared.CreditTypeData;
|
|
1107
1134
|
|
|
@@ -1433,8 +1460,8 @@ export namespace ContractV2 {
|
|
|
1433
1460
|
|
|
1434
1461
|
export interface ParentBehavior {
|
|
1435
1462
|
/**
|
|
1436
|
-
*
|
|
1437
|
-
*
|
|
1463
|
+
* Indicates the desired behavior of consolidated invoices generated by the parent
|
|
1464
|
+
* in a customer hierarchy
|
|
1438
1465
|
*
|
|
1439
1466
|
* **CONCATENATE**: Statements on the invoices of child customers will be appended
|
|
1440
1467
|
* to the consolidated invoice
|
|
@@ -1452,15 +1479,15 @@ export namespace ContractV2 {
|
|
|
1452
1479
|
parent: ChildHierarchyConfigurationV2.Parent;
|
|
1453
1480
|
|
|
1454
1481
|
/**
|
|
1455
|
-
*
|
|
1456
|
-
*
|
|
1457
|
-
*
|
|
1482
|
+
* Indicates which customer should pay for the child's invoice charges **SELF**:
|
|
1483
|
+
* The child pays for its own invoice charges **PARENT**: The parent pays for the
|
|
1484
|
+
* child's invoice charges
|
|
1458
1485
|
*/
|
|
1459
1486
|
payer?: 'SELF' | 'PARENT';
|
|
1460
1487
|
|
|
1461
1488
|
/**
|
|
1462
|
-
*
|
|
1463
|
-
*
|
|
1489
|
+
* Indicates the behavior of the child's invoice statements on the parent's
|
|
1490
|
+
* invoices.
|
|
1464
1491
|
*
|
|
1465
1492
|
* **CONSOLIDATE**: Child's invoice statements will be added to parent's
|
|
1466
1493
|
* consolidated invoices
|
|
@@ -2536,8 +2563,8 @@ export namespace HierarchyConfiguration {
|
|
|
2536
2563
|
|
|
2537
2564
|
export interface ParentBehavior {
|
|
2538
2565
|
/**
|
|
2539
|
-
*
|
|
2540
|
-
*
|
|
2566
|
+
* Indicates the desired behavior of consolidated invoices generated by the parent
|
|
2567
|
+
* in a customer hierarchy
|
|
2541
2568
|
*
|
|
2542
2569
|
* **CONCATENATE**: Statements on the invoices of child customers will be appended
|
|
2543
2570
|
* to the consolidated invoice
|
|
@@ -2555,8 +2582,7 @@ export namespace HierarchyConfiguration {
|
|
|
2555
2582
|
parent: ChildHierarchyConfiguration.Parent;
|
|
2556
2583
|
|
|
2557
2584
|
/**
|
|
2558
|
-
*
|
|
2559
|
-
* invoice charges
|
|
2585
|
+
* Indicates which customer should pay for the child's invoice charges
|
|
2560
2586
|
*
|
|
2561
2587
|
* **SELF**: The child pays for its own invoice charges
|
|
2562
2588
|
*
|
|
@@ -2565,8 +2591,8 @@ export namespace HierarchyConfiguration {
|
|
|
2565
2591
|
payer?: 'SELF' | 'PARENT';
|
|
2566
2592
|
|
|
2567
2593
|
/**
|
|
2568
|
-
*
|
|
2569
|
-
*
|
|
2594
|
+
* Indicates the behavior of the child's invoice statements on the parent's
|
|
2595
|
+
* invoices.
|
|
2570
2596
|
*
|
|
2571
2597
|
* **CONSOLIDATE**: Child's invoice statements will be added to parent's
|
|
2572
2598
|
* consolidated invoices
|
|
@@ -2637,7 +2663,7 @@ export interface Override {
|
|
|
2637
2663
|
*/
|
|
2638
2664
|
quantity?: number;
|
|
2639
2665
|
|
|
2640
|
-
rate_type?: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
2666
|
+
rate_type?: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
2641
2667
|
|
|
2642
2668
|
target?: 'COMMIT_RATE' | 'LIST_RATE';
|
|
2643
2669
|
|
|
@@ -2688,7 +2714,7 @@ export interface OverrideTier {
|
|
|
2688
2714
|
}
|
|
2689
2715
|
|
|
2690
2716
|
export interface OverwriteRate {
|
|
2691
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
2717
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
2692
2718
|
|
|
2693
2719
|
credit_type?: CreditTypeData;
|
|
2694
2720
|
|
|
@@ -2745,7 +2771,7 @@ export interface PaymentGateConfig {
|
|
|
2745
2771
|
* not wish Metronome to calculate tax on your behalf. Leaving this field blank
|
|
2746
2772
|
* will default to NONE.
|
|
2747
2773
|
*/
|
|
2748
|
-
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | '
|
|
2774
|
+
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | 'PRECALCULATED';
|
|
2749
2775
|
}
|
|
2750
2776
|
|
|
2751
2777
|
export namespace PaymentGateConfig {
|
|
@@ -2807,7 +2833,7 @@ export interface PaymentGateConfigV2 {
|
|
|
2807
2833
|
* not wish Metronome to calculate tax on your behalf. Leaving this field blank
|
|
2808
2834
|
* will default to NONE.
|
|
2809
2835
|
*/
|
|
2810
|
-
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | '
|
|
2836
|
+
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | 'PRECALCULATED';
|
|
2811
2837
|
}
|
|
2812
2838
|
|
|
2813
2839
|
export namespace PaymentGateConfigV2 {
|
|
@@ -3026,7 +3052,7 @@ export interface ProService {
|
|
|
3026
3052
|
}
|
|
3027
3053
|
|
|
3028
3054
|
export interface Rate {
|
|
3029
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'CUSTOM' | 'TIERED';
|
|
3055
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'CUSTOM' | 'TIERED' | 'TIERED_PERCENTAGE';
|
|
3030
3056
|
|
|
3031
3057
|
credit_type?: CreditTypeData;
|
|
3032
3058
|
|
|
@@ -5,6 +5,9 @@ import * as Shared from '../shared';
|
|
|
5
5
|
import { APIPromise } from '../../core/api-promise';
|
|
6
6
|
import { RequestOptions } from '../../internal/request-options';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* [Alerts](https://docs.metronome.com/connecting-metronome/alerts/) monitor customer spending, balances, and other billing factors. Use these endpoints to create, retrieve, and archive customer alerts. To view sample alert payloads by alert type, navigate [here.](https://docs.metronome.com/manage-product-access/create-manage-alerts/#webhook-notifications)
|
|
10
|
+
*/
|
|
8
11
|
export class Alerts extends APIResource {
|
|
9
12
|
/**
|
|
10
13
|
* Create a new threshold notification to monitor customer spending, balances, and
|
|
@@ -4,6 +4,9 @@ import { APIResource } from '../../core/resource';
|
|
|
4
4
|
import { CursorPage, type CursorPageParams, PagePromise } from '../../core/pagination';
|
|
5
5
|
import { RequestOptions } from '../../internal/request-options';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* [Security](https://docs.metronome.com/developer-resources/security/) endpoints allow you to retrieve security-related data.
|
|
9
|
+
*/
|
|
7
10
|
export class AuditLogs extends APIResource {
|
|
8
11
|
/**
|
|
9
12
|
* Get a comprehensive audit trail of all operations performed in your Metronome
|
|
@@ -7,6 +7,9 @@ import { CursorPage, type CursorPageParams, PagePromise } from '../../core/pagin
|
|
|
7
7
|
import { RequestOptions } from '../../internal/request-options';
|
|
8
8
|
import { path } from '../../internal/utils/path';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* [Billable metrics](https://docs.metronome.com/understanding-metronome/how-metronome-works#billable-metrics) in Metronome represent the various consumption components that Metronome meters and aggregates.
|
|
12
|
+
*/
|
|
10
13
|
export class BillableMetrics extends APIResource {
|
|
11
14
|
/**
|
|
12
15
|
* Create billable metrics programmatically with this endpoint—an essential step in
|
|
@@ -374,6 +374,79 @@ export class Contracts extends APIResource {
|
|
|
374
374
|
return this._client.post('/v1/contracts/createHistoricalInvoices', { body, ...options });
|
|
375
375
|
}
|
|
376
376
|
|
|
377
|
+
/**
|
|
378
|
+
* Retrieve the combined current balance across any grouping of credits and commits
|
|
379
|
+
* for a customer in a single API call.
|
|
380
|
+
*
|
|
381
|
+
* - Display real-time available balance to customers in billing dashboards
|
|
382
|
+
* - Build finance dashboards showing credit utilization across customer segments
|
|
383
|
+
* - Validate expected vs. actual balance during billing reconciliation
|
|
384
|
+
*
|
|
385
|
+
* ### Key response fields:
|
|
386
|
+
*
|
|
387
|
+
* - `balance`: The combined net balance available to use at this moment across all
|
|
388
|
+
* matching commits and credits
|
|
389
|
+
* - `credit_type_id`: The credit type (fiat or custom pricing unit) the balance is
|
|
390
|
+
* denominated in
|
|
391
|
+
*
|
|
392
|
+
* ### Filtering options:
|
|
393
|
+
*
|
|
394
|
+
* Balance filters allow you to scope the calculation to specific subsets of
|
|
395
|
+
* commits and credits. When using multiple filter objects, they are OR'd together
|
|
396
|
+
* — if a commit or credit matches any filter, it's included in the net balance.
|
|
397
|
+
* Within a single filter object, all specified conditions are AND'd together.
|
|
398
|
+
*
|
|
399
|
+
* - **Balance types**: Include any combination of `PREPAID_COMMIT`,
|
|
400
|
+
* `POSTPAID_COMMIT`, and `CREDIT` (e.g., `["PREPAID_COMMIT", "CREDIT"]` to
|
|
401
|
+
* exclude postpaid commits). If not specified, all balance types are included.
|
|
402
|
+
* - **Specific IDs**: Target exact commit or credit IDs for precise balance
|
|
403
|
+
* queries
|
|
404
|
+
* - **Custom fields**: Filter by custom field key-value pairs; when multiple pairs
|
|
405
|
+
* are provided, commits must match all of them
|
|
406
|
+
*
|
|
407
|
+
* **Example**: To get the balance of all free-trial credits OR all
|
|
408
|
+
* signup-promotion commits, you'd pass two filter objects — one filtering for
|
|
409
|
+
* CREDIT with custom field campaign: free-trial, and another filtering for
|
|
410
|
+
* PREPAID_COMMIT with custom field campaign: signup-promotion.
|
|
411
|
+
*
|
|
412
|
+
* ### Usage guidelines:
|
|
413
|
+
*
|
|
414
|
+
* - **Draft invoice handling**: Use `invoice_inclusion_mode` to control whether
|
|
415
|
+
* pending draft invoice deductions are included (`FINALIZED_AND_DRAFT`, the
|
|
416
|
+
* default) or excluded (`FINALIZED`) from the balance calculation
|
|
417
|
+
* - **Account hierarchies**: When querying a child customer, shared commits from
|
|
418
|
+
* parent contracts are not included — query the parent customer directly to see
|
|
419
|
+
* shared commit balances
|
|
420
|
+
* - **Negative balances**: Manual ledger entries can cause negative segment
|
|
421
|
+
* balances; these are treated as zero when calculating the net balance
|
|
422
|
+
* - **Credit types**: If `credit_type_id` is not specified, the balance defaults
|
|
423
|
+
* to USD (cents)
|
|
424
|
+
*
|
|
425
|
+
* @example
|
|
426
|
+
* ```ts
|
|
427
|
+
* const response = await client.v1.contracts.getNetBalance({
|
|
428
|
+
* customer_id: '13117714-3f05-48e5-a6e9-a66093f13b4d',
|
|
429
|
+
* credit_type_id: '2714e483-4ff1-48e4-9e25-ac732e8f24f2',
|
|
430
|
+
* filters: [
|
|
431
|
+
* {
|
|
432
|
+
* balance_types: ['CREDIT'],
|
|
433
|
+
* custom_fields: { campaign: 'free-trial' },
|
|
434
|
+
* },
|
|
435
|
+
* {
|
|
436
|
+
* balance_types: ['PREPAID_COMMIT', 'POSTPAID_COMMIT'],
|
|
437
|
+
* custom_fields: { campaign: 'signup-promotion' },
|
|
438
|
+
* },
|
|
439
|
+
* ],
|
|
440
|
+
* });
|
|
441
|
+
* ```
|
|
442
|
+
*/
|
|
443
|
+
getNetBalance(
|
|
444
|
+
body: ContractGetNetBalanceParams,
|
|
445
|
+
options?: RequestOptions,
|
|
446
|
+
): APIPromise<ContractGetNetBalanceResponse> {
|
|
447
|
+
return this._client.post('/v1/contracts/customerBalances/getNetBalance', { body, ...options });
|
|
448
|
+
}
|
|
449
|
+
|
|
377
450
|
/**
|
|
378
451
|
* Retrieve a comprehensive view of all available balances (commits and credits)
|
|
379
452
|
* for a customer. This endpoint provides real-time visibility into prepaid funds,
|
|
@@ -624,6 +697,26 @@ export interface ContractCreateHistoricalInvoicesResponse {
|
|
|
624
697
|
data: Array<InvoicesAPI.Invoice>;
|
|
625
698
|
}
|
|
626
699
|
|
|
700
|
+
export interface ContractGetNetBalanceResponse {
|
|
701
|
+
data: ContractGetNetBalanceResponse.Data;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
export namespace ContractGetNetBalanceResponse {
|
|
705
|
+
export interface Data {
|
|
706
|
+
/**
|
|
707
|
+
* The combined net balance that the customer has access to use at this moment
|
|
708
|
+
* across all pertinent commits and credits.
|
|
709
|
+
*/
|
|
710
|
+
balance: number;
|
|
711
|
+
|
|
712
|
+
/**
|
|
713
|
+
* The ID of the credit type (can be fiat or a custom pricing unit) that the
|
|
714
|
+
* balance is for.
|
|
715
|
+
*/
|
|
716
|
+
credit_type_id: string;
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
|
|
627
720
|
export type ContractListBalancesResponse = Shared.Commit | Shared.Credit;
|
|
628
721
|
|
|
629
722
|
export interface ContractRetrieveRateScheduleResponse {
|
|
@@ -763,12 +856,20 @@ export interface ContractCreateParams {
|
|
|
763
856
|
|
|
764
857
|
overrides?: Array<ContractCreateParams.Override>;
|
|
765
858
|
|
|
766
|
-
|
|
859
|
+
/**
|
|
860
|
+
* Selects the package linked to the specified alias as of the contract's start
|
|
861
|
+
* date. Mutually exclusive with package_id.
|
|
862
|
+
*/
|
|
863
|
+
package_alias?: string;
|
|
767
864
|
|
|
768
865
|
/**
|
|
769
|
-
*
|
|
866
|
+
* If provided, provisions a customer on a package instead of creating a
|
|
867
|
+
* traditional contract. When specified, only customer_id, starting_at, package_id,
|
|
868
|
+
* and uniqueness_key are allowed.
|
|
770
869
|
*/
|
|
771
|
-
|
|
870
|
+
package_id?: string;
|
|
871
|
+
|
|
872
|
+
prepaid_balance_threshold_configuration?: Shared.PrepaidBalanceThresholdConfiguration;
|
|
772
873
|
|
|
773
874
|
/**
|
|
774
875
|
* This field's availability is dependent on your client's configuration.
|
|
@@ -1124,7 +1225,7 @@ export namespace ContractCreateParams {
|
|
|
1124
1225
|
* not wish Metronome to calculate tax on your behalf. Leaving this field blank
|
|
1125
1226
|
* will default to NONE.
|
|
1126
1227
|
*/
|
|
1127
|
-
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | '
|
|
1228
|
+
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | 'PRECALCULATED';
|
|
1128
1229
|
}
|
|
1129
1230
|
|
|
1130
1231
|
export namespace PaymentGateConfig {
|
|
@@ -1228,6 +1329,11 @@ export namespace ContractCreateParams {
|
|
|
1228
1329
|
|
|
1229
1330
|
rate_type?: 'COMMIT_RATE' | 'LIST_RATE';
|
|
1230
1331
|
|
|
1332
|
+
/**
|
|
1333
|
+
* Fraction of unused segments that will be rolled over. Must be between 0 and 1.
|
|
1334
|
+
*/
|
|
1335
|
+
rollover_fraction?: number;
|
|
1336
|
+
|
|
1231
1337
|
/**
|
|
1232
1338
|
* List of filters that determine what kind of customer usage draws down a commit
|
|
1233
1339
|
* or credit. A customer's usage needs to meet the condition of at least one of the
|
|
@@ -1399,8 +1505,7 @@ export namespace ContractCreateParams {
|
|
|
1399
1505
|
parent_behavior?: HierarchyConfiguration.ParentBehavior;
|
|
1400
1506
|
|
|
1401
1507
|
/**
|
|
1402
|
-
*
|
|
1403
|
-
* invoice charges
|
|
1508
|
+
* Indicates which customer should pay for the child's invoice charges
|
|
1404
1509
|
*
|
|
1405
1510
|
* **SELF**: The child pays for its own invoice charges
|
|
1406
1511
|
*
|
|
@@ -1409,8 +1514,8 @@ export namespace ContractCreateParams {
|
|
|
1409
1514
|
payer?: 'SELF' | 'PARENT';
|
|
1410
1515
|
|
|
1411
1516
|
/**
|
|
1412
|
-
*
|
|
1413
|
-
*
|
|
1517
|
+
* Indicates the behavior of the child's invoice statements on the parent's
|
|
1518
|
+
* invoices.
|
|
1414
1519
|
*
|
|
1415
1520
|
* **CONSOLIDATE**: Child's invoice statements will be added to parent's
|
|
1416
1521
|
* consolidated invoices
|
|
@@ -1430,8 +1535,8 @@ export namespace ContractCreateParams {
|
|
|
1430
1535
|
|
|
1431
1536
|
export interface ParentBehavior {
|
|
1432
1537
|
/**
|
|
1433
|
-
*
|
|
1434
|
-
*
|
|
1538
|
+
* Indicates the desired behavior of consolidated invoices generated by the parent
|
|
1539
|
+
* in a customer hierarchy
|
|
1435
1540
|
*
|
|
1436
1541
|
* **CONCATENATE**: Statements on the invoices of child customers will be appended
|
|
1437
1542
|
* to the consolidated invoice
|
|
@@ -1573,7 +1678,7 @@ export namespace ContractCreateParams {
|
|
|
1573
1678
|
* Required for OVERWRITE type.
|
|
1574
1679
|
*/
|
|
1575
1680
|
export interface OverwriteRate {
|
|
1576
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
1681
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
1577
1682
|
|
|
1578
1683
|
credit_type_id?: string;
|
|
1579
1684
|
|
|
@@ -2754,7 +2859,7 @@ export namespace ContractAmendParams {
|
|
|
2754
2859
|
* not wish Metronome to calculate tax on your behalf. Leaving this field blank
|
|
2755
2860
|
* will default to NONE.
|
|
2756
2861
|
*/
|
|
2757
|
-
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | '
|
|
2862
|
+
tax_type?: 'NONE' | 'STRIPE' | 'ANROK' | 'PRECALCULATED';
|
|
2758
2863
|
}
|
|
2759
2864
|
|
|
2760
2865
|
export namespace PaymentGateConfig {
|
|
@@ -2858,6 +2963,11 @@ export namespace ContractAmendParams {
|
|
|
2858
2963
|
|
|
2859
2964
|
rate_type?: 'COMMIT_RATE' | 'LIST_RATE';
|
|
2860
2965
|
|
|
2966
|
+
/**
|
|
2967
|
+
* Fraction of unused segments that will be rolled over. Must be between 0 and 1.
|
|
2968
|
+
*/
|
|
2969
|
+
rollover_fraction?: number;
|
|
2970
|
+
|
|
2861
2971
|
/**
|
|
2862
2972
|
* List of filters that determine what kind of customer usage draws down a commit
|
|
2863
2973
|
* or credit. A customer's usage needs to meet the condition of at least one of the
|
|
@@ -3154,7 +3264,7 @@ export namespace ContractAmendParams {
|
|
|
3154
3264
|
* Required for OVERWRITE type.
|
|
3155
3265
|
*/
|
|
3156
3266
|
export interface OverwriteRate {
|
|
3157
|
-
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'CUSTOM';
|
|
3267
|
+
rate_type: 'FLAT' | 'PERCENTAGE' | 'SUBSCRIPTION' | 'TIERED' | 'TIERED_PERCENTAGE' | 'CUSTOM';
|
|
3158
3268
|
|
|
3159
3269
|
credit_type_id?: string;
|
|
3160
3270
|
|
|
@@ -3483,6 +3593,32 @@ export namespace ContractCreateHistoricalInvoicesParams {
|
|
|
3483
3593
|
}
|
|
3484
3594
|
}
|
|
3485
3595
|
|
|
3596
|
+
export interface ContractGetNetBalanceParams {
|
|
3597
|
+
/**
|
|
3598
|
+
* The ID of the customer.
|
|
3599
|
+
*/
|
|
3600
|
+
customer_id: string;
|
|
3601
|
+
|
|
3602
|
+
/**
|
|
3603
|
+
* The ID of the credit type (can be fiat or a custom pricing unit) to get the
|
|
3604
|
+
* balance for. Defaults to USD (cents) if not specified.
|
|
3605
|
+
*/
|
|
3606
|
+
credit_type_id?: string;
|
|
3607
|
+
|
|
3608
|
+
/**
|
|
3609
|
+
* Balance filters are OR'd together, so if a given commit or credit matches any of
|
|
3610
|
+
* the filters, it will be included in the net balance.
|
|
3611
|
+
*/
|
|
3612
|
+
filters?: Array<Shared.BalanceFilter>;
|
|
3613
|
+
|
|
3614
|
+
/**
|
|
3615
|
+
* Controls which invoices are considered when calculating the remaining balance.
|
|
3616
|
+
* `FINALIZED` considers only deductions from finalized invoices.
|
|
3617
|
+
* `FINALIZED_AND_DRAFT` also includes deductions from pending draft invoices.
|
|
3618
|
+
*/
|
|
3619
|
+
invoice_inclusion_mode?: 'FINALIZED' | 'FINALIZED_AND_DRAFT';
|
|
3620
|
+
}
|
|
3621
|
+
|
|
3486
3622
|
export interface ContractListBalancesParams extends BodyCursorPageParams {
|
|
3487
3623
|
customer_id: string;
|
|
3488
3624
|
|
|
@@ -3729,6 +3865,7 @@ export declare namespace Contracts {
|
|
|
3729
3865
|
type ContractAmendResponse as ContractAmendResponse,
|
|
3730
3866
|
type ContractArchiveResponse as ContractArchiveResponse,
|
|
3731
3867
|
type ContractCreateHistoricalInvoicesResponse as ContractCreateHistoricalInvoicesResponse,
|
|
3868
|
+
type ContractGetNetBalanceResponse as ContractGetNetBalanceResponse,
|
|
3732
3869
|
type ContractListBalancesResponse as ContractListBalancesResponse,
|
|
3733
3870
|
type ContractRetrieveRateScheduleResponse as ContractRetrieveRateScheduleResponse,
|
|
3734
3871
|
type ContractRetrieveSubscriptionQuantityHistoryResponse as ContractRetrieveSubscriptionQuantityHistoryResponse,
|
|
@@ -3742,6 +3879,7 @@ export declare namespace Contracts {
|
|
|
3742
3879
|
type ContractAmendParams as ContractAmendParams,
|
|
3743
3880
|
type ContractArchiveParams as ContractArchiveParams,
|
|
3744
3881
|
type ContractCreateHistoricalInvoicesParams as ContractCreateHistoricalInvoicesParams,
|
|
3882
|
+
type ContractGetNetBalanceParams as ContractGetNetBalanceParams,
|
|
3745
3883
|
type ContractListBalancesParams as ContractListBalancesParams,
|
|
3746
3884
|
type ContractRetrieveRateScheduleParams as ContractRetrieveRateScheduleParams,
|
|
3747
3885
|
type ContractRetrieveSubscriptionQuantityHistoryParams as ContractRetrieveSubscriptionQuantityHistoryParams,
|
|
@@ -8,6 +8,7 @@ export {
|
|
|
8
8
|
type ContractAmendResponse,
|
|
9
9
|
type ContractArchiveResponse,
|
|
10
10
|
type ContractCreateHistoricalInvoicesResponse,
|
|
11
|
+
type ContractGetNetBalanceResponse,
|
|
11
12
|
type ContractListBalancesResponse,
|
|
12
13
|
type ContractRetrieveRateScheduleResponse,
|
|
13
14
|
type ContractRetrieveSubscriptionQuantityHistoryResponse,
|
|
@@ -20,6 +21,7 @@ export {
|
|
|
20
21
|
type ContractAmendParams,
|
|
21
22
|
type ContractArchiveParams,
|
|
22
23
|
type ContractCreateHistoricalInvoicesParams,
|
|
24
|
+
type ContractGetNetBalanceParams,
|
|
23
25
|
type ContractListBalancesParams,
|
|
24
26
|
type ContractRetrieveRateScheduleParams,
|
|
25
27
|
type ContractRetrieveSubscriptionQuantityHistoryParams,
|
|
@@ -5,6 +5,9 @@ import { APIPromise } from '../../../core/api-promise';
|
|
|
5
5
|
import { buildHeaders } from '../../../internal/headers';
|
|
6
6
|
import { RequestOptions } from '../../../internal/request-options';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Named schedules are used for storing custom data that can change over time. Named schedules are often used in custom pricing logic.
|
|
10
|
+
*/
|
|
8
11
|
export class NamedSchedules extends APIResource {
|
|
9
12
|
/**
|
|
10
13
|
* Get a named schedule for the given rate card. This endpoint's availability is
|