| // This is a generated file (see the discoveryapis_generator project). |
| |
| library googleapis.servicecontrol.v1; |
| |
| import 'dart:core' as core; |
| import 'dart:async' as async; |
| import 'dart:convert' as convert; |
| |
| import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; |
| import 'package:http/http.dart' as http; |
| |
| export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' |
| show ApiRequestError, DetailedApiRequestError; |
| |
| const core.String USER_AGENT = 'dart-api-client servicecontrol/v1'; |
| |
| /// Google Service Control provides control plane functionality to managed |
| /// services, such as logging, monitoring, and status checks. |
| class ServicecontrolApi { |
| /// View and manage your data across Google Cloud Platform services |
| static const CloudPlatformScope = |
| "https://www.googleapis.com/auth/cloud-platform"; |
| |
| /// Manage your Google Service Control data |
| static const ServicecontrolScope = |
| "https://www.googleapis.com/auth/servicecontrol"; |
| |
| final commons.ApiRequester _requester; |
| |
| ServicesResourceApi get services => new ServicesResourceApi(_requester); |
| |
| ServicecontrolApi(http.Client client, |
| {core.String rootUrl: "https://servicecontrol.googleapis.com/", |
| core.String servicePath: ""}) |
| : _requester = |
| new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT); |
| } |
| |
| class ServicesResourceApi { |
| final commons.ApiRequester _requester; |
| |
| ServicesResourceApi(commons.ApiRequester client) : _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 |
| /// [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. |
| /// |
| /// [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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// 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, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _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. |
| /// |
| /// 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). |
| /// |
| /// [request] - The metadata request object. |
| /// |
| /// Request parameters: |
| /// |
| /// [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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// Completes with a [CheckResponse]. |
| /// |
| /// 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<CheckResponse> check( |
| CheckRequest request, core.String serviceName, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _url = 'v1/services/' + |
| commons.Escaper.ecapeVariable('$serviceName') + |
| ':check'; |
| |
| var _response = _requester.request(_url, "POST", |
| body: _body, |
| queryParams: _queryParams, |
| uploadOptions: _uploadOptions, |
| uploadMedia: _uploadMedia, |
| downloadOptions: _downloadOptions); |
| return _response.then((data) => new CheckResponse.fromJson(data)); |
| } |
| |
| /// 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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// 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, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _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 |
| /// [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. |
| /// |
| /// [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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// 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, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _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. |
| /// |
| /// 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). |
| /// |
| /// [request] - The metadata request object. |
| /// |
| /// Request parameters: |
| /// |
| /// [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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// Completes with a [ReportResponse]. |
| /// |
| /// 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<ReportResponse> report( |
| ReportRequest request, core.String serviceName, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _url = 'v1/services/' + |
| commons.Escaper.ecapeVariable('$serviceName') + |
| ':report'; |
| |
| var _response = _requester.request(_url, "POST", |
| body: _body, |
| queryParams: _queryParams, |
| uploadOptions: _uploadOptions, |
| uploadMedia: _uploadMedia, |
| downloadOptions: _downloadOptions); |
| 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. |
| /// |
| /// [$fields] - Selector specifying which fields to include in a partial |
| /// response. |
| /// |
| /// 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, |
| {core.String $fields}) { |
| 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."); |
| } |
| if ($fields != null) { |
| _queryParams["fields"] = [$fields]; |
| } |
| |
| _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)); |
| } |
| } |
| |
| class AllocateInfo { |
| /// 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. |
| core.List<core.String> unusedArguments; |
| |
| AllocateInfo(); |
| |
| AllocateInfo.fromJson(core.Map _json) { |
| if (_json.containsKey("unusedArguments")) { |
| unusedArguments = _json["unusedArguments"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (unusedArguments != null) { |
| _json["unusedArguments"] = unusedArguments; |
| } |
| return _json; |
| } |
| } |
| |
| /// Request message for the AllocateQuota method. |
| class AllocateQuotaRequest { |
| /// Operation that describes the quota allocation. |
| QuotaOperation allocateOperation; |
| |
| /// 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("serviceConfigId")) { |
| serviceConfigId = _json["serviceConfigId"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (allocateOperation != null) { |
| _json["allocateOperation"] = (allocateOperation).toJson(); |
| } |
| 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; |
| |
| /// WARNING: DO NOT use this field until this warning message is removed. |
| AllocateInfo allocateInfo; |
| |
| /// 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. 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. 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("allocateInfo")) { |
| allocateInfo = new AllocateInfo.fromJson(_json["allocateInfo"]); |
| } |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (allocateErrors != null) { |
| _json["allocateErrors"] = |
| allocateErrors.map((value) => (value).toJson()).toList(); |
| } |
| if (allocateInfo != null) { |
| _json["allocateInfo"] = (allocateInfo).toJson(); |
| } |
| 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; |
| |
| /// Other service-specific data about the request, response, and other |
| /// information associated with the current audited event. |
| /// |
| /// 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> metadata; |
| |
| /// 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; |
| |
| /// Deprecated, use `metadata` field instead. |
| /// 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("metadata")) { |
| metadata = _json["metadata"]; |
| } |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (authenticationInfo != null) { |
| _json["authenticationInfo"] = (authenticationInfo).toJson(); |
| } |
| if (authorizationInfo != null) { |
| _json["authorizationInfo"] = |
| authorizationInfo.map((value) => (value).toJson()).toList(); |
| } |
| if (metadata != null) { |
| _json["metadata"] = metadata; |
| } |
| 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 (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. |
| core.String principalEmail; |
| |
| /// 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. |
| /// |
| /// 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> thirdPartyPrincipal; |
| |
| AuthenticationInfo(); |
| |
| AuthenticationInfo.fromJson(core.Map _json) { |
| if (_json.containsKey("authoritySelector")) { |
| authoritySelector = _json["authoritySelector"]; |
| } |
| if (_json.containsKey("principalEmail")) { |
| principalEmail = _json["principalEmail"]; |
| } |
| if (_json.containsKey("thirdPartyPrincipal")) { |
| thirdPartyPrincipal = _json["thirdPartyPrincipal"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (authoritySelector != null) { |
| _json["authoritySelector"] = authoritySelector; |
| } |
| if (principalEmail != null) { |
| _json["principalEmail"] = principalEmail; |
| } |
| if (thirdPartyPrincipal != null) { |
| _json["thirdPartyPrincipal"] = thirdPartyPrincipal; |
| } |
| 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.googleapis.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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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 |
| /// google.api.servicecontrol.v1.CheckResponse.check_errors. |
| class CheckError { |
| /// The error code. |
| /// Possible string values are: |
| /// - "ERROR_CODE_UNSPECIFIED" : This is never used in `CheckResponse`. |
| /// - "NOT_FOUND" : The consumer's project id, network container, or resource |
| /// container was |
| /// not found. Same as google.rpc.Code.NOT_FOUND. |
| /// - "PERMISSION_DENIED" : The consumer doesn't have access to the specified |
| /// resource. |
| /// 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 |
| /// (soft deletion). |
| /// - "PROJECT_INVALID" : The consumer's project number or id does not |
| /// represent a valid project. |
| /// - "IP_ADDRESS_BLOCKED" : The IP address of the consumer is invalid for the |
| /// specific consumer |
| /// project. |
| /// - "REFERER_BLOCKED" : The referer address of the consumer request is |
| /// invalid for the specific |
| /// consumer project. |
| /// - "CLIENT_APP_BLOCKED" : The client application of the consumer request is |
| /// invalid for the |
| /// specific consumer project. |
| /// - "API_TARGET_BLOCKED" : The API targeted by this request is invalid for |
| /// the specified consumer |
| /// project. |
| /// - "API_KEY_INVALID" : The consumer's API key is invalid. |
| /// - "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. |
| core.String detail; |
| |
| /// Subject to whom this error applies. See the specific code enum for more |
| /// details on this field. For example: |
| /// - “project:<project-id or project-number>” |
| /// - “folder:<folder-id>” |
| /// - “organization:<organization-id>” |
| core.String subject; |
| |
| CheckError(); |
| |
| CheckError.fromJson(core.Map _json) { |
| if (_json.containsKey("code")) { |
| code = _json["code"]; |
| } |
| if (_json.containsKey("detail")) { |
| detail = _json["detail"]; |
| } |
| if (_json.containsKey("subject")) { |
| subject = _json["subject"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (code != null) { |
| _json["code"] = code; |
| } |
| if (detail != null) { |
| _json["detail"] = detail; |
| } |
| if (subject != null) { |
| _json["subject"] = subject; |
| } |
| return _json; |
| } |
| } |
| |
| /// Contains additional information about the check operation. |
| class CheckInfo { |
| /// Consumer info of this check. |
| ConsumerInfo consumerInfo; |
| |
| /// 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("consumerInfo")) { |
| consumerInfo = new ConsumerInfo.fromJson(_json["consumerInfo"]); |
| } |
| if (_json.containsKey("unusedArguments")) { |
| unusedArguments = _json["unusedArguments"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (consumerInfo != null) { |
| _json["consumerInfo"] = (consumerInfo).toJson(); |
| } |
| 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. |
| /// |
| /// If unspecified or no matching version can be found, the |
| /// 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(); |
| |
| CheckRequest.fromJson(core.Map _json) { |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| } |
| } |
| |
| /// Response message for the Check method. |
| class CheckResponse { |
| /// 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. |
| 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; |
| |
| CheckResponse(); |
| |
| CheckResponse.fromJson(core.Map _json) { |
| 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"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| } |
| return _json; |
| } |
| } |
| |
| /// `ConsumerInfo` provides information about the consumer project. |
| class ConsumerInfo { |
| /// The Google cloud project number, e.g. 1234567890. A value of 0 indicates |
| /// no project number is found. |
| core.String projectNumber; |
| |
| ConsumerInfo(); |
| |
| ConsumerInfo.fromJson(core.Map _json) { |
| if (_json.containsKey("projectNumber")) { |
| projectNumber = _json["projectNumber"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (projectNumber != null) { |
| _json["projectNumber"] = projectNumber; |
| } |
| return _json; |
| } |
| } |
| |
| /// Distribution represents a frequency distribution of double-valued sample |
| /// points. It contains the size of the population of sample points plus |
| /// additional optional information: |
| /// |
| /// - the arithmetic mean of the samples |
| /// - the minimum and maximum of the samples |
| /// - the sum-squared-deviation of the samples, used to compute variance |
| /// - a histogram of the values of the sample points |
| class Distribution { |
| /// 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. |
| core.List<core.String> bucketCounts; |
| |
| /// The total number of samples in the distribution. Must be >= 0. |
| core.String count; |
| |
| /// Buckets with arbitrary user-provided width. |
| ExplicitBuckets explicitBuckets; |
| |
| /// Buckets with exponentially growing width. |
| ExponentialBuckets exponentialBuckets; |
| |
| /// Buckets with constant width. |
| LinearBuckets linearBuckets; |
| |
| /// The maximum of the population of values. Ignored if `count` is zero. |
| core.double maximum; |
| |
| /// The arithmetic mean of the samples in the distribution. If `count` is |
| /// zero then this field must be zero. |
| core.double mean; |
| |
| /// The minimum of the population of values. Ignored if `count` is zero. |
| core.double minimum; |
| |
| /// 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. |
| core.double sumOfSquaredDeviation; |
| |
| Distribution(); |
| |
| Distribution.fromJson(core.Map _json) { |
| if (_json.containsKey("bucketCounts")) { |
| bucketCounts = _json["bucketCounts"]; |
| } |
| if (_json.containsKey("count")) { |
| count = _json["count"]; |
| } |
| if (_json.containsKey("explicitBuckets")) { |
| explicitBuckets = new ExplicitBuckets.fromJson(_json["explicitBuckets"]); |
| } |
| if (_json.containsKey("exponentialBuckets")) { |
| exponentialBuckets = |
| new ExponentialBuckets.fromJson(_json["exponentialBuckets"]); |
| } |
| if (_json.containsKey("linearBuckets")) { |
| linearBuckets = new LinearBuckets.fromJson(_json["linearBuckets"]); |
| } |
| if (_json.containsKey("maximum")) { |
| maximum = _json["maximum"]; |
| } |
| if (_json.containsKey("mean")) { |
| mean = _json["mean"]; |
| } |
| if (_json.containsKey("minimum")) { |
| minimum = _json["minimum"]; |
| } |
| if (_json.containsKey("sumOfSquaredDeviation")) { |
| sumOfSquaredDeviation = _json["sumOfSquaredDeviation"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| } |
| } |
| |
| /// Request message for QuotaController.EndReconciliation. |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (reconciliationOperation != null) { |
| _json["reconciliationOperation"] = (reconciliationOperation).toJson(); |
| } |
| if (serviceConfigId != null) { |
| _json["serviceConfigId"] = serviceConfigId; |
| } |
| return _json; |
| } |
| } |
| |
| /// Response message for QuotaController.EndReconciliation. |
| 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. |
| /// 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. |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| } |
| return _json; |
| } |
| } |
| |
| /// Describing buckets with arbitrary user-provided width. |
| class ExplicitBuckets { |
| /// '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 |
| core.List<core.double> bounds; |
| |
| ExplicitBuckets(); |
| |
| ExplicitBuckets.fromJson(core.Map _json) { |
| if (_json.containsKey("bounds")) { |
| bounds = _json["bounds"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (bounds != null) { |
| _json["bounds"] = bounds; |
| } |
| return _json; |
| } |
| } |
| |
| /// Describing buckets with exponentially growing width. |
| class ExponentialBuckets { |
| /// 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. |
| core.double growthFactor; |
| |
| /// 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. |
| core.int numFiniteBuckets; |
| |
| /// 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. |
| core.double scale; |
| |
| ExponentialBuckets(); |
| |
| ExponentialBuckets.fromJson(core.Map _json) { |
| if (_json.containsKey("growthFactor")) { |
| growthFactor = _json["growthFactor"]; |
| } |
| if (_json.containsKey("numFiniteBuckets")) { |
| numFiniteBuckets = _json["numFiniteBuckets"]; |
| } |
| if (_json.containsKey("scale")) { |
| scale = _json["scale"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (growthFactor != null) { |
| _json["growthFactor"] = growthFactor; |
| } |
| if (numFiniteBuckets != null) { |
| _json["numFiniteBuckets"] = numFiniteBuckets; |
| } |
| if (scale != null) { |
| _json["scale"] = scale; |
| } |
| return _json; |
| } |
| } |
| |
| /// Describing buckets with constant width. |
| class LinearBuckets { |
| /// 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. |
| core.int numFiniteBuckets; |
| |
| /// 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. |
| core.double 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. |
| /// Must be strictly positive. |
| core.double width; |
| |
| LinearBuckets(); |
| |
| LinearBuckets.fromJson(core.Map _json) { |
| if (_json.containsKey("numFiniteBuckets")) { |
| numFiniteBuckets = _json["numFiniteBuckets"]; |
| } |
| if (_json.containsKey("offset")) { |
| offset = _json["offset"]; |
| } |
| if (_json.containsKey("width")) { |
| width = _json["width"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (numFiniteBuckets != null) { |
| _json["numFiniteBuckets"] = numFiniteBuckets; |
| } |
| if (offset != null) { |
| _json["offset"] = offset; |
| } |
| if (width != null) { |
| _json["width"] = width; |
| } |
| return _json; |
| } |
| } |
| |
| /// An individual log entry. |
| class LogEntry { |
| /// A unique ID for the log entry used for deduplication. If omitted, |
| /// the implementation will generate one based on operation_id. |
| core.String insertId; |
| |
| /// A set of user-defined (key, value) data that provides additional |
| /// information about the log entry. |
| core.Map<core.String, core.String> labels; |
| |
| /// Required. The log to which this log entry belongs. Examples: `"syslog"`, |
| /// `"book_log"`. |
| core.String name; |
| |
| /// The log entry payload, represented as a protocol buffer that is |
| /// expressed as a JSON object. The only accepted type currently is |
| /// AuditLog. |
| /// |
| /// 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> protoPayload; |
| |
| /// The severity of the log entry. The default value is |
| /// `LogSeverity.DEFAULT`. |
| /// Possible string values are: |
| /// - "DEFAULT" : (0) The log entry has no assigned severity level. |
| /// - "DEBUG" : (100) Debug or trace information. |
| /// - "INFO" : (200) Routine information, such as ongoing status or |
| /// performance. |
| /// - "NOTICE" : (300) Normal but significant events, such as start up, shut |
| /// down, or |
| /// a configuration change. |
| /// - "WARNING" : (400) Warning events might cause problems. |
| /// - "ERROR" : (500) Error events are likely to cause problems. |
| /// - "CRITICAL" : (600) Critical events cause more severe problems or |
| /// outages. |
| /// - "ALERT" : (700) A person must take an action immediately. |
| /// - "EMERGENCY" : (800) One or more systems are unusable. |
| core.String severity; |
| |
| /// The log entry payload, represented as a structure that |
| /// is expressed as a JSON object. |
| /// |
| /// 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> structPayload; |
| |
| /// The log entry payload, represented as a Unicode string (UTF-8). |
| core.String textPayload; |
| |
| /// The time the event described by the log entry occurred. If |
| /// omitted, defaults to operation start time. |
| core.String timestamp; |
| |
| LogEntry(); |
| |
| LogEntry.fromJson(core.Map _json) { |
| if (_json.containsKey("insertId")) { |
| insertId = _json["insertId"]; |
| } |
| if (_json.containsKey("labels")) { |
| labels = _json["labels"]; |
| } |
| if (_json.containsKey("name")) { |
| name = _json["name"]; |
| } |
| if (_json.containsKey("protoPayload")) { |
| protoPayload = _json["protoPayload"]; |
| } |
| if (_json.containsKey("severity")) { |
| severity = _json["severity"]; |
| } |
| if (_json.containsKey("structPayload")) { |
| structPayload = _json["structPayload"]; |
| } |
| if (_json.containsKey("textPayload")) { |
| textPayload = _json["textPayload"]; |
| } |
| if (_json.containsKey("timestamp")) { |
| timestamp = _json["timestamp"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (insertId != null) { |
| _json["insertId"] = insertId; |
| } |
| if (labels != null) { |
| _json["labels"] = labels; |
| } |
| if (name != null) { |
| _json["name"] = name; |
| } |
| if (protoPayload != null) { |
| _json["protoPayload"] = protoPayload; |
| } |
| if (severity != null) { |
| _json["severity"] = severity; |
| } |
| if (structPayload != null) { |
| _json["structPayload"] = structPayload; |
| } |
| if (textPayload != null) { |
| _json["textPayload"] = textPayload; |
| } |
| if (timestamp != null) { |
| _json["timestamp"] = timestamp; |
| } |
| return _json; |
| } |
| } |
| |
| /// Represents a single metric value. |
| class MetricValue { |
| /// A boolean value. |
| core.bool boolValue; |
| |
| /// A distribution value. |
| Distribution distributionValue; |
| |
| /// A double precision floating point value. |
| core.double doubleValue; |
| |
| /// The end of the time period over which this metric value's measurement |
| /// applies. |
| core.String endTime; |
| |
| /// A signed 64-bit integer value. |
| core.String int64Value; |
| |
| /// The labels describing the metric value. |
| /// See comments on google.api.servicecontrol.v1.Operation.labels for |
| /// 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 |
| /// types (cumulative, delta, and gauge). See the metric definition |
| /// documentation in the service configuration for details. |
| core.String startTime; |
| |
| /// A text string value. |
| core.String stringValue; |
| |
| MetricValue(); |
| |
| MetricValue.fromJson(core.Map _json) { |
| if (_json.containsKey("boolValue")) { |
| boolValue = _json["boolValue"]; |
| } |
| if (_json.containsKey("distributionValue")) { |
| distributionValue = new Distribution.fromJson(_json["distributionValue"]); |
| } |
| if (_json.containsKey("doubleValue")) { |
| doubleValue = _json["doubleValue"]; |
| } |
| if (_json.containsKey("endTime")) { |
| endTime = _json["endTime"]; |
| } |
| if (_json.containsKey("int64Value")) { |
| int64Value = _json["int64Value"]; |
| } |
| if (_json.containsKey("labels")) { |
| labels = _json["labels"]; |
| } |
| if (_json.containsKey("moneyValue")) { |
| moneyValue = new Money.fromJson(_json["moneyValue"]); |
| } |
| if (_json.containsKey("startTime")) { |
| startTime = _json["startTime"]; |
| } |
| if (_json.containsKey("stringValue")) { |
| stringValue = _json["stringValue"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (boolValue != null) { |
| _json["boolValue"] = boolValue; |
| } |
| if (distributionValue != null) { |
| _json["distributionValue"] = (distributionValue).toJson(); |
| } |
| if (doubleValue != null) { |
| _json["doubleValue"] = doubleValue; |
| } |
| if (endTime != null) { |
| _json["endTime"] = endTime; |
| } |
| if (int64Value != null) { |
| _json["int64Value"] = int64Value; |
| } |
| if (labels != null) { |
| _json["labels"] = labels; |
| } |
| if (moneyValue != null) { |
| _json["moneyValue"] = (moneyValue).toJson(); |
| } |
| if (startTime != null) { |
| _json["startTime"] = startTime; |
| } |
| if (stringValue != null) { |
| _json["stringValue"] = stringValue; |
| } |
| return _json; |
| } |
| } |
| |
| /// Represents a set of metric values in the same metric. |
| /// Each metric value in the set should have a unique combination of start time, |
| /// end time, and label values. |
| class MetricValueSet { |
| /// The metric name defined in the service configuration. |
| core.String metricName; |
| |
| /// The values in this metric. |
| core.List<MetricValue> metricValues; |
| |
| MetricValueSet(); |
| |
| MetricValueSet.fromJson(core.Map _json) { |
| if (_json.containsKey("metricName")) { |
| metricName = _json["metricName"]; |
| } |
| if (_json.containsKey("metricValues")) { |
| metricValues = _json["metricValues"] |
| .map((value) => new MetricValue.fromJson(value)) |
| .toList(); |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (metricName != null) { |
| _json["metricName"] = metricName; |
| } |
| if (metricValues != null) { |
| _json["metricValues"] = |
| metricValues.map((value) => (value).toJson()).toList(); |
| } |
| return _json; |
| } |
| } |
| |
| /// 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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 { |
| /// 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>. |
| core.String consumerId; |
| |
| /// End time of the operation. |
| /// Required when the operation is used in ServiceController.Report, |
| /// but optional when the operation is used in ServiceController.Check. |
| 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. If this is not specified, no quota |
| /// check will be performed. |
| QuotaProperties quotaProperties; |
| |
| /// DO NOT USE. This field is deprecated, use "resources" field instead. |
| /// 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; |
| |
| /// The resources that are involved in the operation. |
| core.List<ResourceInfo> resources; |
| |
| /// Required. Start time of the operation. |
| core.String startTime; |
| |
| /// User defined labels for the resource that this operation is associated |
| /// with. Only a combination of 1000 user labels per consumer project are |
| /// allowed. |
| 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("resources")) { |
| resources = _json["resources"] |
| .map((value) => new ResourceInfo.fromJson(value)) |
| .toList(); |
| } |
| if (_json.containsKey("startTime")) { |
| startTime = _json["startTime"]; |
| } |
| if (_json.containsKey("userLabels")) { |
| userLabels = _json["userLabels"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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 (resources != null) { |
| _json["resources"] = resources.map((value) => (value).toJson()).toList(); |
| } |
| if (startTime != null) { |
| _json["startTime"] = startTime; |
| } |
| if (userLabels != null) { |
| _json["userLabels"] = userLabels; |
| } |
| return _json; |
| } |
| } |
| |
| /// Represents error information for QuotaOperation. |
| 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. |
| /// - "OUT_OF_RANGE" : Quota release failed. This error is ONLY returned on a |
| /// NORMAL release. |
| /// More formally: if a user requests a release of 10 tokens, but only |
| /// 5 tokens were previously allocated, in a BEST_EFFORT release, this will |
| /// be considered a success, 5 tokens will be released, and the result will |
| /// be "Ok". If this is done in NORMAL mode, no tokens will be released, |
| /// and an OUT_OF_RANGE error will be returned. |
| /// Same as google.rpc.Code.OUT_OF_RANGE. |
| /// - "BILLING_NOT_ACTIVE" : Consumer cannot access the service because the |
| /// service requires active |
| /// billing. |
| /// - "PROJECT_DELETED" : Consumer's project has been marked as deleted (soft |
| /// deletion). |
| /// - "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_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_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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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. |
| /// |
| /// 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). |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| |
| /// 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 should not be set if any of the following is true: |
| /// (1) the quota operation is performed on non-API resources. |
| /// (2) quota_metrics is set because the caller is doing quota override. |
| /// |
| /// Example of an RPC method name: |
| /// google.example.library.v1.LibraryService.CreateShelf |
| core.String methodName; |
| |
| /// 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. |
| core.String operationId; |
| |
| /// 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. |
| /// |
| /// This field is mutually exclusive with method_name. |
| core.List<MetricValueSet> quotaMetrics; |
| |
| /// Quota mode for this operation. |
| /// Possible string values are: |
| /// - "UNSPECIFIED" : Guard against implicit default. Must not be used. |
| /// - "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. |
| /// - "BEST_EFFORT" : 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. |
| /// - "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. |
| core.String quotaMode; |
| |
| QuotaOperation(); |
| |
| QuotaOperation.fromJson(core.Map _json) { |
| if (_json.containsKey("consumerId")) { |
| consumerId = _json["consumerId"]; |
| } |
| if (_json.containsKey("labels")) { |
| labels = _json["labels"]; |
| } |
| if (_json.containsKey("methodName")) { |
| methodName = _json["methodName"]; |
| } |
| if (_json.containsKey("operationId")) { |
| operationId = _json["operationId"]; |
| } |
| if (_json.containsKey("quotaMetrics")) { |
| quotaMetrics = _json["quotaMetrics"] |
| .map((value) => new MetricValueSet.fromJson(value)) |
| .toList(); |
| } |
| if (_json.containsKey("quotaMode")) { |
| quotaMode = _json["quotaMode"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (consumerId != null) { |
| _json["consumerId"] = consumerId; |
| } |
| if (labels != null) { |
| _json["labels"] = labels; |
| } |
| if (methodName != null) { |
| _json["methodName"] = methodName; |
| } |
| 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. |
| class QuotaProperties { |
| /// 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("quotaMode")) { |
| quotaMode = _json["quotaMode"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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" |
| /// |
| /// 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" |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (operationId != null) { |
| _json["operationId"] = operationId; |
| } |
| if (quotaMetrics != null) { |
| _json["quotaMetrics"] = |
| quotaMetrics.map((value) => (value).toJson()).toList(); |
| } |
| if (releaseErrors != null) { |
| _json["releaseErrors"] = |
| releaseErrors.map((value) => (value).toJson()).toList(); |
| } |
| if (serviceConfigId != null) { |
| _json["serviceConfigId"] = serviceConfigId; |
| } |
| return _json; |
| } |
| } |
| |
| /// Represents the processing error of one Operation in the request. |
| class ReportError { |
| /// The Operation.operation_id value from the request. |
| core.String operationId; |
| |
| /// Details of the error when processing the Operation. |
| Status status; |
| |
| ReportError(); |
| |
| ReportError.fromJson(core.Map _json) { |
| if (_json.containsKey("operationId")) { |
| operationId = _json["operationId"]; |
| } |
| if (_json.containsKey("status")) { |
| status = new Status.fromJson(_json["status"]); |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (operationId != null) { |
| _json["operationId"] = operationId; |
| } |
| if (status != null) { |
| _json["status"] = (status).toJson(); |
| } |
| return _json; |
| } |
| } |
| |
| /// Contains additional info about the report operation. |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (operationId != null) { |
| _json["operationId"] = operationId; |
| } |
| if (quotaInfo != null) { |
| _json["quotaInfo"] = (quotaInfo).toJson(); |
| } |
| return _json; |
| } |
| } |
| |
| /// Request message for the Report method. |
| class ReportRequest { |
| /// 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. |
| core.List<Operation> operations; |
| |
| /// 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. |
| core.String serviceConfigId; |
| |
| ReportRequest(); |
| |
| ReportRequest.fromJson(core.Map _json) { |
| if (_json.containsKey("operations")) { |
| operations = _json["operations"] |
| .map((value) => new Operation.fromJson(value)) |
| .toList(); |
| } |
| if (_json.containsKey("serviceConfigId")) { |
| serviceConfigId = _json["serviceConfigId"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (operations != null) { |
| _json["operations"] = |
| operations.map((value) => (value).toJson()).toList(); |
| } |
| if (serviceConfigId != null) { |
| _json["serviceConfigId"] = serviceConfigId; |
| } |
| return _json; |
| } |
| } |
| |
| /// Response message for the Report method. |
| class ReportResponse { |
| /// 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. |
| 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; |
| |
| ReportResponse(); |
| |
| ReportResponse.fromJson(core.Map _json) { |
| 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"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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. |
| /// For caller from internet, this will be public IPv4 or IPv6 address. |
| /// For caller from a Compute Engine VM with external IP address, this |
| /// will be the VM's external IP address. For caller from a Compute |
| /// Engine VM without external IP address, if the VM is in the same |
| /// organization (or project) as the accessed resource, `caller_ip` will |
| /// be the VM's internal IPv4 address, otherwise the `caller_ip` will be |
| /// redacted to "gce-internal-ip". |
| /// See https://cloud.google.com/compute/docs/vpc/ for more information. |
| core.String callerIp; |
| |
| /// The network of the caller. |
| /// Set only if the network host project is part of the same GCP organization |
| /// (or project) as the accessed resource. |
| /// See https://cloud.google.com/compute/docs/vpc/ for more information. |
| /// This is a scheme-less URI full resource name. For example: |
| /// |
| /// "//compute.googleapis.com/projects/PROJECT_ID/global/networks/NETWORK_ID" |
| core.String callerNetwork; |
| |
| /// 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 |
| core.String callerSuppliedUserAgent; |
| |
| RequestMetadata(); |
| |
| RequestMetadata.fromJson(core.Map _json) { |
| if (_json.containsKey("callerIp")) { |
| callerIp = _json["callerIp"]; |
| } |
| if (_json.containsKey("callerNetwork")) { |
| callerNetwork = _json["callerNetwork"]; |
| } |
| if (_json.containsKey("callerSuppliedUserAgent")) { |
| callerSuppliedUserAgent = _json["callerSuppliedUserAgent"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (callerIp != null) { |
| _json["callerIp"] = callerIp; |
| } |
| if (callerNetwork != null) { |
| _json["callerNetwork"] = callerNetwork; |
| } |
| if (callerSuppliedUserAgent != null) { |
| _json["callerSuppliedUserAgent"] = callerSuppliedUserAgent; |
| } |
| return _json; |
| } |
| } |
| |
| /// Describes a resource associated with this operation. |
| class ResourceInfo { |
| /// 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>” |
| core.String resourceContainer; |
| |
| /// Name of the resource. This is used for auditing purposes. |
| core.String resourceName; |
| |
| ResourceInfo(); |
| |
| ResourceInfo.fromJson(core.Map _json) { |
| if (_json.containsKey("resourceContainer")) { |
| resourceContainer = _json["resourceContainer"]; |
| } |
| if (_json.containsKey("resourceName")) { |
| resourceName = _json["resourceName"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (resourceContainer != null) { |
| _json["resourceContainer"] = resourceContainer; |
| } |
| if (resourceName != null) { |
| _json["resourceName"] = resourceName; |
| } |
| return _json; |
| } |
| } |
| |
| /// Request message for QuotaController.StartReconciliation. |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (reconciliationOperation != null) { |
| _json["reconciliationOperation"] = (reconciliationOperation).toJson(); |
| } |
| if (serviceConfigId != null) { |
| _json["serviceConfigId"] = serviceConfigId; |
| } |
| return _json; |
| } |
| } |
| |
| /// Response message for QuotaController.StartReconciliation. |
| 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. 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" |
| 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<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| 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; |
| } |
| return _json; |
| } |
| } |
| |
| /// The `Status` type defines a logical error model that is suitable for |
| /// different |
| /// programming environments, including REST APIs and RPC APIs. It is used by |
| /// [gRPC](https://github.com/grpc). The error model is designed to be: |
| /// |
| /// - Simple to use and understand for most users |
| /// - Flexible enough to meet unexpected needs |
| /// |
| /// # Overview |
| /// |
| /// The `Status` message contains three pieces of data: error code, error |
| /// message, |
| /// and error details. The error code should be an enum value of |
| /// google.rpc.Code, but it may accept additional error codes if needed. The |
| /// error message should be a developer-facing English message that helps |
| /// developers *understand* and *resolve* the error. If a localized user-facing |
| /// error message is needed, put the localized message in the error details or |
| /// localize it in the client. The optional error details may contain arbitrary |
| /// information about the error. There is a predefined set of error detail types |
| /// in the package `google.rpc` that can be used for common error conditions. |
| /// |
| /// # Language mapping |
| /// |
| /// The `Status` message is the logical representation of the error model, but |
| /// it |
| /// is not necessarily the actual wire format. When the `Status` message is |
| /// exposed in different client libraries and different wire protocols, it can |
| /// be |
| /// mapped differently. For example, it will likely be mapped to some exceptions |
| /// in Java, but more likely mapped to some error codes in C. |
| /// |
| /// # Other uses |
| /// |
| /// The error model and the `Status` message can be used in a variety of |
| /// environments, either with or without APIs, to provide a |
| /// consistent developer experience across different environments. |
| /// |
| /// Example uses of this error model include: |
| /// |
| /// - Partial errors. If a service needs to return partial errors to the client, |
| /// it may embed the `Status` in the normal response to indicate the partial |
| /// errors. |
| /// |
| /// - Workflow errors. A typical workflow has multiple steps. Each step may |
| /// have a `Status` message for error reporting. |
| /// |
| /// - Batch operations. If a client uses batch request and batch response, the |
| /// `Status` message should be used directly inside batch response, one for |
| /// each error sub-response. |
| /// |
| /// - Asynchronous operations. If an API call embeds asynchronous operation |
| /// results in its response, the status of those operations should be |
| /// represented directly using the `Status` message. |
| /// |
| /// - Logging. If some API errors are stored in logs, the message `Status` could |
| /// be used directly after any stripping needed for security/privacy reasons. |
| class Status { |
| /// The status code, which should be an enum value of google.rpc.Code. |
| core.int code; |
| |
| /// A list of messages that carry the error details. There is a common set of |
| /// message types for APIs to use. |
| /// |
| /// 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.List<core.Map<core.String, core.Object>> details; |
| |
| /// 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. |
| core.String message; |
| |
| Status(); |
| |
| Status.fromJson(core.Map _json) { |
| if (_json.containsKey("code")) { |
| code = _json["code"]; |
| } |
| if (_json.containsKey("details")) { |
| details = _json["details"]; |
| } |
| if (_json.containsKey("message")) { |
| message = _json["message"]; |
| } |
| } |
| |
| core.Map<core.String, core.Object> toJson() { |
| final core.Map<core.String, core.Object> _json = |
| new core.Map<core.String, core.Object>(); |
| if (code != null) { |
| _json["code"] = code; |
| } |
| if (details != null) { |
| _json["details"] = details; |
| } |
| if (message != null) { |
| _json["message"] = message; |
| } |
| return _json; |
| } |
| } |