cloudflare
Version:
The official TypeScript library for the Cloudflare API
238 lines • 9.79 kB
text/typescript
import { APIResource } from "../../../core/resource.mjs";
import { APIPromise } from "../../../core/api-promise.mjs";
import { RequestOptions } from "../../../internal/request-options.mjs";
export declare class BaseUsage extends APIResource {
static readonly _key: readonly ['organizations', 'billing', 'usage'];
/**
* Returns cost and usage data for all accounts within an organization, aligned
* with the [FinOps FOCUS v1.3](https://focus.finops.org/focus-specification/v1-3/)
* Cost and Usage dataset specification.
*
* Each record represents one billable metric for one account on one day. This
* includes all metered usage, including usage that falls within free-tier
* allowances and may result in zero cost. The response includes usage for every
* account belonging to the specified organization.
*
* **Note:** Cost and pricing fields are not yet populated and will be absent from
* responses until billing integration is complete.
*
* When `from` and `to` are omitted, defaults to the start of the current month
* through today. The maximum date range is 31 days.
*
* An organization with no accounts, or an organization ID that does not exist,
* returns a successful response with an empty result set rather than an error.
*/
get(organizationID: string, query?: UsageGetParams | null | undefined, options?: RequestOptions): APIPromise<UsageGetResponse>;
}
export declare class Usage extends BaseUsage {
}
/**
* Contains the array of cost and usage records.
*/
export type UsageGetResponse = Array<UsageGetResponse.UsageGetResponseItem>;
export declare namespace UsageGetResponse {
/**
* A single cost and usage record for a metered product within a specific charge
* period, aligned with the FinOps FOCUS v1.3 specification.
*/
interface UsageGetResponseItem {
/**
* Highest-level classification of a charge based on the nature of how it gets
* billed. Currently only "Usage" is supported.
*/
ChargeCategory: 'Usage';
/**
* Self-contained summary of the charge's purpose and price.
*/
ChargeDescription: string;
/**
* Indicates how often a charge occurs. Currently only "Usage-Based" is supported.
*/
ChargeFrequency: 'Usage-Based';
/**
* Exclusive end of the time interval during which the usage was consumed.
*/
ChargePeriodEnd: string;
/**
* Inclusive start of the time interval during which the usage was consumed.
*/
ChargePeriodStart: string;
/**
* Measured usage amount within the charge period. Reflects raw metered consumption
* before pricing transformations.
*/
ConsumedQuantity: number;
/**
* Unit of measure for the consumed quantity (e.g., "GB", "Requests",
* "vCPU-Hours").
*/
ConsumedUnit: string;
/**
* Name of the entity providing the underlying infrastructure or platform.
*/
HostProviderName: string;
/**
* Name of the entity responsible for invoicing for the services consumed.
*/
InvoiceIssuerName: string;
/**
* Name of the entity that made the services available for purchase.
*/
ServiceProviderName: string;
/**
* The unique identifier for the billable metric in the Cloudflare catalog.
* Cloudflare extension; replaces FOCUS SkuId.
*/
x_BillableMetricId: string;
/**
* A charge serving as the basis for invoicing, inclusive of all reduced rates and
* discounts while excluding the amortization of upfront charges (one-time or
* recurring).
*/
BilledCost?: number | null;
/**
* Public identifier of the Cloudflare account (account tag). Omitted when account
* is not part of the requested grouping, and always omitted for usage measured at
* contract level, even when grouping by account: that usage is returned as its own
* record with no account.
*/
BillingAccountId?: string;
/**
* Display name of the Cloudflare account. Omitted when account is not part of the
* requested grouping, and for usage measured at contract level.
*/
BillingAccountName?: string;
/**
* Currency that a charge was billed in (ISO 4217).
*/
BillingCurrency?: string | null;
/**
* Exclusive end of the billing cycle that contains this usage record.
*/
BillingPeriodEnd?: string | null;
/**
* Inclusive start of the billing cycle that contains this usage record.
*/
BillingPeriodStart?: string | null;
/**
* Indicates whether the row represents a correction to one or more charges
* invoiced in a previous billing period.
*/
ChargeClass?: 'Correction' | null;
/**
* Cost calculated by multiplying ContractedUnitPrice and the corresponding
* PricingQuantity.
*/
ContractedCost?: number | null;
/**
* The agreed-upon unit price for a single PricingUnit of the associated billable
* metric, inclusive of negotiated discounts, if present, while excluding any other
* discounts.
*/
ContractedUnitPrice?: number | null;
/**
* The amortized cost of the charge after applying all reduced rates, discounts,
* and the applicable portion of relevant, prepaid purchases (one-time or
* recurring) that covered the charge.
*/
EffectiveCost?: number | null;
/**
* Cost calculated by multiplying ListUnitPrice and the corresponding
* PricingQuantity.
*/
ListCost?: number | null;
/**
* Suggested provider-published unit price for a single PricingUnit of the
* associated billable metric, exclusive of any discounts.
*/
ListUnitPrice?: number | null;
/**
* Volume of a given service used or purchased, based on the PricingUnit.
*/
PricingQuantity?: number | null;
/**
* Provider-specified measurement unit for determining unit prices, indicating how
* the provider rates measured usage after applying pricing rules like block
* pricing.
*/
PricingUnit?: string | null;
/**
* Provider-assigned identifier for an isolated geographic area where a service is
* provided.
*/
RegionId?: string | null;
/**
* Name of an isolated geographic area where a service is provided.
*/
RegionName?: string | null;
/**
* Unique identifier assigned to a grouping of services. For Cloudflare, this is
* the subscription or contract ID.
*/
SubAccountId?: string;
/**
* Name assigned to a grouping of services. For Cloudflare, this is the
* subscription or contract display name.
*/
SubAccountName?: string;
/**
* Tag values for the requested `GroupBy` keys. Omitted when `GroupBy` is not
* provided. Missing keys are omitted, and key-only tags are returned as boolean
* `true`. All other tag values are strings.
*/
Tags?: {
[]: string | true;
};
/**
* The display name of the billable metric. Cloudflare extension; replaces FOCUS
* SkuMeter.
*/
x_BillableMetricName?: string;
/**
* The product category the charge belongs to (e.g., "Developer", "Cloudflare
* One"). Cloudflare extension; replaces FOCUS ServiceCategory.
*/
x_ProductCategoryName?: string;
/**
* The unique identifier for the product family in the Cloudflare catalog.
* Cloudflare extension; replaces FOCUS ServiceId.
*/
x_ProductFamilyId?: string;
/**
* The product family the charge belongs to (e.g., "R2", "Workers"). Cloudflare
* extension; replaces FOCUS ServiceName.
*/
x_ProductFamilyName?: string;
/**
* The identifier for the Cloudflare zone (zone tag). Omitted when zone is not part
* of the requested grouping, and always omitted for usage measured at contract
* level, even when grouping by zone. Cloudflare extension.
*/
x_ZoneId?: string | null;
/**
* The display name of the Cloudflare zone. Omitted when zone is not part of the
* requested grouping, and for usage measured at contract level. Cloudflare
* extension.
*/
x_ZoneName?: string | null;
}
}
export interface UsageGetParams {
/**
* Start date for the usage query (ISO 8601). Required if `to` is set. When omitted
* along with `to`, defaults to the start of the current month. Filters by charge
* period (when consumption happened), not billing period. The maximum date range
* is 31 days.
*/
from?: string;
/**
* End date for the usage query (ISO 8601). Required if `from` is set. When omitted
* along with `from`, defaults to today. Filters by charge period (when consumption
* happened), not billing period. The maximum date range is 31 days.
*/
to?: string;
}
export declare namespace Usage {
export { type UsageGetResponse as UsageGetResponse, type UsageGetParams as UsageGetParams };
}
//# sourceMappingURL=usage.d.mts.map