Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Unified Diff: generated/googleapis/lib/servicecontrol/v1.dart

Issue 2695743002: Api-roll 45: 2017-02-13 (Closed)
Patch Set: reverted local changes to pubspec file Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « generated/googleapis/lib/searchconsole/v1.dart ('k') | generated/googleapis/lib/servicemanagement/v1.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: generated/googleapis/lib/servicecontrol/v1.dart
diff --git a/generated/googleapis/lib/servicecontrol/v1.dart b/generated/googleapis/lib/servicecontrol/v1.dart
index 9b0afb25effc4929425863d6e3e81be084c96cdf..38fced2cb59fec07ac602021c2a9d4f9d2e1a1d9 100644
--- a/generated/googleapis/lib/servicecontrol/v1.dart
+++ b/generated/googleapis/lib/servicecontrol/v1.dart
@@ -42,6 +42,59 @@ class ServicesResourceApi {
_requester = client;
/**
+ * 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
+ * [Google Cloud IAM](https://cloud.google.com/iam).
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [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.
+ *
+ * Completes with a [AllocateQuotaResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<AllocateQuotaResponse> allocateQuota(AllocateQuotaRequest request, core.String serviceName) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (serviceName == null) {
+ throw new core.ArgumentError("Parameter serviceName is required.");
+ }
+
+ _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName') + ':allocateQuota';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new AllocateQuotaResponse.fromJson(data));
+ }
+
+ /**
* Checks an operation with Google Service Control to decide whether
* the given operation should proceed. It should be called before the
* operation is executed.
@@ -102,6 +155,111 @@ class ServicesResourceApi {
}
/**
+ * 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).
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [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.
+ *
+ * Completes with a [EndReconciliationResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<EndReconciliationResponse> endReconciliation(EndReconciliationRequest request, core.String serviceName) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (serviceName == null) {
+ throw new core.ArgumentError("Parameter serviceName is required.");
+ }
+
+ _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName') + ':endReconciliation';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new EndReconciliationResponse.fromJson(data));
+ }
+
+ /**
+ * Releases previously allocated quota done through AllocateQuota method.
+ *
+ * This method requires the `servicemanagement.services.quota`
+ * permission on the specified service. For more information, see
+ * [Google Cloud IAM](https://cloud.google.com/iam).
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [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.
+ *
+ * Completes with a [ReleaseQuotaResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<ReleaseQuotaResponse> releaseQuota(ReleaseQuotaRequest request, core.String serviceName) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (serviceName == null) {
+ throw new core.ArgumentError("Parameter serviceName is required.");
+ }
+
+ _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName') + ':releaseQuota';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new ReleaseQuotaResponse.fromJson(data));
+ }
+
+ /**
* Reports operation results to Google Service Control, such as logs and
* metrics. It should be called after an operation is completed.
*
@@ -162,9 +320,435 @@ class ServicesResourceApi {
return _response.then((data) => new ReportResponse.fromJson(data));
}
+ /**
+ * 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).
+ *
+ * [request] - The metadata request object.
+ *
+ * Request parameters:
+ *
+ * [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.
+ *
+ * Completes with a [StartReconciliationResponse].
+ *
+ * Completes with a [commons.ApiRequestError] if the API endpoint returned an
+ * error.
+ *
+ * If the used [http.Client] completes with an error when making a REST call,
+ * this method will complete with the same error.
+ */
+ async.Future<StartReconciliationResponse> startReconciliation(StartReconciliationRequest request, core.String serviceName) {
+ var _url = null;
+ var _queryParams = new core.Map();
+ var _uploadMedia = null;
+ var _uploadOptions = null;
+ var _downloadOptions = commons.DownloadOptions.Metadata;
+ var _body = null;
+
+ if (request != null) {
+ _body = convert.JSON.encode((request).toJson());
+ }
+ if (serviceName == null) {
+ throw new core.ArgumentError("Parameter serviceName is required.");
+ }
+
+ _url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName') + ':startReconciliation';
+
+ var _response = _requester.request(_url,
+ "POST",
+ body: _body,
+ queryParams: _queryParams,
+ uploadOptions: _uploadOptions,
+ uploadMedia: _uploadMedia,
+ downloadOptions: _downloadOptions);
+ return _response.then((data) => new StartReconciliationResponse.fromJson(data));
+ }
+
+}
+
+
+
+/** Request message for the AllocateQuota method. */
+class AllocateQuotaRequest {
+ /** Operation that describes the quota allocation. */
+ QuotaOperation allocateOperation;
+ /**
+ * Allocation mode for this operation.
+ * Deprecated: use QuotaMode inside the QuotaOperation.
+ * Possible string values are:
+ * - "UNSPECIFIED"
+ * - "NORMAL" : Allocates quota for the amount specified in the service
+ * configuration or
+ * specified using the quota_metrics. If the amount is higher than the
+ * available quota, allocation error will be returned and no quota will be
+ * allocated.
+ * - "BEST_EFFORT" : Allocates quota for the amount specified in the service
+ * configuration or
+ * specified using the quota_metrics. If the amount is higher than the
+ * available quota, request does not fail but all available quota will be
+ * allocated.
+ * - "CHECK_ONLY" : Only checks if there is enough quota available and does
+ * not change the
+ * available quota. No lock is placed on the available quota either.
+ */
+ core.String allocationMode;
+ /**
+ * 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.
+ */
+ core.String serviceConfigId;
+
+ AllocateQuotaRequest();
+
+ AllocateQuotaRequest.fromJson(core.Map _json) {
+ if (_json.containsKey("allocateOperation")) {
+ allocateOperation = new QuotaOperation.fromJson(_json["allocateOperation"]);
+ }
+ if (_json.containsKey("allocationMode")) {
+ allocationMode = _json["allocationMode"];
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (allocateOperation != null) {
+ _json["allocateOperation"] = (allocateOperation).toJson();
+ }
+ if (allocationMode != null) {
+ _json["allocationMode"] = allocationMode;
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
+}
+
+/** Response message for the AllocateQuota method. */
+class AllocateQuotaResponse {
+ /** Indicates the decision of the allocate. */
+ core.List<QuotaError> allocateErrors;
+ /**
+ * The same operation_id value used in the AllocateQuotaRequest. Used for
+ * logging and diagnostics purposes.
+ */
+ core.String operationId;
+ /**
+ * 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"
+ */
+ core.List<MetricValueSet> quotaMetrics;
+ /** ID of the actual config used to process the request. */
+ core.String serviceConfigId;
+
+ AllocateQuotaResponse();
+
+ AllocateQuotaResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("allocateErrors")) {
+ allocateErrors = _json["allocateErrors"].map((value) => new QuotaError.fromJson(value)).toList();
+ }
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (allocateErrors != null) {
+ _json["allocateErrors"] = allocateErrors.map((value) => (value).toJson()).toList();
+ }
+ if (operationId != null) {
+ _json["operationId"] = operationId;
+ }
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
}
+/** Common audit log format for Google Cloud Platform API operations. */
+class AuditLog {
+ /** Authentication information. */
+ AuthenticationInfo authenticationInfo;
+ /**
+ * Authorization information. If there are multiple
+ * resources or permissions involved, then there is
+ * one AuthorizationInfo element for each {resource, permission} tuple.
+ */
+ core.List<AuthorizationInfo> authorizationInfo;
+ /**
+ * 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"
+ */
+ core.String methodName;
+ /**
+ * The number of items returned from a List or Query API method,
+ * if applicable.
+ */
+ core.String numResponseItems;
+ /**
+ * 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.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> request;
+ /** Metadata about the operation. */
+ RequestMetadata requestMetadata;
+ /**
+ * 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"
+ */
+ core.String resourceName;
+ /**
+ * 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.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> response;
+ /**
+ * Other service-specific data about the request, response, and other
+ * activities.
+ *
+ * The values for Object must be JSON objects. It can consist of `num`,
+ * `String`, `bool` and `null` as well as `Map` and `List` values.
+ */
+ core.Map<core.String, core.Object> serviceData;
+ /**
+ * The name of the API service performing the operation. For example,
+ * `"datastore.googleapis.com"`.
+ */
+ core.String serviceName;
+ /** The status of the overall operation. */
+ Status status;
+
+ AuditLog();
+
+ AuditLog.fromJson(core.Map _json) {
+ if (_json.containsKey("authenticationInfo")) {
+ authenticationInfo = new AuthenticationInfo.fromJson(_json["authenticationInfo"]);
+ }
+ if (_json.containsKey("authorizationInfo")) {
+ authorizationInfo = _json["authorizationInfo"].map((value) => new AuthorizationInfo.fromJson(value)).toList();
+ }
+ if (_json.containsKey("methodName")) {
+ methodName = _json["methodName"];
+ }
+ if (_json.containsKey("numResponseItems")) {
+ numResponseItems = _json["numResponseItems"];
+ }
+ if (_json.containsKey("request")) {
+ request = _json["request"];
+ }
+ if (_json.containsKey("requestMetadata")) {
+ requestMetadata = new RequestMetadata.fromJson(_json["requestMetadata"]);
+ }
+ if (_json.containsKey("resourceName")) {
+ resourceName = _json["resourceName"];
+ }
+ if (_json.containsKey("response")) {
+ response = _json["response"];
+ }
+ if (_json.containsKey("serviceData")) {
+ serviceData = _json["serviceData"];
+ }
+ if (_json.containsKey("serviceName")) {
+ serviceName = _json["serviceName"];
+ }
+ if (_json.containsKey("status")) {
+ status = new Status.fromJson(_json["status"]);
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (authenticationInfo != null) {
+ _json["authenticationInfo"] = (authenticationInfo).toJson();
+ }
+ if (authorizationInfo != null) {
+ _json["authorizationInfo"] = authorizationInfo.map((value) => (value).toJson()).toList();
+ }
+ if (methodName != null) {
+ _json["methodName"] = methodName;
+ }
+ if (numResponseItems != null) {
+ _json["numResponseItems"] = numResponseItems;
+ }
+ if (request != null) {
+ _json["request"] = request;
+ }
+ if (requestMetadata != null) {
+ _json["requestMetadata"] = (requestMetadata).toJson();
+ }
+ if (resourceName != null) {
+ _json["resourceName"] = resourceName;
+ }
+ if (response != null) {
+ _json["response"] = response;
+ }
+ if (serviceData != null) {
+ _json["serviceData"] = serviceData;
+ }
+ if (serviceName != null) {
+ _json["serviceName"] = serviceName;
+ }
+ if (status != null) {
+ _json["status"] = (status).toJson();
+ }
+ return _json;
+ }
+}
+
+/** Authentication information for the operation. */
+class AuthenticationInfo {
+ /**
+ * The authority selector specified by the requestor, if any.
+ * It is not guaranteed that the principal was allowed to use this authority.
+ */
+ core.String authoritySelector;
+ /** The email address of the authenticated user making the request. */
+ core.String principalEmail;
+
+ AuthenticationInfo();
+
+ AuthenticationInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("authoritySelector")) {
+ authoritySelector = _json["authoritySelector"];
+ }
+ if (_json.containsKey("principalEmail")) {
+ principalEmail = _json["principalEmail"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (authoritySelector != null) {
+ _json["authoritySelector"] = authoritySelector;
+ }
+ if (principalEmail != null) {
+ _json["principalEmail"] = principalEmail;
+ }
+ return _json;
+ }
+}
+
+/** Authorization information for the operation. */
+class AuthorizationInfo {
+ /**
+ * Whether or not authorization for `resource` and `permission`
+ * was granted.
+ */
+ core.bool granted;
+ /** The required IAM permission. */
+ core.String permission;
+ /**
+ * The resource being accessed, as a REST-style string. For example:
+ *
+ * bigquery.googlapis.com/projects/PROJECTID/datasets/DATASETID
+ */
+ core.String resource;
+
+ AuthorizationInfo();
+
+ AuthorizationInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("granted")) {
+ granted = _json["granted"];
+ }
+ if (_json.containsKey("permission")) {
+ permission = _json["permission"];
+ }
+ if (_json.containsKey("resource")) {
+ resource = _json["resource"];
+ }
+ }
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (granted != null) {
+ _json["granted"] = granted;
+ }
+ if (permission != null) {
+ _json["permission"] = permission;
+ }
+ if (resource != null) {
+ _json["resource"] = resource;
+ }
+ return _json;
+ }
+}
/**
* Defines the errors to be returned in
@@ -182,7 +766,16 @@ class CheckError {
* Same as google.rpc.Code.PERMISSION_DENIED.
* - "RESOURCE_EXHAUSTED" : Quota check failed. Same as
* google.rpc.Code.RESOURCE_EXHAUSTED.
+ * - "BUDGET_EXCEEDED" : Budget check failed.
+ * - "DENIAL_OF_SERVICE_DETECTED" : The consumer's request has been flagged as
+ * a DoS attack.
+ * - "LOAD_SHEDDING" : The consumer's request should be rejected in order to
+ * protect the service
+ * from being overloaded.
+ * - "ABUSER_DETECTED" : The consumer has been flagged as an abuser.
* - "SERVICE_NOT_ACTIVATED" : The consumer hasn't activated the service.
+ * - "VISIBILITY_DENIED" : The consumer cannot access the service due to
+ * visibility configuration.
* - "BILLING_DISABLED" : The consumer cannot access the service because
* billing is disabled.
* - "PROJECT_DELETED" : The consumer's project has been marked as deleted
@@ -205,12 +798,27 @@ class CheckError {
* - "API_KEY_EXPIRED" : The consumer's API Key has expired.
* - "API_KEY_NOT_FOUND" : The consumer's API Key was not found in config
* record.
+ * - "SPATULA_HEADER_INVALID" : The consumer's spatula header is invalid.
+ * - "LOAS_ROLE_INVALID" : The consumer's LOAS role is invalid.
+ * - "NO_LOAS_PROJECT" : The consumer's LOAS role has no associated project.
+ * - "LOAS_PROJECT_DISABLED" : The consumer's LOAS project is not `ACTIVE` in
+ * LoquatV2.
+ * - "SECURITY_POLICY_VIOLATED" : Request is not allowed as per security
+ * policies defined in Org Policy.
* - "NAMESPACE_LOOKUP_UNAVAILABLE" : The backend server for looking up
* project id/number is unavailable.
* - "SERVICE_STATUS_UNAVAILABLE" : The backend server for checking service
* status is unavailable.
* - "BILLING_STATUS_UNAVAILABLE" : The backend server for checking billing
* status is unavailable.
+ * - "QUOTA_CHECK_UNAVAILABLE" : The backend server for checking quota limits
+ * is unavailable.
+ * - "LOAS_PROJECT_LOOKUP_UNAVAILABLE" : The Spanner for looking up LOAS
+ * project is unavailable.
+ * - "CLOUD_RESOURCE_MANAGER_BACKEND_UNAVAILABLE" : Cloud Resource Manager
+ * backend server is unavailable.
+ * - "SECURITY_POLICY_BACKEND_UNAVAILABLE" : Backend server for evaluating
+ * security policy is unavailable.
*/
core.String code;
/** Free-form text providing details on the error cause of the error. */
@@ -239,11 +847,40 @@ class CheckError {
}
}
+class CheckInfo {
+ /**
+ * 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.
+ */
+ core.List<core.String> unusedArguments;
+
+ CheckInfo();
+
+ CheckInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("unusedArguments")) {
+ unusedArguments = _json["unusedArguments"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (unusedArguments != null) {
+ _json["unusedArguments"] = unusedArguments;
+ }
+ return _json;
+ }
+}
+
/** Request message for the Check method. */
class CheckRequest {
/** The operation to be checked. */
Operation operation;
/**
+ * Requests the project settings to be returned as part of the check response.
+ */
+ core.bool requestProjectSettings;
+ /**
* Specifies which version of service configuration should be used to process
* the request.
*
@@ -251,6 +888,11 @@ class CheckRequest {
* latest one will be used.
*/
core.String serviceConfigId;
+ /**
+ * Indicates if service activation check should be skipped for this request.
+ * Default behavior is to perform the check and apply relevant quota.
+ */
+ core.bool skipActivationCheck;
CheckRequest();
@@ -258,9 +900,15 @@ class CheckRequest {
if (_json.containsKey("operation")) {
operation = new Operation.fromJson(_json["operation"]);
}
+ if (_json.containsKey("requestProjectSettings")) {
+ requestProjectSettings = _json["requestProjectSettings"];
+ }
if (_json.containsKey("serviceConfigId")) {
serviceConfigId = _json["serviceConfigId"];
}
+ if (_json.containsKey("skipActivationCheck")) {
+ skipActivationCheck = _json["skipActivationCheck"];
+ }
}
core.Map toJson() {
@@ -268,9 +916,15 @@ class CheckRequest {
if (operation != null) {
_json["operation"] = (operation).toJson();
}
+ if (requestProjectSettings != null) {
+ _json["requestProjectSettings"] = requestProjectSettings;
+ }
if (serviceConfigId != null) {
_json["serviceConfigId"] = serviceConfigId;
}
+ if (skipActivationCheck != null) {
+ _json["skipActivationCheck"] = skipActivationCheck;
+ }
return _json;
}
}
@@ -286,10 +940,16 @@ class CheckResponse {
*/
core.List<CheckError> checkErrors;
/**
+ * Feedback data returned from the server during processing a Check request.
+ */
+ CheckInfo checkInfo;
+ /**
* The same operation_id value used in the CheckRequest.
* Used for logging and diagnostics purposes.
*/
core.String operationId;
+ /** Quota information for the check request associated with this response. */
+ QuotaInfo quotaInfo;
/** The actual config id used to process the request. */
core.String serviceConfigId;
@@ -299,9 +959,15 @@ class CheckResponse {
if (_json.containsKey("checkErrors")) {
checkErrors = _json["checkErrors"].map((value) => new CheckError.fromJson(value)).toList();
}
+ if (_json.containsKey("checkInfo")) {
+ checkInfo = new CheckInfo.fromJson(_json["checkInfo"]);
+ }
if (_json.containsKey("operationId")) {
operationId = _json["operationId"];
}
+ if (_json.containsKey("quotaInfo")) {
+ quotaInfo = new QuotaInfo.fromJson(_json["quotaInfo"]);
+ }
if (_json.containsKey("serviceConfigId")) {
serviceConfigId = _json["serviceConfigId"];
}
@@ -312,9 +978,15 @@ class CheckResponse {
if (checkErrors != null) {
_json["checkErrors"] = checkErrors.map((value) => (value).toJson()).toList();
}
+ if (checkInfo != null) {
+ _json["checkInfo"] = (checkInfo).toJson();
+ }
if (operationId != null) {
_json["operationId"] = operationId;
}
+ if (quotaInfo != null) {
+ _json["quotaInfo"] = (quotaInfo).toJson();
+ }
if (serviceConfigId != null) {
_json["serviceConfigId"] = serviceConfigId;
}
@@ -406,32 +1078,115 @@ class Distribution {
core.Map toJson() {
var _json = new core.Map();
- if (bucketCounts != null) {
- _json["bucketCounts"] = bucketCounts;
- }
- if (count != null) {
- _json["count"] = count;
- }
- if (explicitBuckets != null) {
- _json["explicitBuckets"] = (explicitBuckets).toJson();
- }
- if (exponentialBuckets != null) {
- _json["exponentialBuckets"] = (exponentialBuckets).toJson();
- }
- if (linearBuckets != null) {
- _json["linearBuckets"] = (linearBuckets).toJson();
- }
- if (maximum != null) {
- _json["maximum"] = maximum;
+ if (bucketCounts != null) {
+ _json["bucketCounts"] = bucketCounts;
+ }
+ if (count != null) {
+ _json["count"] = count;
+ }
+ if (explicitBuckets != null) {
+ _json["explicitBuckets"] = (explicitBuckets).toJson();
+ }
+ if (exponentialBuckets != null) {
+ _json["exponentialBuckets"] = (exponentialBuckets).toJson();
+ }
+ if (linearBuckets != null) {
+ _json["linearBuckets"] = (linearBuckets).toJson();
+ }
+ if (maximum != null) {
+ _json["maximum"] = maximum;
+ }
+ if (mean != null) {
+ _json["mean"] = mean;
+ }
+ if (minimum != null) {
+ _json["minimum"] = minimum;
+ }
+ if (sumOfSquaredDeviation != null) {
+ _json["sumOfSquaredDeviation"] = sumOfSquaredDeviation;
+ }
+ return _json;
+ }
+}
+
+class EndReconciliationRequest {
+ /** Operation that describes the quota reconciliation. */
+ QuotaOperation reconciliationOperation;
+ /**
+ * 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.
+ */
+ core.String serviceConfigId;
+
+ EndReconciliationRequest();
+
+ EndReconciliationRequest.fromJson(core.Map _json) {
+ if (_json.containsKey("reconciliationOperation")) {
+ reconciliationOperation = new QuotaOperation.fromJson(_json["reconciliationOperation"]);
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (reconciliationOperation != null) {
+ _json["reconciliationOperation"] = (reconciliationOperation).toJson();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
+}
+
+class EndReconciliationResponse {
+ /**
+ * The same operation_id value used in the EndReconciliationRequest. Used for
+ * logging and diagnostics purposes.
+ */
+ core.String operationId;
+ /**
+ * Metric values as tracked by One Platform before the adjustment was made.
+ */
+ core.List<MetricValueSet> quotaMetrics;
+ /** Indicates the decision of the reconciliation end. */
+ core.List<QuotaError> reconciliationErrors;
+ /** ID of the actual config used to process the request. */
+ core.String serviceConfigId;
+
+ EndReconciliationResponse();
+
+ EndReconciliationResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ }
+ if (_json.containsKey("reconciliationErrors")) {
+ reconciliationErrors = _json["reconciliationErrors"].map((value) => new QuotaError.fromJson(value)).toList();
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (operationId != null) {
+ _json["operationId"] = operationId;
}
- if (mean != null) {
- _json["mean"] = mean;
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
}
- if (minimum != null) {
- _json["minimum"] = minimum;
+ if (reconciliationErrors != null) {
+ _json["reconciliationErrors"] = reconciliationErrors.map((value) => (value).toJson()).toList();
}
- if (sumOfSquaredDeviation != null) {
- _json["sumOfSquaredDeviation"] = sumOfSquaredDeviation;
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
}
return _json;
}
@@ -718,6 +1473,8 @@ class MetricValue {
* the overriding relationship.
*/
core.Map<core.String, core.String> labels;
+ /** A money value. */
+ Money moneyValue;
/**
* The start of the time period over which this metric value's measurement
* applies. The time period has different semantics for different metric
@@ -749,6 +1506,9 @@ class MetricValue {
if (_json.containsKey("labels")) {
labels = _json["labels"];
}
+ if (_json.containsKey("moneyValue")) {
+ moneyValue = new Money.fromJson(_json["moneyValue"]);
+ }
if (_json.containsKey("startTime")) {
startTime = _json["startTime"];
}
@@ -777,6 +1537,9 @@ class MetricValue {
if (labels != null) {
_json["labels"] = labels;
}
+ if (moneyValue != null) {
+ _json["moneyValue"] = (moneyValue).toJson();
+ }
if (startTime != null) {
_json["startTime"] = startTime;
}
@@ -821,6 +1584,54 @@ class MetricValueSet {
}
}
+/** Represents an amount of money with its currency type. */
+class Money {
+ /** The 3-letter currency code defined in ISO 4217. */
+ core.String currencyCode;
+ /**
+ * 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.
+ */
+ core.int nanos;
+ /**
+ * The whole units of the amount.
+ * For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
+ */
+ core.String units;
+
+ Money();
+
+ Money.fromJson(core.Map _json) {
+ if (_json.containsKey("currencyCode")) {
+ currencyCode = _json["currencyCode"];
+ }
+ if (_json.containsKey("nanos")) {
+ nanos = _json["nanos"];
+ }
+ if (_json.containsKey("units")) {
+ units = _json["units"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (currencyCode != null) {
+ _json["currencyCode"] = currencyCode;
+ }
+ if (nanos != null) {
+ _json["nanos"] = nanos;
+ }
+ if (units != null) {
+ _json["units"] = units;
+ }
+ return _json;
+ }
+}
+
/** Represents information regarding an operation. */
class Operation {
/**
@@ -840,37 +1651,350 @@ class Operation {
* Required when the operation is used in ServiceController.Report,
* but optional when the operation is used in ServiceController.Check.
*/
- core.String endTime;
+ core.String endTime;
+ /**
+ * DO NOT USE. This is an experimental field.
+ * Possible string values are:
+ * - "LOW" : The API implementation may cache and aggregate the data.
+ * The data may be lost when rare and unexpected system failures occur.
+ * - "HIGH" : The API implementation doesn't cache and aggregate the data.
+ * If the method returns successfully, it's guaranteed that the data has
+ * been persisted in durable storage.
+ * - "DEBUG" : In addition to the behavior described in HIGH, DEBUG enables
+ * additional validation logic that is only useful during the onboarding
+ * process. This is only available to Google internal services and
+ * the service must be whitelisted by chemist-dev@google.com in order
+ * to use this level.
+ */
+ core.String importance;
+ /**
+ * 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).
+ */
+ core.Map<core.String, core.String> labels;
+ /** Represents information to be logged. */
+ core.List<LogEntry> logEntries;
+ /**
+ * 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.
+ */
+ core.List<MetricValueSet> metricValueSets;
+ /**
+ * 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.
+ */
+ core.String operationId;
+ /** Fully qualified name of the operation. Reserved for future use. */
+ core.String operationName;
+ /**
+ * Represents the properties needed for quota check. Applicable only if this
+ * operation is for a quota check request.
+ */
+ QuotaProperties quotaProperties;
+ /**
+ * 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>”
+ */
+ core.String resourceContainer;
+ /** Required. Start time of the operation. */
+ core.String startTime;
+ /**
+ * User defined labels for the resource that this operation is associated
+ * with.
+ */
+ core.Map<core.String, core.String> userLabels;
+
+ Operation();
+
+ Operation.fromJson(core.Map _json) {
+ if (_json.containsKey("consumerId")) {
+ consumerId = _json["consumerId"];
+ }
+ if (_json.containsKey("endTime")) {
+ endTime = _json["endTime"];
+ }
+ if (_json.containsKey("importance")) {
+ importance = _json["importance"];
+ }
+ if (_json.containsKey("labels")) {
+ labels = _json["labels"];
+ }
+ if (_json.containsKey("logEntries")) {
+ logEntries = _json["logEntries"].map((value) => new LogEntry.fromJson(value)).toList();
+ }
+ if (_json.containsKey("metricValueSets")) {
+ metricValueSets = _json["metricValueSets"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ }
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("operationName")) {
+ operationName = _json["operationName"];
+ }
+ if (_json.containsKey("quotaProperties")) {
+ quotaProperties = new QuotaProperties.fromJson(_json["quotaProperties"]);
+ }
+ if (_json.containsKey("resourceContainer")) {
+ resourceContainer = _json["resourceContainer"];
+ }
+ if (_json.containsKey("startTime")) {
+ startTime = _json["startTime"];
+ }
+ if (_json.containsKey("userLabels")) {
+ userLabels = _json["userLabels"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (consumerId != null) {
+ _json["consumerId"] = consumerId;
+ }
+ if (endTime != null) {
+ _json["endTime"] = endTime;
+ }
+ if (importance != null) {
+ _json["importance"] = importance;
+ }
+ if (labels != null) {
+ _json["labels"] = labels;
+ }
+ if (logEntries != null) {
+ _json["logEntries"] = logEntries.map((value) => (value).toJson()).toList();
+ }
+ if (metricValueSets != null) {
+ _json["metricValueSets"] = metricValueSets.map((value) => (value).toJson()).toList();
+ }
+ if (operationId != null) {
+ _json["operationId"] = operationId;
+ }
+ if (operationName != null) {
+ _json["operationName"] = operationName;
+ }
+ if (quotaProperties != null) {
+ _json["quotaProperties"] = (quotaProperties).toJson();
+ }
+ if (resourceContainer != null) {
+ _json["resourceContainer"] = resourceContainer;
+ }
+ if (startTime != null) {
+ _json["startTime"] = startTime;
+ }
+ if (userLabels != null) {
+ _json["userLabels"] = userLabels;
+ }
+ return _json;
+ }
+}
+
+class QuotaError {
+ /**
+ * Error code.
+ * Possible string values are:
+ * - "UNSPECIFIED" : This is never used.
+ * - "RESOURCE_EXHAUSTED" : Quota allocation failed.
+ * Same as google.rpc.Code.RESOURCE_EXHAUSTED.
+ * - "PROJECT_SUSPENDED" : Consumer project has been suspended.
+ * - "SERVICE_NOT_ENABLED" : Consumer has not enabled the service.
+ * - "BILLING_NOT_ACTIVE" : Consumer cannot access the service because billing
+ * is disabled.
+ * - "PROJECT_DELETED" : Consumer's project has been marked as deleted (soft
+ * deletion).
+ * - "PROJECT_INVALID" : Consumer's project number or ID does not represent a
+ * valid project.
+ * - "IP_ADDRESS_BLOCKED" : IP address of the consumer is invalid for the
+ * specific consumer
+ * project.
+ * - "REFERER_BLOCKED" : Referer address of the consumer request is invalid
+ * for the specific
+ * consumer project.
+ * - "CLIENT_APP_BLOCKED" : Client application of the consumer request is
+ * invalid for the
+ * specific consumer project.
+ * - "API_KEY_INVALID" : Specified API key is invalid.
+ * - "API_KEY_EXPIRED" : Specified API Key has expired.
+ * - "SPATULA_HEADER_INVALID" : Consumer's spatula header is invalid.
+ * - "LOAS_ROLE_INVALID" : The consumer's LOAS role is invalid.
+ * - "NO_LOAS_PROJECT" : The consumer's LOAS role has no associated project.
+ * - "PROJECT_STATUS_UNVAILABLE" : The backend server for looking up project
+ * id/number is unavailable.
+ * - "SERVICE_STATUS_UNAVAILABLE" : The backend server for checking service
+ * status is unavailable.
+ * - "BILLING_STATUS_UNAVAILABLE" : The backend server for checking billing
+ * status is unavailable.
+ * - "QUOTA_SYSTEM_UNAVAILABLE" : The backend server for checking quota limits
+ * is unavailable.
+ */
+ core.String code;
+ /** Free-form text that provides details on the cause of the error. */
+ core.String description;
+ /**
+ * 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>".
+ */
+ core.String subject;
+
+ QuotaError();
+
+ QuotaError.fromJson(core.Map _json) {
+ if (_json.containsKey("code")) {
+ code = _json["code"];
+ }
+ if (_json.containsKey("description")) {
+ description = _json["description"];
+ }
+ if (_json.containsKey("subject")) {
+ subject = _json["subject"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (code != null) {
+ _json["code"] = code;
+ }
+ if (description != null) {
+ _json["description"] = description;
+ }
+ if (subject != null) {
+ _json["subject"] = subject;
+ }
+ return _json;
+ }
+}
+
+/** Contains the quota information for a quota check response. */
+class QuotaInfo {
+ /**
+ * 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.
+ */
+ core.List<core.String> limitExceeded;
+ /**
+ * 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.
+ * Deprecated: Use quota_metrics to get per quota group usage.
+ */
+ core.Map<core.String, core.int> quotaConsumed;
+ /**
+ * 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"
+ */
+ core.List<MetricValueSet> quotaMetrics;
+
+ QuotaInfo();
+
+ QuotaInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("limitExceeded")) {
+ limitExceeded = _json["limitExceeded"];
+ }
+ if (_json.containsKey("quotaConsumed")) {
+ quotaConsumed = _json["quotaConsumed"];
+ }
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (limitExceeded != null) {
+ _json["limitExceeded"] = limitExceeded;
+ }
+ if (quotaConsumed != null) {
+ _json["quotaConsumed"] = quotaConsumed;
+ }
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
+ }
+ return _json;
+ }
+}
+
+/** Represents information regarding a quota operation. */
+class QuotaOperation {
+ /**
+ * 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>.
+ */
+ core.String consumerId;
+ /** Labels describing the operation. */
+ core.Map<core.String, core.String> labels;
/**
- * DO NOT USE. This is an experimental field.
- * Possible string values are:
- * - "LOW" : The API implementation may cache and aggregate the data.
- * The data may be lost when rare and unexpected system failures occur.
- * - "HIGH" : The API implementation doesn't cache and aggregate the data.
- * If the method returns successfully, it's guaranteed that the data has
- * been persisted in durable storage.
+ * 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
*/
- core.String importance;
+ core.String methodName;
/**
- * Labels describing the operation. Only the following labels are allowed:
+ * Identity of the operation. This must be unique within the scope of the
+ * service that generated the operation. If the service calls AllocateQuota
+ * and ReleaseQuota on the same operation, the two calls should carry the
+ * same ID.
*
- * - 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).
+ * 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.
*/
- core.Map<core.String, core.String> labels;
- /** Represents information to be logged. */
- core.List<LogEntry> logEntries;
+ core.String operationId;
/**
* Represents information about this operation. Each MetricValueSet
* corresponds to a metric defined in the service configuration.
@@ -883,53 +2007,61 @@ class Operation {
* instances, the entire request is rejected with
* an invalid argument error.
*/
- core.List<MetricValueSet> metricValueSets;
+ core.List<MetricValueSet> quotaMetrics;
/**
- * 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.
+ * Quota mode for this operation.
+ * Possible string values are:
+ * - "UNSPECIFIED"
+ * - "NORMAL" : For AllocateQuota request, allocates quota for the amount
+ * specified in
+ * the service configuration or specified using the quota metrics. If the
+ * amount is higher than the available quota, allocation error will be
+ * returned and no quota will be allocated.
+ * For ReleaseQuota request, this mode is supported only for precise quota
+ * limits. In this case, this operation releases quota for the amount
+ * specified in the service configuration or specified using the quota
+ * metrics. If the release can make available quota negative, release error
+ * will be returned and no quota will be released.
+ * - "BEST_EFFORT" : For AllocateQuota request, this mode is supported only
+ * for imprecise
+ * quota limits. In this case, the operation allocates quota for the amount
+ * specified in the service configuration or specified using the quota
+ * metrics. If the amount is higher than the available quota, request does
+ * not fail but all available quota will be allocated.
+ * For ReleaseQuota request, this mode is supported for both precise quota
+ * limits and imprecise quota limits. In this case, this operation releases
+ * quota for the amount specified in the service configuration or specified
+ * using the quota metrics. If the release can make available quota
+ * negative, request does not fail but only the available quota will be
+ * released. After the ReleaseQuota request completes, the available quota
+ * will be 0, and never goes to negative.
+ * - "CHECK_ONLY" : For AllocateQuota request, only checks if there is enough
+ * quota
+ * available and does not change the available quota. No lock is placed on
+ * the available quota either. Not supported for ReleaseQuota request.
*/
- core.String operationId;
- /** Fully qualified name of the operation. Reserved for future use. */
- core.String operationName;
- /** Required. Start time of the operation. */
- core.String startTime;
+ core.String quotaMode;
- Operation();
+ QuotaOperation();
- Operation.fromJson(core.Map _json) {
+ QuotaOperation.fromJson(core.Map _json) {
if (_json.containsKey("consumerId")) {
consumerId = _json["consumerId"];
}
- if (_json.containsKey("endTime")) {
- endTime = _json["endTime"];
- }
- if (_json.containsKey("importance")) {
- importance = _json["importance"];
- }
if (_json.containsKey("labels")) {
labels = _json["labels"];
}
- if (_json.containsKey("logEntries")) {
- logEntries = _json["logEntries"].map((value) => new LogEntry.fromJson(value)).toList();
- }
- if (_json.containsKey("metricValueSets")) {
- metricValueSets = _json["metricValueSets"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ if (_json.containsKey("methodName")) {
+ methodName = _json["methodName"];
}
if (_json.containsKey("operationId")) {
operationId = _json["operationId"];
}
- if (_json.containsKey("operationName")) {
- operationName = _json["operationName"];
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
}
- if (_json.containsKey("startTime")) {
- startTime = _json["startTime"];
+ if (_json.containsKey("quotaMode")) {
+ quotaMode = _json["quotaMode"];
}
}
@@ -938,29 +2070,182 @@ class Operation {
if (consumerId != null) {
_json["consumerId"] = consumerId;
}
- if (endTime != null) {
- _json["endTime"] = endTime;
- }
- if (importance != null) {
- _json["importance"] = importance;
- }
if (labels != null) {
_json["labels"] = labels;
}
- if (logEntries != null) {
- _json["logEntries"] = logEntries.map((value) => (value).toJson()).toList();
+ if (methodName != null) {
+ _json["methodName"] = methodName;
}
- if (metricValueSets != null) {
- _json["metricValueSets"] = metricValueSets.map((value) => (value).toJson()).toList();
+ if (operationId != null) {
+ _json["operationId"] = operationId;
+ }
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
+ }
+ if (quotaMode != null) {
+ _json["quotaMode"] = quotaMode;
+ }
+ return _json;
+ }
+}
+
+/**
+ * Represents the properties needed for quota operations.
+ *
+ * Use the metric_value_sets field in Operation message to provide cost
+ * override with metric_name in <service_name>/quota/<quota_group_name>/cost
+ * format. Overrides for unmatched quota groups will be ignored.
+ * Costs are expected to be >= 0. Cost 0 will cause no quota check,
+ * but still traffic restrictions will be enforced.
+ */
+class QuotaProperties {
+ /**
+ * 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.
+ */
+ core.Map<core.String, core.String> limitByIds;
+ /**
+ * Quota mode for this operation.
+ * Possible string values are:
+ * - "ACQUIRE" : Decreases available quota by the cost specified for the
+ * operation.
+ * If cost is higher than available quota, operation fails and returns
+ * error.
+ * - "ACQUIRE_BEST_EFFORT" : Decreases available quota by the cost specified
+ * for the operation.
+ * If cost is higher than available quota, operation does not fail and
+ * available quota goes down to zero but it returns error.
+ * - "CHECK" : Does not change any available quota. Only checks if there is
+ * enough
+ * quota.
+ * No lock is placed on the checked tokens neither.
+ * - "RELEASE" : Increases available quota by the operation cost specified for
+ * the
+ * operation.
+ */
+ core.String quotaMode;
+
+ QuotaProperties();
+
+ QuotaProperties.fromJson(core.Map _json) {
+ if (_json.containsKey("limitByIds")) {
+ limitByIds = _json["limitByIds"];
+ }
+ if (_json.containsKey("quotaMode")) {
+ quotaMode = _json["quotaMode"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (limitByIds != null) {
+ _json["limitByIds"] = limitByIds;
+ }
+ if (quotaMode != null) {
+ _json["quotaMode"] = quotaMode;
+ }
+ return _json;
+ }
+}
+
+/** Request message for the ReleaseQuota method. */
+class ReleaseQuotaRequest {
+ /** Operation that describes the quota release. */
+ QuotaOperation releaseOperation;
+ /**
+ * 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.
+ */
+ core.String serviceConfigId;
+
+ ReleaseQuotaRequest();
+
+ ReleaseQuotaRequest.fromJson(core.Map _json) {
+ if (_json.containsKey("releaseOperation")) {
+ releaseOperation = new QuotaOperation.fromJson(_json["releaseOperation"]);
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (releaseOperation != null) {
+ _json["releaseOperation"] = (releaseOperation).toJson();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
+}
+
+/** Response message for the ReleaseQuota method. */
+class ReleaseQuotaResponse {
+ /**
+ * The same operation_id value used in the ReleaseQuotaRequest. Used for
+ * logging and diagnostics purposes.
+ */
+ core.String operationId;
+ /**
+ * 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"
+ */
+ core.List<MetricValueSet> quotaMetrics;
+ /** Indicates the decision of the release. */
+ core.List<QuotaError> releaseErrors;
+ /** ID of the actual config used to process the request. */
+ core.String serviceConfigId;
+
+ ReleaseQuotaResponse();
+
+ ReleaseQuotaResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
}
+ if (_json.containsKey("releaseErrors")) {
+ releaseErrors = _json["releaseErrors"].map((value) => new QuotaError.fromJson(value)).toList();
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
if (operationId != null) {
_json["operationId"] = operationId;
}
- if (operationName != null) {
- _json["operationName"] = operationName;
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
}
- if (startTime != null) {
- _json["startTime"] = startTime;
+ if (releaseErrors != null) {
+ _json["releaseErrors"] = releaseErrors.map((value) => (value).toJson()).toList();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
}
return _json;
}
@@ -996,6 +2281,35 @@ class ReportError {
}
}
+class ReportInfo {
+ /** The Operation.operation_id value from the request. */
+ core.String operationId;
+ /** Quota usage info when processing the `Operation`. */
+ QuotaInfo quotaInfo;
+
+ ReportInfo();
+
+ ReportInfo.fromJson(core.Map _json) {
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("quotaInfo")) {
+ quotaInfo = new QuotaInfo.fromJson(_json["quotaInfo"]);
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (operationId != null) {
+ _json["operationId"] = operationId;
+ }
+ if (quotaInfo != null) {
+ _json["quotaInfo"] = (quotaInfo).toJson();
+ }
+ return _json;
+ }
+}
+
/** Request message for the Report method. */
class ReportRequest {
/**
@@ -1062,6 +2376,17 @@ class ReportResponse {
* 'Operations' in the request succeeded or failed.
*/
core.List<ReportError> reportErrors;
+ /**
+ * 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.
+ */
+ core.List<ReportInfo> reportInfos;
/** The actual config id used to process the request. */
core.String serviceConfigId;
@@ -1071,6 +2396,9 @@ class ReportResponse {
if (_json.containsKey("reportErrors")) {
reportErrors = _json["reportErrors"].map((value) => new ReportError.fromJson(value)).toList();
}
+ if (_json.containsKey("reportInfos")) {
+ reportInfos = _json["reportInfos"].map((value) => new ReportInfo.fromJson(value)).toList();
+ }
if (_json.containsKey("serviceConfigId")) {
serviceConfigId = _json["serviceConfigId"];
}
@@ -1081,6 +2409,135 @@ class ReportResponse {
if (reportErrors != null) {
_json["reportErrors"] = reportErrors.map((value) => (value).toJson()).toList();
}
+ if (reportInfos != null) {
+ _json["reportInfos"] = reportInfos.map((value) => (value).toJson()).toList();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
+}
+
+/** Metadata about the request. */
+class RequestMetadata {
+ /** The IP address of the caller. */
+ core.String callerIp;
+ /**
+ * 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.
+ */
+ core.String callerSuppliedUserAgent;
+
+ RequestMetadata();
+
+ RequestMetadata.fromJson(core.Map _json) {
+ if (_json.containsKey("callerIp")) {
+ callerIp = _json["callerIp"];
+ }
+ if (_json.containsKey("callerSuppliedUserAgent")) {
+ callerSuppliedUserAgent = _json["callerSuppliedUserAgent"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (callerIp != null) {
+ _json["callerIp"] = callerIp;
+ }
+ if (callerSuppliedUserAgent != null) {
+ _json["callerSuppliedUserAgent"] = callerSuppliedUserAgent;
+ }
+ return _json;
+ }
+}
+
+class StartReconciliationRequest {
+ /** Operation that describes the quota reconciliation. */
+ QuotaOperation reconciliationOperation;
+ /**
+ * 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.
+ */
+ core.String serviceConfigId;
+
+ StartReconciliationRequest();
+
+ StartReconciliationRequest.fromJson(core.Map _json) {
+ if (_json.containsKey("reconciliationOperation")) {
+ reconciliationOperation = new QuotaOperation.fromJson(_json["reconciliationOperation"]);
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (reconciliationOperation != null) {
+ _json["reconciliationOperation"] = (reconciliationOperation).toJson();
+ }
+ if (serviceConfigId != null) {
+ _json["serviceConfigId"] = serviceConfigId;
+ }
+ return _json;
+ }
+}
+
+class StartReconciliationResponse {
+ /**
+ * The same operation_id value used in the StartReconciliationRequest. Used
+ * for logging and diagnostics purposes.
+ */
+ core.String operationId;
+ /**
+ * Metric values as tracked by One Platform before the start of
+ * reconciliation.
+ */
+ core.List<MetricValueSet> quotaMetrics;
+ /** Indicates the decision of the reconciliation start. */
+ core.List<QuotaError> reconciliationErrors;
+ /** ID of the actual config used to process the request. */
+ core.String serviceConfigId;
+
+ StartReconciliationResponse();
+
+ StartReconciliationResponse.fromJson(core.Map _json) {
+ if (_json.containsKey("operationId")) {
+ operationId = _json["operationId"];
+ }
+ if (_json.containsKey("quotaMetrics")) {
+ quotaMetrics = _json["quotaMetrics"].map((value) => new MetricValueSet.fromJson(value)).toList();
+ }
+ if (_json.containsKey("reconciliationErrors")) {
+ reconciliationErrors = _json["reconciliationErrors"].map((value) => new QuotaError.fromJson(value)).toList();
+ }
+ if (_json.containsKey("serviceConfigId")) {
+ serviceConfigId = _json["serviceConfigId"];
+ }
+ }
+
+ core.Map toJson() {
+ var _json = new core.Map();
+ if (operationId != null) {
+ _json["operationId"] = operationId;
+ }
+ if (quotaMetrics != null) {
+ _json["quotaMetrics"] = quotaMetrics.map((value) => (value).toJson()).toList();
+ }
+ if (reconciliationErrors != null) {
+ _json["reconciliationErrors"] = reconciliationErrors.map((value) => (value).toJson()).toList();
+ }
if (serviceConfigId != null) {
_json["serviceConfigId"] = serviceConfigId;
}
« no previous file with comments | « generated/googleapis/lib/searchconsole/v1.dart ('k') | generated/googleapis/lib/servicemanagement/v1.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698