UNPKG

@ibm-cloud/platform-services

Version:

Node.js client library for IBM Cloud Platform Services

1,043 lines 74 kB
"use strict"; /** * (C) Copyright IBM Corp. 2025. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; /** * IBM OpenAPI SDK Code Generator Version: 3.102.0-615ec964-20250307-203034 */ /* eslint-disable max-classes-per-file */ /* eslint-disable no-await-in-loop */ var extend = require("extend"); var ibm_cloud_sdk_core_1 = require("ibm-cloud-sdk-core"); var common_1 = require("../lib/common"); /** * Usage reports for IBM Cloud accounts * * API Version: 4.0.6 */ var UsageReportsV4 = /** @class */ (function (_super) { __extends(UsageReportsV4, _super); /** * Construct a UsageReportsV4 object. * * @param {Object} options - Options for the service. * @param {string} [options.serviceUrl] - The base URL for the service * @param {OutgoingHttpHeaders} [options.headers] - Default headers that shall be included with every request to the service. * @param {Authenticator} options.authenticator - The Authenticator object used to authenticate requests to the service * @constructor * @returns {UsageReportsV4} */ function UsageReportsV4(options) { var _this = this; options = options || {}; _this = _super.call(this, options) || this; if (options.serviceUrl) { _this.setServiceUrl(options.serviceUrl); } else { _this.setServiceUrl(UsageReportsV4.DEFAULT_SERVICE_URL); } return _this; } /************************* * Factory method ************************/ /** * Constructs an instance of UsageReportsV4 with passed in options and external configuration. * * @param {UserOptions} [options] - The parameters to send to the service. * @param {string} [options.serviceName] - The name of the service to configure * @param {Authenticator} [options.authenticator] - The Authenticator object used to authenticate requests to the service * @param {string} [options.serviceUrl] - The base URL for the service * @returns {UsageReportsV4} */ UsageReportsV4.newInstance = function (options) { options = options || {}; if (!options.serviceName) { options.serviceName = this.DEFAULT_SERVICE_NAME; } if (!options.authenticator) { options.authenticator = (0, ibm_cloud_sdk_core_1.getAuthenticatorFromEnvironment)(options.serviceName); } var service = new UsageReportsV4(options); service.configureService(options.serviceName); if (options.serviceUrl) { service.setServiceUrl(options.serviceUrl); } return service; }; /************************* * accountOperations ************************/ /** * Get account summary. * * Returns the summary for the account for a given month. Account billing managers are authorized to access this * report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.AccountSummary>>} */ UsageReportsV4.prototype.getAccountSummary = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'billingmonth']; var _validParams = ['accountId', 'billingmonth', 'signal', 'headers']; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var path = { 'account_id': _params.accountId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getAccountSummary'); var parameters = { options: { url: '/v4/accounts/{account_id}/summary/{billingmonth}', method: 'GET', path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Get account usage. * * Usage for all the resources and plans in an account for a given month. Account billing managers are authorized to * access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.AccountUsage>>} */ UsageReportsV4.prototype.getAccountUsage = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'billingmonth']; var _validParams = [ 'accountId', 'billingmonth', 'names', 'acceptLanguage', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, }; var path = { 'account_id': _params.accountId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getAccountUsage'); var parameters = { options: { url: '/v4/accounts/{account_id}/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /************************* * resourceOperations ************************/ /** * Get resource group usage. * * Usage for all the resources and plans in a resource group in a given month. Account billing managers or resource * group billing managers are authorized to access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.resourceGroupId - Resource group for which the usage report is requested. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.ResourceGroupUsage>>} */ UsageReportsV4.prototype.getResourceGroupUsage = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'resourceGroupId', 'billingmonth']; var _validParams = [ 'accountId', 'resourceGroupId', 'billingmonth', 'names', 'acceptLanguage', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, }; var path = { 'account_id': _params.accountId, 'resource_group_id': _params.resourceGroupId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getResourceGroupUsage'); var parameters = { options: { url: '/v4/accounts/{account_id}/resource_groups/{resource_group_id}/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Get resource instance usage in an account. * * Query for resource instance usage in an account. Filter the results with query parameters. Account billing * administrator is authorized to access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {boolean} [params.tags] - Include the tags associated with every resource instance. By default it is always * `true`. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {number} [params.limit] - Number of usage records returned. The default value is 30. Maximum value is 200. * @param {string} [params.start] - The offset from which the records must be fetched. Offset information is included * in the response. * @param {string} [params.resourceGroupId] - Filter by resource group. * @param {string} [params.organizationId] - Filter by organization_id. * @param {string} [params.resourceInstanceId] - Filter by resource instance_id. * @param {string} [params.resourceId] - Filter by resource_id. * @param {string} [params.planId] - Filter by plan_id. * @param {string} [params.region] - Region in which the resource instance is provisioned. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.InstancesUsage>>} */ UsageReportsV4.prototype.getResourceUsageAccount = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'billingmonth']; var _validParams = [ 'accountId', 'billingmonth', 'names', 'tags', 'acceptLanguage', 'limit', 'start', 'resourceGroupId', 'organizationId', 'resourceInstanceId', 'resourceId', 'planId', 'region', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, '_tags': _params.tags, '_limit': _params.limit, '_start': _params.start, 'resource_group_id': _params.resourceGroupId, 'organization_id': _params.organizationId, 'resource_instance_id': _params.resourceInstanceId, 'resource_id': _params.resourceId, 'plan_id': _params.planId, 'region': _params.region, }; var path = { 'account_id': _params.accountId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getResourceUsageAccount'); var parameters = { options: { url: '/v4/accounts/{account_id}/resource_instances/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Get resource instance usage in a resource group. * * Query for resource instance usage in a resource group. Filter the results with query parameters. Account billing * administrator and resource group billing administrators are authorized to access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.resourceGroupId - Resource group for which the usage report is requested. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {boolean} [params.tags] - Include the tags associated with every resource instance. By default it is always * `true`. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {number} [params.limit] - Number of usage records returned. The default value is 30. Maximum value is 200. * @param {string} [params.start] - The offset from which the records must be fetched. Offset information is included * in the response. * @param {string} [params.resourceInstanceId] - Filter by resource instance id. * @param {string} [params.resourceId] - Filter by resource_id. * @param {string} [params.planId] - Filter by plan_id. * @param {string} [params.region] - Region in which the resource instance is provisioned. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.InstancesUsage>>} */ UsageReportsV4.prototype.getResourceUsageResourceGroup = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'resourceGroupId', 'billingmonth']; var _validParams = [ 'accountId', 'resourceGroupId', 'billingmonth', 'names', 'tags', 'acceptLanguage', 'limit', 'start', 'resourceInstanceId', 'resourceId', 'planId', 'region', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, '_tags': _params.tags, '_limit': _params.limit, '_start': _params.start, 'resource_instance_id': _params.resourceInstanceId, 'resource_id': _params.resourceId, 'plan_id': _params.planId, 'region': _params.region, }; var path = { 'account_id': _params.accountId, 'resource_group_id': _params.resourceGroupId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getResourceUsageResourceGroup'); var parameters = { options: { url: '/v4/accounts/{account_id}/resource_groups/{resource_group_id}/resource_instances/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Get resource instance usage in an organization. * * Query for resource instance usage in an organization. Filter the results with query parameters. Account billing * administrator and organization billing administrators are authorized to access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.organizationId - ID of the organization. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {boolean} [params.tags] - Include the tags associated with every resource instance. By default it is always * `true`. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {number} [params.limit] - Number of usage records returned. The default value is 30. Maximum value is 200. * @param {string} [params.start] - The offset from which the records must be fetched. Offset information is included * in the response. * @param {string} [params.resourceInstanceId] - Filter by resource instance id. * @param {string} [params.resourceId] - Filter by resource_id. * @param {string} [params.planId] - Filter by plan_id. * @param {string} [params.region] - Region in which the resource instance is provisioned. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.InstancesUsage>>} */ UsageReportsV4.prototype.getResourceUsageOrg = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'organizationId', 'billingmonth']; var _validParams = [ 'accountId', 'organizationId', 'billingmonth', 'names', 'tags', 'acceptLanguage', 'limit', 'start', 'resourceInstanceId', 'resourceId', 'planId', 'region', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, '_tags': _params.tags, '_limit': _params.limit, '_start': _params.start, 'resource_instance_id': _params.resourceInstanceId, 'resource_id': _params.resourceId, 'plan_id': _params.planId, 'region': _params.region, }; var path = { 'account_id': _params.accountId, 'organization_id': _params.organizationId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getResourceUsageOrg'); var parameters = { options: { url: '/v4/accounts/{account_id}/organizations/{organization_id}/resource_instances/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /************************* * organizationOperations ************************/ /** * Get organization usage. * * Usage for all the resources and plans in an organization in a given month. Account billing managers or organization * billing managers are authorized to access this report. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the usage report is requested. * @param {string} params.organizationId - ID of the organization. * @param {string} params.billingmonth - The billing month for which the usage report is requested. Format is * yyyy-mm. * @param {boolean} [params.names] - Include the name of every resource, plan, resource instance, organization, and * resource group. * @param {string} [params.acceptLanguage] - Prioritize the names returned in the order of the specified languages. * Language will default to English. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.OrgUsage>>} */ UsageReportsV4.prototype.getOrgUsage = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'organizationId', 'billingmonth']; var _validParams = [ 'accountId', 'organizationId', 'billingmonth', 'names', 'acceptLanguage', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { '_names': _params.names, }; var path = { 'account_id': _params.accountId, 'organization_id': _params.organizationId, 'billingmonth': _params.billingmonth, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getOrgUsage'); var parameters = { options: { url: '/v4/accounts/{account_id}/organizations/{organization_id}/usage/{billingmonth}', method: 'GET', qs: query, path: path, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Accept-Language': _params.acceptLanguage, }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /************************* * billingReportsSnapshot ************************/ /** * Setup the snapshot configuration. * * Snapshots of the billing reports would be taken on a periodic interval and stored based on the configuration setup * by the customer for the given Account Id. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which billing report snapshot is configured. * @param {string} params.interval - Frequency of taking the snapshot of the billing reports. * @param {string} params.cosBucket - The name of the COS bucket to store the snapshot of the billing reports. * @param {string} params.cosLocation - Region of the COS instance. * @param {string} [params.cosReportsFolder] - The billing reports root folder to store the billing reports snapshots. * Defaults to "IBMCloud-Billing-Reports". * @param {string[]} [params.reportTypes] - The type of billing reports to take snapshot of. Possible values are * [account_summary, enterprise_summary, account_resource_instance_usage]. * @param {string} [params.versioning] - A new version of report is created or the existing report version is * overwritten with every update. Defaults to "new". * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.SnapshotConfig>>} */ UsageReportsV4.prototype.createReportsSnapshotConfig = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'interval', 'cosBucket', 'cosLocation']; var _validParams = [ 'accountId', 'interval', 'cosBucket', 'cosLocation', 'cosReportsFolder', 'reportTypes', 'versioning', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var body = { 'account_id': _params.accountId, 'interval': _params.interval, 'cos_bucket': _params.cosBucket, 'cos_location': _params.cosLocation, 'cos_reports_folder': _params.cosReportsFolder, 'report_types': _params.reportTypes, 'versioning': _params.versioning, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'createReportsSnapshotConfig'); var parameters = { options: { url: '/v1/billing-reports-snapshot-config', method: 'POST', body: body, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Content-Type': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Fetch the snapshot configuration. * * Returns the configuration of snapshot of the billing reports setup by the customer for the given Account Id. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the billing report snapshot is configured. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.SnapshotConfig>>} */ UsageReportsV4.prototype.getReportsSnapshotConfig = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId']; var _validParams = ['accountId', 'signal', 'headers']; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { 'account_id': _params.accountId, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getReportsSnapshotConfig'); var parameters = { options: { url: '/v1/billing-reports-snapshot-config', method: 'GET', qs: query, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Update the snapshot configuration. * * Updates the configuration of snapshot of the billing reports setup by the customer for the given Account Id. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which billing report snapshot is configured. * @param {string} [params.interval] - Frequency of taking the snapshot of the billing reports. * @param {string} [params.cosBucket] - The name of the COS bucket to store the snapshot of the billing reports. * @param {string} [params.cosLocation] - Region of the COS instance. * @param {string} [params.cosReportsFolder] - The billing reports root folder to store the billing reports snapshots. * @param {string[]} [params.reportTypes] - The type of billing reports to take snapshot of. Possible values are * [account_summary, enterprise_summary, account_resource_instance_usage]. * @param {string} [params.versioning] - A new version of report is created or the existing report version is * overwritten with every update. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.SnapshotConfig>>} */ UsageReportsV4.prototype.updateReportsSnapshotConfig = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId']; var _validParams = [ 'accountId', 'interval', 'cosBucket', 'cosLocation', 'cosReportsFolder', 'reportTypes', 'versioning', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var body = { 'account_id': _params.accountId, 'interval': _params.interval, 'cos_bucket': _params.cosBucket, 'cos_location': _params.cosLocation, 'cos_reports_folder': _params.cosReportsFolder, 'report_types': _params.reportTypes, 'versioning': _params.versioning, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'updateReportsSnapshotConfig'); var parameters = { options: { url: '/v1/billing-reports-snapshot-config', method: 'PATCH', body: body, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Content-Type': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Delete the snapshot configuration. * * Delete the configuration of snapshot of the billing reports setup by the customer for the given Account Id. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the billing report snapshot is configured. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.EmptyObject>>} */ UsageReportsV4.prototype.deleteReportsSnapshotConfig = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId']; var _validParams = ['accountId', 'signal', 'headers']; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { 'account_id': _params.accountId, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'deleteReportsSnapshotConfig'); var parameters = { options: { url: '/v1/billing-reports-snapshot-config', method: 'DELETE', qs: query, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, {}, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Verify billing to COS authorization. * * Verify billing service to COS bucket authorization for the given account_id. If COS bucket information is not * provided, COS bucket information is retrieved from the configuration file. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which billing report snapshot is configured. * @param {string} [params.interval] - Frequency of taking the snapshot of the billing reports. * @param {string} [params.cosBucket] - The name of the COS bucket to store the snapshot of the billing reports. * @param {string} [params.cosLocation] - Region of the COS instance. * @param {string} [params.cosReportsFolder] - The billing reports root folder to store the billing reports snapshots. * Defaults to "IBMCloud-Billing-Reports". * @param {string[]} [params.reportTypes] - The type of billing reports to take snapshot of. Possible values are * [account_summary, enterprise_summary, account_resource_instance_usage]. * @param {string} [params.versioning] - A new version of report is created or the existing report version is * overwritten with every update. Defaults to "new". * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.SnapshotConfigValidateResponse>>} */ UsageReportsV4.prototype.validateReportsSnapshotConfig = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId']; var _validParams = [ 'accountId', 'interval', 'cosBucket', 'cosLocation', 'cosReportsFolder', 'reportTypes', 'versioning', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var body = { 'account_id': _params.accountId, 'interval': _params.interval, 'cos_bucket': _params.cosBucket, 'cos_location': _params.cosLocation, 'cos_reports_folder': _params.cosReportsFolder, 'report_types': _params.reportTypes, 'versioning': _params.versioning, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'validateReportsSnapshotConfig'); var parameters = { options: { url: '/v1/billing-reports-snapshot-config/validate', method: 'POST', body: body, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', 'Content-Type': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; /** * Fetch the current or past snapshots. * * Returns the billing reports snapshots captured for the given Account Id in the specific time period. * * @param {Object} params - The parameters to send to the service. * @param {string} params.accountId - Account ID for which the billing report snapshot is requested. * @param {string} params.month - The month for which billing report snapshot is requested. Format is yyyy-mm. * @param {number} [params.dateFrom] - Timestamp in milliseconds for which billing report snapshot is requested. * @param {number} [params.dateTo] - Timestamp in milliseconds for which billing report snapshot is requested. * @param {number} [params.limit] - Number of usage records returned. The default value is 30. Maximum value is 200. * @param {string} [params.start] - The offset from which the records must be fetched. Offset information is included * in the response. * @param {OutgoingHttpHeaders} [params.headers] - Custom request headers * @returns {Promise<UsageReportsV4.Response<UsageReportsV4.SnapshotList>>} */ UsageReportsV4.prototype.getReportsSnapshot = function (params) { var _params = __assign({}, params); var _requiredParams = ['accountId', 'month']; var _validParams = [ 'accountId', 'month', 'dateFrom', 'dateTo', 'limit', 'start', 'signal', 'headers', ]; var _validationErrors = (0, ibm_cloud_sdk_core_1.validateParams)(_params, _requiredParams, _validParams); if (_validationErrors) { return Promise.reject(_validationErrors); } var query = { 'account_id': _params.accountId, 'month': _params.month, 'date_from': _params.dateFrom, 'date_to': _params.dateTo, '_limit': _params.limit, '_start': _params.start, }; var sdkHeaders = (0, common_1.getSdkHeaders)(UsageReportsV4.DEFAULT_SERVICE_NAME, 'v4', 'getReportsSnapshot'); var parameters = { options: { url: '/v1/billing-reports-snapshots', method: 'GET', qs: query, }, defaultOptions: extend(true, {}, this.baseOptions, { headers: extend(true, sdkHeaders, this.baseOptions.headers, { 'Accept': 'application/json', }, _params.headers), axiosOptions: { signal: _params.signal, }, }), }; return this.createRequest(parameters); }; UsageReportsV4.DEFAULT_SERVICE_URL = 'https://billing.cloud.ibm.com'; UsageReportsV4.DEFAULT_SERVICE_NAME = 'usage_reports'; return UsageReportsV4; }(ibm_cloud_sdk_core_1.BaseService)); /************************* * interfaces ************************/ (function (UsageReportsV4) { /** Constants for the `createReportsSnapshotConfig` operation. */ var CreateReportsSnapshotConfigConstants; (function (CreateReportsSnapshotConfigConstants) { /** Frequency of taking the snapshot of the billing reports. */ var Interval; (function (Interval) { Interval["DAILY"] = "daily"; })(Interval = CreateReportsSnapshotConfigConstants.Interval || (CreateReportsSnapshotConfigConstants.Interval = {})); /** ReportTypes */ var ReportTypes; (function (ReportTypes) { ReportTypes["ACCOUNT_SUMMARY"] = "account_summary"; ReportTypes["ENTERPRISE_SUMMARY"] = "enterprise_summary"; ReportTypes["ACCOUNT_RESOURCE_INSTANCE_USAGE"] = "account_resource_instance_usage"; })(ReportTypes = CreateReportsSnapshotConfigConstants.ReportTypes || (CreateReportsSnapshotConfigConstants.ReportTypes = {})); /** A new version of report is created or the existing report version is overwritten with every update. Defaults to "new". */ var Versioning; (function (Versioning) { Versioning["NEW"] = "new"; Versioning["OVERWRITE"] = "overwrite"; })(Versioning = CreateReportsSnapshotConfigConstants.Versioning || (CreateReportsSnapshotConfigConstants.Versioning = {})); })(CreateReportsSnapshotConfigConstants = UsageReportsV4.CreateReportsSnapshotConfigConstants || (UsageReportsV4.CreateReportsSnapshotConfigConstants = {})); /** Constants for the `updateReportsSnapshotConfig` operation. */ var UpdateReportsSnapshotConfigConstants; (function (UpdateReportsSnapshotConfigConstants) { /** Frequency of taking the snapshot of the billing reports. */ var Interval; (function (Interval) { Interval["DAILY"] = "daily"; })(Interval = UpdateReportsSnapshotConfigConstants.Interval || (UpdateReportsSnapshotConfigConstants.Interval = {})); /** ReportTypes */ var ReportTypes; (function (ReportTypes) { ReportTypes["ACCOUNT_SUMMARY"] = "account_summary"; ReportTypes["ENTERPRISE_SUMMARY"] = "enterprise_summary"; ReportTypes["ACCOUNT_RESOURCE_INSTANCE_USAGE"] = "account_resource_instance_usage"; })(ReportTypes = UpdateReportsSnapshotConfigConstants.ReportTypes || (UpdateReportsSnapshotConfigConstants.ReportTypes = {})); /** A new version of report is created or the existing report version is overwritten with every update. */ var Versioning; (function (Versioning) { Versioning["NEW"] = "new"; Versioning["OVERWRITE"] = "overwrite"; })(Versioning = UpdateReportsSnapshotConfigConstants.Versioning || (UpdateReportsSnapshotConfigConstants.Versioning = {})); })(UpdateReportsSnapshotConfigConstants = UsageReportsV4.UpdateReportsSnapshotConfigConstants || (UsageReportsV4.UpdateReportsSnapshotConfigConstants = {})); /** Constants for the `validateReportsSnapshotConfig` operation. */ var ValidateReportsSnapshotConfigConstants; (function (ValidateReportsSnapshotConfigConstants) { /** Frequency of taking the snapshot of the billing reports. */ var Interval; (function (Interval) { Interval["DAILY"] = "daily"; })(Interval = ValidateReportsSnapshotConfigConstants.Interval || (ValidateReportsSnapshotConfigConstants.Interval = {})); /** ReportTypes */ var ReportTypes; (function (ReportTypes) { ReportTypes["ACCOUNT_SUMMARY"] = "account_summary"; ReportTypes["ENTERPRISE_SUMMARY"] = "enterprise_summary"; ReportTypes["ACCOUNT_RESOURCE_INSTANCE_USAGE"] = "account_resource_instance_usage"; })(ReportTypes = ValidateReportsSnapshotConfigConstants.ReportTypes || (ValidateReportsSnapshotConfigConstants.ReportTypes = {})); /** A new version of report is created or the existing report version is overwritten with every update. Defaults to "new". */ var Versioning; (function (Versioning) { Versioning["NEW"] = "new"; Versioning["OVERWRITE"] = "overwrite"; })(Versioning = ValidateReportsSnapshotConfigConstants.Versioning || (ValidateReportsSnapshotConfigConstants.Versioning = {})); })(ValidateReportsSnapshotConfigConstants = UsageReportsV4.ValidateReportsSnapshotConfigConstants || (UsageReportsV4.Valid