992 lines
46 KiB
TypeScript
992 lines
46 KiB
TypeScript
/**
|
|
* Copyright 2015 Google Inc. All Rights Reserved.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
/* jshint maxlen: false */
|
|
|
|
import createAPIRequest from '../../lib/apirequest';
|
|
|
|
/**
|
|
* Google Service Control API
|
|
*
|
|
* Google Service Control provides control plane functionality to managed services, such as logging, monitoring, and status checks.
|
|
*
|
|
* @example
|
|
* const google = require('googleapis');
|
|
* const servicecontrol = google.servicecontrol('v1');
|
|
*
|
|
* @namespace servicecontrol
|
|
* @type {Function}
|
|
* @version v1
|
|
* @variation v1
|
|
* @param {object=} options Options for Servicecontrol
|
|
*/
|
|
function Servicecontrol(options) { // eslint-disable-line
|
|
const self = this;
|
|
self._options = options || {};
|
|
|
|
self.services = {
|
|
|
|
/**
|
|
* servicecontrol.services.allocateQuota
|
|
*
|
|
* @desc Attempts to allocate quota for the specified consumer. It should be called before the operation is executed. This method requires the `servicemanagement.services.quota` permission on the specified service. For more information, see [Cloud IAM](https://cloud.google.com/iam). **NOTE:** The client **must** fail-open on server errors `INTERNAL`, `UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system reliability, the server may inject these errors to prohibit any hard dependency on the quota functionality.
|
|
*
|
|
* @alias servicecontrol.services.allocateQuota
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName Name of the service as specified in the service configuration. For example, `"pubsub.googleapis.com"`. See google.api.Service for the definition of a service name.
|
|
* @param {servicecontrol(v1).AllocateQuotaRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
allocateQuota: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:allocateQuota').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
},
|
|
|
|
/**
|
|
* servicecontrol.services.check
|
|
*
|
|
* @desc Checks an operation with Google Service Control to decide whether the given operation should proceed. It should be called before the operation is executed. If feasible, the client should cache the check results and reuse them for 60 seconds. In case of server errors, the client can rely on the cached results for longer time. NOTE: the CheckRequest has the size limit of 64KB. This method requires the `servicemanagement.services.check` permission on the specified service. For more information, see [Google Cloud IAM](https://cloud.google.com/iam).
|
|
*
|
|
* @alias servicecontrol.services.check
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName The service name as specified in its service configuration. For example, `"pubsub.googleapis.com"`. See [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) for the definition of a service name.
|
|
* @param {servicecontrol(v1).CheckRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
check: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:check').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
},
|
|
|
|
/**
|
|
* servicecontrol.services.endReconciliation
|
|
*
|
|
* @desc Signals the quota controller that service ends the ongoing usage reconciliation. This method requires the `servicemanagement.services.quota` permission on the specified service. For more information, see [Google Cloud IAM](https://cloud.google.com/iam).
|
|
*
|
|
* @alias servicecontrol.services.endReconciliation
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName Name of the service as specified in the service configuration. For example, `"pubsub.googleapis.com"`. See google.api.Service for the definition of a service name.
|
|
* @param {servicecontrol(v1).EndReconciliationRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
endReconciliation: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:endReconciliation').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
},
|
|
|
|
/**
|
|
* servicecontrol.services.releaseQuota
|
|
*
|
|
* @desc Releases previously allocated quota done through AllocateQuota method. This method requires the `servicemanagement.services.quota` permission on the specified service. For more information, see [Cloud IAM](https://cloud.google.com/iam). **NOTE:** The client **must** fail-open on server errors `INTERNAL`, `UNKNOWN`, `DEADLINE_EXCEEDED`, and `UNAVAILABLE`. To ensure system reliability, the server may inject these errors to prohibit any hard dependency on the quota functionality.
|
|
*
|
|
* @alias servicecontrol.services.releaseQuota
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName Name of the service as specified in the service configuration. For example, `"pubsub.googleapis.com"`. See google.api.Service for the definition of a service name.
|
|
* @param {servicecontrol(v1).ReleaseQuotaRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
releaseQuota: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:releaseQuota').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
},
|
|
|
|
/**
|
|
* servicecontrol.services.report
|
|
*
|
|
* @desc Reports operation results to Google Service Control, such as logs and metrics. It should be called after an operation is completed. If feasible, the client should aggregate reporting data for up to 5 seconds to reduce API traffic. Limiting aggregation to 5 seconds is to reduce data loss during client crashes. Clients should carefully choose the aggregation time window to avoid data loss risk more than 0.01% for business and compliance reasons. NOTE: the ReportRequest has the size limit of 1MB. This method requires the `servicemanagement.services.report` permission on the specified service. For more information, see [Google Cloud IAM](https://cloud.google.com/iam).
|
|
*
|
|
* @alias servicecontrol.services.report
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName The service name as specified in its service configuration. For example, `"pubsub.googleapis.com"`. See [google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service) for the definition of a service name.
|
|
* @param {servicecontrol(v1).ReportRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
report: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:report').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
},
|
|
|
|
/**
|
|
* servicecontrol.services.startReconciliation
|
|
*
|
|
* @desc Unlike rate quota, allocation quota does not get refilled periodically. So, it is possible that the quota usage as seen by the service differs from what the One Platform considers the usage is. This is expected to happen only rarely, but over time this can accumulate. Services can invoke StartReconciliation and EndReconciliation to correct this usage drift, as described below: 1. Service sends StartReconciliation with a timestamp in future for each metric that needs to be reconciled. The timestamp being in future allows to account for in-flight AllocateQuota and ReleaseQuota requests for the same metric. 2. One Platform records this timestamp and starts tracking subsequent AllocateQuota and ReleaseQuota requests until EndReconciliation is called. 3. At or after the time specified in the StartReconciliation, service sends EndReconciliation with the usage that needs to be reconciled to. 4. One Platform adjusts its own record of usage for that metric to the value specified in EndReconciliation by taking in to account any allocation or release between StartReconciliation and EndReconciliation. Signals the quota controller that the service wants to perform a usage reconciliation as specified in the request. This method requires the `servicemanagement.services.quota` permission on the specified service. For more information, see [Google Cloud IAM](https://cloud.google.com/iam).
|
|
*
|
|
* @alias servicecontrol.services.startReconciliation
|
|
* @memberOf! servicecontrol(v1)
|
|
*
|
|
* @param {object} params Parameters for request
|
|
* @param {string} params.serviceName Name of the service as specified in the service configuration. For example, `"pubsub.googleapis.com"`. See google.api.Service for the definition of a service name.
|
|
* @param {servicecontrol(v1).StartReconciliationRequest} params.resource Request body data
|
|
* @param {object} [options] Optionally override request options, such as `url`, `method`, and `encoding`.
|
|
* @param {callback} callback The callback that handles the response.
|
|
* @return {object} Request object
|
|
*/
|
|
startReconciliation: function (params, options, callback) {
|
|
if (typeof options === 'function') {
|
|
callback = options;
|
|
options = {};
|
|
}
|
|
options || (options = {});
|
|
|
|
const rootUrl = options.rootUrl || 'https://servicecontrol.googleapis.com/';
|
|
|
|
const parameters = {
|
|
options: Object.assign({
|
|
url: (rootUrl + '/v1/services/{serviceName}:startReconciliation').replace(/([^:]\/)\/+/g, '$1'),
|
|
method: 'POST'
|
|
}, options),
|
|
params: params,
|
|
requiredParams: ['serviceName'],
|
|
pathParams: ['serviceName'],
|
|
context: self
|
|
};
|
|
|
|
return createAPIRequest(parameters, callback);
|
|
}
|
|
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @typedef AllocateInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string[]} unusedArguments A list of label keys that were unused by the server in processing the
|
|
request. Thus, for similar requests repeated in a certain future time
|
|
window, the caller can choose to ignore these labels in the requests
|
|
to achieve better client-side cache hits and quota aggregation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef AllocateQuotaRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).QuotaOperation} allocateOperation Operation that describes the quota allocation.
|
|
* @property {string} serviceConfigId Specifies which version of service configuration should be used to process
|
|
the request. If unspecified or no matching version can be found, the latest
|
|
one will be used.
|
|
*/
|
|
|
|
/**
|
|
* @typedef AllocateQuotaResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).QuotaError[]} allocateErrors Indicates the decision of the allocate.
|
|
* @property {servicecontrol(v1).AllocateInfo} allocateInfo WARNING: DO NOT use this field until this warning message is removed.
|
|
* @property {string} operationId The same operation_id value used in the AllocateQuotaRequest. Used for
|
|
logging and diagnostics purposes.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Quota metrics to indicate the result of allocation. Depending on the
|
|
request, one or more of the following metrics will be included:
|
|
|
|
1. For rate quota, per quota group or per quota metric incremental usage
|
|
will be specified using the following delta metric:
|
|
"serviceruntime.googleapis.com/api/consumer/quota_used_count"
|
|
|
|
2. For allocation quota, per quota metric total usage will be specified
|
|
using the following gauge metric:
|
|
"serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
|
|
|
|
3. For both rate quota and allocation quota, the quota limit reached
|
|
condition will be specified using the following boolean metric:
|
|
"serviceruntime.googleapis.com/quota/exceeded"
|
|
|
|
4. For allocation quota, value for each quota limit associated with
|
|
the metrics will be specified using the following gauge metric:
|
|
"serviceruntime.googleapis.com/quota/limit"
|
|
* @property {string} serviceConfigId ID of the actual config used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef AuditLog
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).AuthenticationInfo} authenticationInfo Authentication information.
|
|
* @property {servicecontrol(v1).AuthorizationInfo[]} authorizationInfo Authorization information. If there are multiple
|
|
resources or permissions involved, then there is
|
|
one AuthorizationInfo element for each {resource, permission} tuple.
|
|
* @property {object[]} metadata Other service-specific data about the request, response, and other
|
|
information associated with the current audited event.
|
|
* @property {string} methodName The name of the service method or operation.
|
|
For API calls, this should be the name of the API method.
|
|
For example,
|
|
|
|
"google.datastore.v1.Datastore.RunQuery"
|
|
"google.logging.v1.LoggingService.DeleteLog"
|
|
* @property {string} numResponseItems The number of items returned from a List or Query API method,
|
|
if applicable.
|
|
* @property {object} request The operation request. This may not include all request parameters,
|
|
such as those that are too large, privacy-sensitive, or duplicated
|
|
elsewhere in the log record.
|
|
It should never include user-generated data, such as file contents.
|
|
When the JSON object represented here has a proto equivalent, the proto
|
|
name will be indicated in the `@type` property.
|
|
* @property {servicecontrol(v1).RequestMetadata} requestMetadata Metadata about the operation.
|
|
* @property {string} resourceName The resource or collection that is the target of the operation.
|
|
The name is a scheme-less URI, not including the API service name.
|
|
For example:
|
|
|
|
"shelves/SHELF_ID/books"
|
|
"shelves/SHELF_ID/books/BOOK_ID"
|
|
* @property {object} response The operation response. This may not include all response elements,
|
|
such as those that are too large, privacy-sensitive, or duplicated
|
|
elsewhere in the log record.
|
|
It should never include user-generated data, such as file contents.
|
|
When the JSON object represented here has a proto equivalent, the proto
|
|
name will be indicated in the `@type` property.
|
|
* @property {object} serviceData Deprecated, use `metadata` field instead.
|
|
Other service-specific data about the request, response, and other
|
|
activities.
|
|
* @property {string} serviceName The name of the API service performing the operation. For example,
|
|
`"datastore.googleapis.com"`.
|
|
* @property {servicecontrol(v1).Status} status The status of the overall operation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef AuthenticationInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} authoritySelector The authority selector specified by the requestor, if any.
|
|
It is not guaranteed that the principal was allowed to use this authority.
|
|
* @property {string} principalEmail The email address of the authenticated user (or service account on behalf
|
|
of third party principal) making the request. For privacy reasons, the
|
|
principal email address is redacted for all read-only operations that fail
|
|
with a "permission denied" error.
|
|
* @property {object} thirdPartyPrincipal The third party identification (if any) of the authenticated user making
|
|
the request.
|
|
When the JSON object represented here has a proto equivalent, the proto
|
|
name will be indicated in the `@type` property.
|
|
*/
|
|
|
|
/**
|
|
* @typedef AuthorizationInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {boolean} granted Whether or not authorization for `resource` and `permission`
|
|
was granted.
|
|
* @property {string} permission The required IAM permission.
|
|
* @property {string} resource The resource being accessed, as a REST-style string. For example:
|
|
|
|
bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID
|
|
*/
|
|
|
|
/**
|
|
* @typedef CheckError
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} code The error code.
|
|
* @property {string} detail Free-form text providing details on the error cause of the error.
|
|
*/
|
|
|
|
/**
|
|
* @typedef CheckInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).ConsumerInfo} consumerInfo Consumer info of this check.
|
|
* @property {string[]} unusedArguments A list of fields and label keys that are ignored by the server.
|
|
The client doesn't need to send them for following requests to improve
|
|
performance and allow better aggregation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef CheckRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).Operation} operation The operation to be checked.
|
|
* @property {boolean} requestProjectSettings Requests the project settings to be returned as part of the check response.
|
|
* @property {string} serviceConfigId Specifies which version of service configuration should be used to process
|
|
the request.
|
|
|
|
If unspecified or no matching version can be found, the
|
|
latest one will be used.
|
|
* @property {boolean} skipActivationCheck Indicates if service activation check should be skipped for this request.
|
|
Default behavior is to perform the check and apply relevant quota.
|
|
*/
|
|
|
|
/**
|
|
* @typedef CheckResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).CheckError[]} checkErrors Indicate the decision of the check.
|
|
|
|
If no check errors are present, the service should process the operation.
|
|
Otherwise the service should use the list of errors to determine the
|
|
appropriate action.
|
|
* @property {servicecontrol(v1).CheckInfo} checkInfo Feedback data returned from the server during processing a Check request.
|
|
* @property {string} operationId The same operation_id value used in the CheckRequest.
|
|
Used for logging and diagnostics purposes.
|
|
* @property {servicecontrol(v1).QuotaInfo} quotaInfo Quota information for the check request associated with this response.
|
|
|
|
* @property {string} serviceConfigId The actual config id used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ConsumerInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} projectNumber The Google cloud project number, e.g. 1234567890. A value of 0 indicates
|
|
no project number is found.
|
|
*/
|
|
|
|
/**
|
|
* @typedef Distribution
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string[]} bucketCounts The number of samples in each histogram bucket. `bucket_counts` are
|
|
optional. If present, they must sum to the `count` value.
|
|
|
|
The buckets are defined below in `bucket_option`. There are N buckets.
|
|
`bucket_counts[0]` is the number of samples in the underflow bucket.
|
|
`bucket_counts[1]` to `bucket_counts[N-1]` are the numbers of samples
|
|
in each of the finite buckets. And `bucket_counts[N] is the number
|
|
of samples in the overflow bucket. See the comments of `bucket_option`
|
|
below for more details.
|
|
|
|
Any suffix of trailing zeros may be omitted.
|
|
* @property {string} count The total number of samples in the distribution. Must be >= 0.
|
|
* @property {servicecontrol(v1).ExplicitBuckets} explicitBuckets Buckets with arbitrary user-provided width.
|
|
* @property {servicecontrol(v1).ExponentialBuckets} exponentialBuckets Buckets with exponentially growing width.
|
|
* @property {servicecontrol(v1).LinearBuckets} linearBuckets Buckets with constant width.
|
|
* @property {number} maximum The maximum of the population of values. Ignored if `count` is zero.
|
|
* @property {number} mean The arithmetic mean of the samples in the distribution. If `count` is
|
|
zero then this field must be zero.
|
|
* @property {number} minimum The minimum of the population of values. Ignored if `count` is zero.
|
|
* @property {number} sumOfSquaredDeviation The sum of squared deviations from the mean:
|
|
Sum[i=1..count]((x_i - mean)^2)
|
|
where each x_i is a sample values. If `count` is zero then this field
|
|
must be zero, otherwise validation of the request fails.
|
|
*/
|
|
|
|
/**
|
|
* @typedef EndReconciliationRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).QuotaOperation} reconciliationOperation Operation that describes the quota reconciliation.
|
|
* @property {string} serviceConfigId Specifies which version of service configuration should be used to process
|
|
the request. If unspecified or no matching version can be found, the latest
|
|
one will be used.
|
|
*/
|
|
|
|
/**
|
|
* @typedef EndReconciliationResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} operationId The same operation_id value used in the EndReconciliationRequest. Used for
|
|
logging and diagnostics purposes.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Metric values as tracked by One Platform before the adjustment was made.
|
|
The following metrics will be included:
|
|
|
|
1. Per quota metric total usage will be specified using the following gauge
|
|
metric:
|
|
"serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
|
|
|
|
2. Value for each quota limit associated with the metrics will be specified
|
|
using the following gauge metric:
|
|
"serviceruntime.googleapis.com/quota/limit"
|
|
|
|
3. Delta value of the usage after the reconciliation for limits associated
|
|
with the metrics will be specified using the following metric:
|
|
"serviceruntime.googleapis.com/allocation/reconciliation_delta"
|
|
The delta value is defined as:
|
|
new_usage_from_client - existing_value_in_spanner.
|
|
This metric is not defined in serviceruntime.yaml or in Cloud Monarch.
|
|
This metric is meant for callers' use only. Since this metric is not
|
|
defined in the monitoring backend, reporting on this metric will result in
|
|
an error.
|
|
* @property {servicecontrol(v1).QuotaError[]} reconciliationErrors Indicates the decision of the reconciliation end.
|
|
* @property {string} serviceConfigId ID of the actual config used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ExplicitBuckets
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {number[]} bounds 'bound' is a list of strictly increasing boundaries between
|
|
buckets. Note that a list of length N-1 defines N buckets because
|
|
of fenceposting. See comments on `bucket_options` for details.
|
|
|
|
The i'th finite bucket covers the interval
|
|
[bound[i-1], bound[i])
|
|
where i ranges from 1 to bound_size() - 1. Note that there are no
|
|
finite buckets at all if 'bound' only contains a single element; in
|
|
that special case the single bound defines the boundary between the
|
|
underflow and overflow buckets.
|
|
|
|
bucket number lower bound upper bound
|
|
i == 0 (underflow) -inf bound[i]
|
|
0 < i < bound_size() bound[i-1] bound[i]
|
|
i == bound_size() (overflow) bound[i-1] +inf
|
|
*/
|
|
|
|
/**
|
|
* @typedef ExponentialBuckets
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {number} growthFactor The i'th exponential bucket covers the interval
|
|
[scale * growth_factor^(i-1), scale * growth_factor^i)
|
|
where i ranges from 1 to num_finite_buckets inclusive.
|
|
Must be larger than 1.0.
|
|
* @property {integer} numFiniteBuckets The number of finite buckets. With the underflow and overflow buckets,
|
|
the total number of buckets is `num_finite_buckets` + 2.
|
|
See comments on `bucket_options` for details.
|
|
* @property {number} scale The i'th exponential bucket covers the interval
|
|
[scale * growth_factor^(i-1), scale * growth_factor^i)
|
|
where i ranges from 1 to num_finite_buckets inclusive.
|
|
Must be > 0.
|
|
*/
|
|
|
|
/**
|
|
* @typedef LinearBuckets
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {integer} numFiniteBuckets The number of finite buckets. With the underflow and overflow buckets,
|
|
the total number of buckets is `num_finite_buckets` + 2.
|
|
See comments on `bucket_options` for details.
|
|
* @property {number} offset The i'th linear bucket covers the interval
|
|
[offset + (i-1) * width, offset + i * width)
|
|
where i ranges from 1 to num_finite_buckets, inclusive.
|
|
* @property {number} width The i'th linear bucket covers the interval
|
|
[offset + (i-1) * width, offset + i * width)
|
|
where i ranges from 1 to num_finite_buckets, inclusive.
|
|
Must be strictly positive.
|
|
*/
|
|
|
|
/**
|
|
* @typedef LogEntry
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} insertId A unique ID for the log entry used for deduplication. If omitted,
|
|
the implementation will generate one based on operation_id.
|
|
* @property {object} labels A set of user-defined (key, value) data that provides additional
|
|
information about the log entry.
|
|
* @property {string} name Required. The log to which this log entry belongs. Examples: `"syslog"`,
|
|
`"book_log"`.
|
|
* @property {object} protoPayload The log entry payload, represented as a protocol buffer that is
|
|
expressed as a JSON object. The only accepted type currently is
|
|
AuditLog.
|
|
* @property {string} severity The severity of the log entry. The default value is
|
|
`LogSeverity.DEFAULT`.
|
|
* @property {object} structPayload The log entry payload, represented as a structure that
|
|
is expressed as a JSON object.
|
|
* @property {string} textPayload The log entry payload, represented as a Unicode string (UTF-8).
|
|
* @property {string} timestamp The time the event described by the log entry occurred. If
|
|
omitted, defaults to operation start time.
|
|
*/
|
|
|
|
/**
|
|
* @typedef MetricValue
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {boolean} boolValue A boolean value.
|
|
* @property {servicecontrol(v1).Distribution} distributionValue A distribution value.
|
|
* @property {number} doubleValue A double precision floating point value.
|
|
* @property {string} endTime The end of the time period over which this metric value's measurement
|
|
applies.
|
|
* @property {string} int64Value A signed 64-bit integer value.
|
|
* @property {object} labels The labels describing the metric value.
|
|
See comments on google.api.servicecontrol.v1.Operation.labels for
|
|
the overriding relationship.
|
|
* @property {servicecontrol(v1).Money} moneyValue A money value.
|
|
* @property {string} startTime The start of the time period over which this metric value's measurement
|
|
applies. The time period has different semantics for different metric
|
|
types (cumulative, delta, and gauge). See the metric definition
|
|
documentation in the service configuration for details.
|
|
* @property {string} stringValue A text string value.
|
|
*/
|
|
|
|
/**
|
|
* @typedef MetricValueSet
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} metricName The metric name defined in the service configuration.
|
|
* @property {servicecontrol(v1).MetricValue[]} metricValues The values in this metric.
|
|
*/
|
|
|
|
/**
|
|
* @typedef Money
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} currencyCode The 3-letter currency code defined in ISO 4217.
|
|
* @property {integer} nanos Number of nano (10^-9) units of the amount.
|
|
The value must be between -999,999,999 and +999,999,999 inclusive.
|
|
If `units` is positive, `nanos` must be positive or zero.
|
|
If `units` is zero, `nanos` can be positive, zero, or negative.
|
|
If `units` is negative, `nanos` must be negative or zero.
|
|
For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
|
|
* @property {string} units The whole units of the amount.
|
|
For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
|
|
*/
|
|
|
|
/**
|
|
* @typedef Operation
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} consumerId Identity of the consumer who is using the service.
|
|
This field should be filled in for the operations initiated by a
|
|
consumer, but not for service-initiated operations that are
|
|
not related to a specific consumer.
|
|
|
|
This can be in one of the following formats:
|
|
project:<project_id>,
|
|
project_number:<project_number>,
|
|
api_key:<api_key>.
|
|
* @property {string} endTime End time of the operation.
|
|
Required when the operation is used in ServiceController.Report,
|
|
but optional when the operation is used in ServiceController.Check.
|
|
* @property {string} importance DO NOT USE. This is an experimental field.
|
|
* @property {object} labels Labels describing the operation. Only the following labels are allowed:
|
|
|
|
- Labels describing monitored resources as defined in
|
|
the service configuration.
|
|
- Default labels of metric values. When specified, labels defined in the
|
|
metric value override these default.
|
|
- The following labels defined by Google Cloud Platform:
|
|
- `cloud.googleapis.com/location` describing the location where the
|
|
operation happened,
|
|
- `servicecontrol.googleapis.com/user_agent` describing the user agent
|
|
of the API request,
|
|
- `servicecontrol.googleapis.com/service_agent` describing the service
|
|
used to handle the API request (e.g. ESP),
|
|
- `servicecontrol.googleapis.com/platform` describing the platform
|
|
where the API is served (e.g. GAE, GCE, GKE).
|
|
* @property {servicecontrol(v1).LogEntry[]} logEntries Represents information to be logged.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} metricValueSets Represents information about this operation. Each MetricValueSet
|
|
corresponds to a metric defined in the service configuration.
|
|
The data type used in the MetricValueSet must agree with
|
|
the data type specified in the metric definition.
|
|
|
|
Within a single operation, it is not allowed to have more than one
|
|
MetricValue instances that have the same metric names and identical
|
|
label value combinations. If a request has such duplicated MetricValue
|
|
instances, the entire request is rejected with
|
|
an invalid argument error.
|
|
* @property {string} operationId Identity of the operation. This must be unique within the scope of the
|
|
service that generated the operation. If the service calls
|
|
Check() and Report() on the same operation, the two calls should carry
|
|
the same id.
|
|
|
|
UUID version 4 is recommended, though not required.
|
|
In scenarios where an operation is computed from existing information
|
|
and an idempotent id is desirable for deduplication purpose, UUID version 5
|
|
is recommended. See RFC 4122 for details.
|
|
* @property {string} operationName Fully qualified name of the operation. Reserved for future use.
|
|
* @property {servicecontrol(v1).QuotaProperties} quotaProperties Represents the properties needed for quota check. Applicable only if this
|
|
operation is for a quota check request.
|
|
* @property {string} resourceContainer The resource name of the parent of a resource in the resource hierarchy.
|
|
|
|
This can be in one of the following formats:
|
|
- “projects/<project-id or project-number>”
|
|
- “folders/<folder-id>”
|
|
- “organizations/<organization-id>”
|
|
* @property {servicecontrol(v1).ResourceInfo[]} resources The resources that are involved in the operation.
|
|
* @property {string} startTime Required. Start time of the operation.
|
|
* @property {object} userLabels User defined labels for the resource that this operation is associated
|
|
with. Only a combination of 1000 user labels per consumer project are
|
|
allowed.
|
|
*/
|
|
|
|
/**
|
|
* @typedef QuotaError
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} code Error code.
|
|
* @property {string} description Free-form text that provides details on the cause of the error.
|
|
* @property {string} subject Subject to whom this error applies. See the specific enum for more details
|
|
on this field. For example, "clientip:<ip address of client>" or
|
|
"project:<Google developer project id>".
|
|
*/
|
|
|
|
/**
|
|
* @typedef QuotaInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string[]} limitExceeded Quota Metrics that have exceeded quota limits.
|
|
For QuotaGroup-based quota, this is QuotaGroup.name
|
|
For QuotaLimit-based quota, this is QuotaLimit.name
|
|
See: google.api.Quota
|
|
Deprecated: Use quota_metrics to get per quota group limit exceeded status.
|
|
* @property {object} quotaConsumed Map of quota group name to the actual number of tokens consumed. If the
|
|
quota check was not successful, then this will not be populated due to no
|
|
quota consumption.
|
|
|
|
We are not merging this field with 'quota_metrics' field because of the
|
|
complexity of scaling in Chemist client code base. For simplicity, we will
|
|
keep this field for Castor (that scales quota usage) and 'quota_metrics'
|
|
for SuperQuota (that doesn't scale quota usage).
|
|
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Quota metrics to indicate the usage. Depending on the check request, one or
|
|
more of the following metrics will be included:
|
|
|
|
1. For rate quota, per quota group or per quota metric incremental usage
|
|
will be specified using the following delta metric:
|
|
"serviceruntime.googleapis.com/api/consumer/quota_used_count"
|
|
|
|
2. For allocation quota, per quota metric total usage will be specified
|
|
using the following gauge metric:
|
|
"serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
|
|
|
|
3. For both rate quota and allocation quota, the quota limit reached
|
|
condition will be specified using the following boolean metric:
|
|
"serviceruntime.googleapis.com/quota/exceeded"
|
|
*/
|
|
|
|
/**
|
|
* @typedef QuotaOperation
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} consumerId Identity of the consumer for whom this quota operation is being performed.
|
|
|
|
This can be in one of the following formats:
|
|
project:<project_id>,
|
|
project_number:<project_number>,
|
|
api_key:<api_key>.
|
|
* @property {object} labels Labels describing the operation.
|
|
* @property {string} methodName Fully qualified name of the API method for which this quota operation is
|
|
requested. This name is used for matching quota rules or metric rules and
|
|
billing status rules defined in service configuration. This field is not
|
|
required if the quota operation is performed on non-API resources.
|
|
|
|
Example of an RPC method name:
|
|
google.example.library.v1.LibraryService.CreateShelf
|
|
* @property {string} operationId Identity of the operation. This is expected to be unique within the scope
|
|
of the service that generated the operation, and guarantees idempotency in
|
|
case of retries.
|
|
|
|
UUID version 4 is recommended, though not required. In scenarios where an
|
|
operation is computed from existing information and an idempotent id is
|
|
desirable for deduplication purpose, UUID version 5 is recommended. See
|
|
RFC 4122 for details.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Represents information about this operation. Each MetricValueSet
|
|
corresponds to a metric defined in the service configuration.
|
|
The data type used in the MetricValueSet must agree with
|
|
the data type specified in the metric definition.
|
|
|
|
Within a single operation, it is not allowed to have more than one
|
|
MetricValue instances that have the same metric names and identical
|
|
label value combinations. If a request has such duplicated MetricValue
|
|
instances, the entire request is rejected with
|
|
an invalid argument error.
|
|
* @property {string} quotaMode Quota mode for this operation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef QuotaProperties
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {object} limitByIds LimitType IDs that should be used for checking quota. Key in this map
|
|
should be a valid LimitType string, and the value is the ID to be used. For
|
|
example, an entry <USER, 123> will cause all user quota limits to use 123
|
|
as the user ID. See google/api/quota.proto for the definition of LimitType.
|
|
CLIENT_PROJECT: Not supported.
|
|
USER: Value of this entry will be used for enforcing user-level quota
|
|
limits. If none specified, caller IP passed in the
|
|
servicecontrol.googleapis.com/caller_ip label will be used instead.
|
|
If the server cannot resolve a value for this LimitType, an error
|
|
will be thrown. No validation will be performed on this ID.
|
|
Deprecated: use servicecontrol.googleapis.com/user label to send user ID.
|
|
* @property {string} quotaMode Quota mode for this operation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReleaseQuotaRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).QuotaOperation} releaseOperation Operation that describes the quota release.
|
|
* @property {string} serviceConfigId Specifies which version of service configuration should be used to process
|
|
the request. If unspecified or no matching version can be found, the latest
|
|
one will be used.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReleaseQuotaResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} operationId The same operation_id value used in the ReleaseQuotaRequest. Used for
|
|
logging and diagnostics purposes.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Quota metrics to indicate the result of release. Depending on the
|
|
request, one or more of the following metrics will be included:
|
|
|
|
1. For rate quota, per quota group or per quota metric released amount
|
|
will be specified using the following delta metric:
|
|
"serviceruntime.googleapis.com/api/consumer/quota_refund_count"
|
|
|
|
2. For allocation quota, per quota metric total usage will be specified
|
|
using the following gauge metric:
|
|
"serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
|
|
|
|
3. For allocation quota, value for each quota limit associated with
|
|
the metrics will be specified using the following gauge metric:
|
|
"serviceruntime.googleapis.com/quota/limit"
|
|
* @property {servicecontrol(v1).QuotaError[]} releaseErrors Indicates the decision of the release.
|
|
* @property {string} serviceConfigId ID of the actual config used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReportError
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} operationId The Operation.operation_id value from the request.
|
|
* @property {servicecontrol(v1).Status} status Details of the error when processing the Operation.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReportInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} operationId The Operation.operation_id value from the request.
|
|
* @property {servicecontrol(v1).QuotaInfo} quotaInfo Quota usage info when processing the `Operation`.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReportRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).Operation[]} operations Operations to be reported.
|
|
|
|
Typically the service should report one operation per request.
|
|
Putting multiple operations into a single request is allowed, but should
|
|
be used only when multiple operations are natually available at the time
|
|
of the report.
|
|
|
|
If multiple operations are in a single request, the total request size
|
|
should be no larger than 1MB. See ReportResponse.report_errors for
|
|
partial failure behavior.
|
|
* @property {string} serviceConfigId Specifies which version of service config should be used to process the
|
|
request.
|
|
|
|
If unspecified or no matching version can be found, the
|
|
latest one will be used.
|
|
*/
|
|
|
|
/**
|
|
* @typedef ReportResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).ReportError[]} reportErrors Partial failures, one for each `Operation` in the request that failed
|
|
processing. There are three possible combinations of the RPC status:
|
|
|
|
1. The combination of a successful RPC status and an empty `report_errors`
|
|
list indicates a complete success where all `Operations` in the
|
|
request are processed successfully.
|
|
2. The combination of a successful RPC status and a non-empty
|
|
`report_errors` list indicates a partial success where some
|
|
`Operations` in the request succeeded. Each
|
|
`Operation` that failed processing has a corresponding item
|
|
in this list.
|
|
3. A failed RPC status indicates a general non-deterministic failure.
|
|
When this happens, it's impossible to know which of the
|
|
'Operations' in the request succeeded or failed.
|
|
* @property {servicecontrol(v1).ReportInfo[]} reportInfos Quota usage for each quota release `Operation` request.
|
|
|
|
Fully or partially failed quota release request may or may not be present
|
|
in `report_quota_info`. For example, a failed quota release request will
|
|
have the current quota usage info when precise quota library returns the
|
|
info. A deadline exceeded quota request will not have quota usage info.
|
|
|
|
If there is no quota release request, report_quota_info will be empty.
|
|
|
|
* @property {string} serviceConfigId The actual config id used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef RequestMetadata
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} callerIp The IP address of the caller.
|
|
For caller from internet, this will be public IPv4 or IPv6 address.
|
|
For caller from GCE VM with external IP address, this will be the VM's
|
|
external IP address. For caller from GCE VM without external IP address, if
|
|
the VM is in the same GCP organization (or project) as the accessed
|
|
resource, `caller_ip` will be the GCE VM's internal IPv4 address, otherwise
|
|
it will be redacted to "gce-internal-ip".
|
|
See https://cloud.google.com/compute/docs/vpc/ for more information.
|
|
* @property {string} callerSuppliedUserAgent The user agent of the caller.
|
|
This information is not authenticated and should be treated accordingly.
|
|
For example:
|
|
|
|
+ `google-api-python-client/1.4.0`:
|
|
The request was made by the Google API client for Python.
|
|
+ `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:
|
|
The request was made by the Google Cloud SDK CLI (gcloud).
|
|
+ `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:
|
|
The request was made from the `my-project` App Engine app.
|
|
NOLINT
|
|
*/
|
|
|
|
/**
|
|
* @typedef ResourceInfo
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} resourceContainer The identifier of the parent of this resource instance.
|
|
Must be in one of the following formats:
|
|
- “projects/<project-id or project-number>”
|
|
- “folders/<folder-id>”
|
|
- “organizations/<organization-id>”
|
|
* @property {string} resourceName Name of the resource. This is used for auditing purposes.
|
|
*/
|
|
|
|
/**
|
|
* @typedef StartReconciliationRequest
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {servicecontrol(v1).QuotaOperation} reconciliationOperation Operation that describes the quota reconciliation.
|
|
* @property {string} serviceConfigId Specifies which version of service configuration should be used to process
|
|
the request. If unspecified or no matching version can be found, the latest
|
|
one will be used.
|
|
*/
|
|
|
|
/**
|
|
* @typedef StartReconciliationResponse
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {string} operationId The same operation_id value used in the StartReconciliationRequest. Used
|
|
for logging and diagnostics purposes.
|
|
* @property {servicecontrol(v1).MetricValueSet[]} quotaMetrics Metric values as tracked by One Platform before the start of
|
|
reconciliation. The following metrics will be included:
|
|
|
|
1. Per quota metric total usage will be specified using the following gauge
|
|
metric:
|
|
"serviceruntime.googleapis.com/allocation/consumer/quota_used_count"
|
|
|
|
2. Value for each quota limit associated with the metrics will be specified
|
|
using the following gauge metric:
|
|
"serviceruntime.googleapis.com/quota/limit"
|
|
* @property {servicecontrol(v1).QuotaError[]} reconciliationErrors Indicates the decision of the reconciliation start.
|
|
* @property {string} serviceConfigId ID of the actual config used to process the request.
|
|
*/
|
|
|
|
/**
|
|
* @typedef Status
|
|
* @memberOf! servicecontrol(v1)
|
|
* @type object
|
|
* @property {integer} code The status code, which should be an enum value of google.rpc.Code.
|
|
* @property {object[]} details A list of messages that carry the error details. There is a common set of
|
|
message types for APIs to use.
|
|
* @property {string} message A developer-facing error message, which should be in English. Any
|
|
user-facing error message should be localized and sent in the
|
|
google.rpc.Status.details field, or localized by the client.
|
|
*/
|
|
export = Servicecontrol;
|