Index: generated/googleapis/lib/servicemanagement/v1.dart |
diff --git a/generated/googleapis/lib/servicemanagement/v1.dart b/generated/googleapis/lib/servicemanagement/v1.dart |
index 46b97a37d9a609e70b7400b0cb8536920351c43f..499540d99bca0c3e40f079078476aefbb86d8501 100644 |
--- a/generated/googleapis/lib/servicemanagement/v1.dart |
+++ b/generated/googleapis/lib/servicemanagement/v1.dart |
@@ -96,10 +96,6 @@ class OperationsResourceApi { |
* |
* Request parameters: |
* |
- * [name] - Not used. |
- * |
- * [pageToken] - The standard list page token. |
- * |
* [pageSize] - The maximum number of operations to return. If unspecified, |
* defaults to |
* 50. The maximum value is 100. |
@@ -126,6 +122,10 @@ class OperationsResourceApi { |
* * `serviceName={some-service}.googleapis.com AND (status=done OR |
* startTime>="2017-02-01")` |
* |
+ * [name] - Not used. |
+ * |
+ * [pageToken] - The standard list page token. |
+ * |
* Completes with a [ListOperationsResponse]. |
* |
* Completes with a [commons.ApiRequestError] if the API endpoint returned an |
@@ -134,7 +134,7 @@ class OperationsResourceApi { |
* If the used [http_1.Client] completes with an error when making a REST |
* call, this method will complete with the same error. |
*/ |
- async.Future<ListOperationsResponse> list({core.String name, core.String pageToken, core.int pageSize, core.String filter}) { |
+ async.Future<ListOperationsResponse> list({core.int pageSize, core.String filter, core.String name, core.String pageToken}) { |
var _url = null; |
var _queryParams = new core.Map(); |
var _uploadMedia = null; |
@@ -142,18 +142,18 @@ class OperationsResourceApi { |
var _downloadOptions = commons.DownloadOptions.Metadata; |
var _body = null; |
- if (name != null) { |
- _queryParams["name"] = [name]; |
- } |
- if (pageToken != null) { |
- _queryParams["pageToken"] = [pageToken]; |
- } |
if (pageSize != null) { |
_queryParams["pageSize"] = ["${pageSize}"]; |
} |
if (filter != null) { |
_queryParams["filter"] = [filter]; |
} |
+ if (name != null) { |
+ _queryParams["name"] = [name]; |
+ } |
+ if (pageToken != null) { |
+ _queryParams["pageToken"] = [pageToken]; |
+ } |
_url = 'v1/operations'; |
@@ -577,8 +577,6 @@ class ServicesResourceApi { |
* |
* Request parameters: |
* |
- * [producerProjectId] - Include services produced by the specified project. |
- * |
* [consumerId] - Include services consumed by the specified consumer. |
* |
* The Google Service Management implementation accepts the following |
@@ -591,6 +589,8 @@ class ServicesResourceApi { |
* |
* [pageSize] - Requested size of the next page of data. |
* |
+ * [producerProjectId] - Include services produced by the specified project. |
+ * |
* Completes with a [ListServicesResponse]. |
* |
* Completes with a [commons.ApiRequestError] if the API endpoint returned an |
@@ -599,7 +599,7 @@ class ServicesResourceApi { |
* If the used [http_1.Client] completes with an error when making a REST |
* call, this method will complete with the same error. |
*/ |
- async.Future<ListServicesResponse> list({core.String producerProjectId, core.String consumerId, core.String pageToken, core.int pageSize}) { |
+ async.Future<ListServicesResponse> list({core.String consumerId, core.String pageToken, core.int pageSize, core.String producerProjectId}) { |
var _url = null; |
var _queryParams = new core.Map(); |
var _uploadMedia = null; |
@@ -607,9 +607,6 @@ class ServicesResourceApi { |
var _downloadOptions = commons.DownloadOptions.Metadata; |
var _body = null; |
- if (producerProjectId != null) { |
- _queryParams["producerProjectId"] = [producerProjectId]; |
- } |
if (consumerId != null) { |
_queryParams["consumerId"] = [consumerId]; |
} |
@@ -619,6 +616,9 @@ class ServicesResourceApi { |
if (pageSize != null) { |
_queryParams["pageSize"] = ["${pageSize}"]; |
} |
+ if (producerProjectId != null) { |
+ _queryParams["producerProjectId"] = [producerProjectId]; |
+ } |
_url = 'v1/services'; |
@@ -1119,10 +1119,10 @@ class ServicesRolloutsResourceApi { |
* [overview](/service-management/overview) |
* for naming requirements. For example: `example.googleapis.com`. |
* |
- * [pageSize] - The max number of items to include in the response list. |
- * |
* [pageToken] - The token of the page to retrieve. |
* |
+ * [pageSize] - The max number of items to include in the response list. |
+ * |
* Completes with a [ListServiceRolloutsResponse]. |
* |
* Completes with a [commons.ApiRequestError] if the API endpoint returned an |
@@ -1131,7 +1131,7 @@ class ServicesRolloutsResourceApi { |
* If the used [http_1.Client] completes with an error when making a REST |
* call, this method will complete with the same error. |
*/ |
- async.Future<ListServiceRolloutsResponse> list(core.String serviceName, {core.int pageSize, core.String pageToken}) { |
+ async.Future<ListServiceRolloutsResponse> list(core.String serviceName, {core.String pageToken, core.int pageSize}) { |
var _url = null; |
var _queryParams = new core.Map(); |
var _uploadMedia = null; |
@@ -1142,12 +1142,12 @@ class ServicesRolloutsResourceApi { |
if (serviceName == null) { |
throw new core.ArgumentError("Parameter serviceName is required."); |
} |
- if (pageSize != null) { |
- _queryParams["pageSize"] = ["${pageSize}"]; |
- } |
if (pageToken != null) { |
_queryParams["pageToken"] = [pageToken]; |
} |
+ if (pageSize != null) { |
+ _queryParams["pageSize"] = ["${pageSize}"]; |
+ } |
_url = 'v1/services/' + commons.Escaper.ecapeVariable('$serviceName') + '/rollouts'; |
@@ -1305,42 +1305,45 @@ class Api { |
* the union of the two AuditConfigs is used for that service: the log_types |
* specified in each AuditConfig are enabled, and the exempted_members in each |
* AuditConfig are exempted. |
+ * |
* Example Policy with multiple AuditConfigs: |
- * { |
- * "audit_configs": [ |
+ * |
* { |
- * "service": "allServices" |
- * "audit_log_configs": [ |
+ * "audit_configs": [ |
* { |
- * "log_type": "DATA_READ", |
- * "exempted_members": [ |
- * "user:foo@gmail.com" |
+ * "service": "allServices" |
+ * "audit_log_configs": [ |
+ * { |
+ * "log_type": "DATA_READ", |
+ * "exempted_members": [ |
+ * "user:foo@gmail.com" |
+ * ] |
+ * }, |
+ * { |
+ * "log_type": "DATA_WRITE", |
+ * }, |
+ * { |
+ * "log_type": "ADMIN_READ", |
+ * } |
* ] |
* }, |
* { |
- * "log_type": "DATA_WRITE", |
- * }, |
- * { |
- * "log_type": "ADMIN_READ", |
- * } |
- * ] |
- * }, |
- * { |
- * "service": "fooservice@googleapis.com" |
- * "audit_log_configs": [ |
- * { |
- * "log_type": "DATA_READ", |
- * }, |
- * { |
- * "log_type": "DATA_WRITE", |
- * "exempted_members": [ |
- * "user:bar@gmail.com" |
+ * "service": "fooservice.googleapis.com" |
+ * "audit_log_configs": [ |
+ * { |
+ * "log_type": "DATA_READ", |
+ * }, |
+ * { |
+ * "log_type": "DATA_WRITE", |
+ * "exempted_members": [ |
+ * "user:bar@gmail.com" |
+ * ] |
+ * } |
* ] |
* } |
* ] |
* } |
- * ] |
- * } |
+ * |
* For fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ |
* logging. It also exempts foo@gmail.com from DATA_READ logging, and |
* bar@gmail.com from DATA_WRITE logging. |
@@ -2874,6 +2877,14 @@ class Endpoint { |
core.List<core.String> features; |
/** The canonical name of this endpoint. */ |
core.String name; |
+ /** |
+ * The specification of an Internet routable address of API frontend that will |
+ * handle requests to this [API |
+ * Endpoint](https://cloud.google.com/apis/design/glossary). |
+ * It should be either a valid IPv4 address or a fully-qualified domain name. |
+ * For example, "8.8.8.8" or "myservice.appspot.com". |
+ */ |
+ core.String target; |
Endpoint(); |
@@ -2893,6 +2904,9 @@ class Endpoint { |
if (_json.containsKey("name")) { |
name = _json["name"]; |
} |
+ if (_json.containsKey("target")) { |
+ target = _json["target"]; |
+ } |
} |
core.Map toJson() { |
@@ -2912,6 +2926,9 @@ class Endpoint { |
if (name != null) { |
_json["name"] = name; |
} |
+ if (target != null) { |
+ _json["target"] = target; |
+ } |
return _json; |
} |
} |
@@ -3200,8 +3217,6 @@ class FlowOperationMetadata { |
* Must be equal to the "name" field for a FlowName enum. |
*/ |
core.String flowName; |
- /** Is the update for the operation persisted? */ |
- core.bool isPersisted; |
/** |
* The full name of the resources that this flow is directly associated with. |
*/ |
@@ -3221,9 +3236,6 @@ class FlowOperationMetadata { |
if (_json.containsKey("flowName")) { |
flowName = _json["flowName"]; |
} |
- if (_json.containsKey("isPersisted")) { |
- isPersisted = _json["isPersisted"]; |
- } |
if (_json.containsKey("resourceNames")) { |
resourceNames = _json["resourceNames"]; |
} |
@@ -3243,9 +3255,6 @@ class FlowOperationMetadata { |
if (flowName != null) { |
_json["flowName"] = flowName; |
} |
- if (isPersisted != null) { |
- _json["isPersisted"] = isPersisted; |
- } |
if (resourceNames != null) { |
_json["resourceNames"] = resourceNames; |
} |
@@ -3378,6 +3387,15 @@ class GetIamPolicyRequest { |
*/ |
class Http { |
/** |
+ * When set to true, URL path parmeters will be fully URI-decoded except in |
+ * cases of single segment matches in reserved expansion, where "%2F" will be |
+ * left encoded. |
+ * |
+ * The default behavior is to not decode RFC 6570 reserved characters in multi |
+ * segment matches. |
+ */ |
+ core.bool fullyDecodeReservedExpansion; |
+ /** |
* A list of HTTP configuration rules that apply to individual API methods. |
* |
* **NOTE:** All service configuration rules follow "last one wins" order. |
@@ -3387,6 +3405,9 @@ class Http { |
Http(); |
Http.fromJson(core.Map _json) { |
+ if (_json.containsKey("fullyDecodeReservedExpansion")) { |
+ fullyDecodeReservedExpansion = _json["fullyDecodeReservedExpansion"]; |
+ } |
if (_json.containsKey("rules")) { |
rules = _json["rules"].map((value) => new HttpRule.fromJson(value)).toList(); |
} |
@@ -3394,6 +3415,9 @@ class Http { |
core.Map toJson() { |
var _json = new core.Map(); |
+ if (fullyDecodeReservedExpansion != null) { |
+ _json["fullyDecodeReservedExpansion"] = fullyDecodeReservedExpansion; |
+ } |
if (rules != null) { |
_json["rules"] = rules.map((value) => (value).toJson()).toList(); |
} |
@@ -4527,6 +4551,53 @@ class MetricDescriptor { |
} |
/** |
+ * Bind API methods to metrics. Binding a method to a metric causes that |
+ * metric's configured quota, billing, and monitoring behaviors to apply to the |
+ * method call. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+class MetricRule { |
+ /** |
+ * Metrics to update when the selected methods are called, and the associated |
+ * cost applied to each metric. |
+ * |
+ * The key of the map is the metric name, and the values are the amount |
+ * increased for the metric against which the quota limits are defined. |
+ * The value must not be negative. |
+ */ |
+ core.Map<core.String, core.String> metricCosts; |
+ /** |
+ * Selects the methods to which this rule applies. |
+ * |
+ * Refer to selector for syntax details. |
+ */ |
+ core.String selector; |
+ |
+ MetricRule(); |
+ |
+ MetricRule.fromJson(core.Map _json) { |
+ if (_json.containsKey("metricCosts")) { |
+ metricCosts = _json["metricCosts"]; |
+ } |
+ if (_json.containsKey("selector")) { |
+ selector = _json["selector"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (metricCosts != null) { |
+ _json["metricCosts"] = metricCosts; |
+ } |
+ if (selector != null) { |
+ _json["selector"] = selector; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
* Declares an API to be included in this API. The including API must |
* redeclare all the methods from the included API, but documentation |
* and options are inherited as follows: |
@@ -5259,6 +5330,328 @@ class Policy { |
} |
/** |
+ * Quota configuration helps to achieve fairness and budgeting in service |
+ * usage. |
+ * |
+ * The quota configuration works this way: |
+ * - The service configuration defines a set of metrics. |
+ * - For API calls, the quota.metric_rules maps methods to metrics with |
+ * corresponding costs. |
+ * - The quota.limits defines limits on the metrics, which will be used for |
+ * quota checks at runtime. |
+ * |
+ * An example quota configuration in yaml format: |
+ * |
+ * quota: |
+ * |
+ * - name: apiWriteQpsPerProject |
+ * metric: library.googleapis.com/write_calls |
+ * unit: "1/min/{project}" # rate limit for consumer projects |
+ * values: |
+ * STANDARD: 10000 |
+ * |
+ * |
+ * # The metric rules bind all methods to the read_calls metric, |
+ * # except for the UpdateBook and DeleteBook methods. These two methods |
+ * # are mapped to the write_calls metric, with the UpdateBook method |
+ * # consuming at twice rate as the DeleteBook method. |
+ * metric_rules: |
+ * - selector: "*" |
+ * metric_costs: |
+ * library.googleapis.com/read_calls: 1 |
+ * - selector: google.example.library.v1.LibraryService.UpdateBook |
+ * metric_costs: |
+ * library.googleapis.com/write_calls: 2 |
+ * - selector: google.example.library.v1.LibraryService.DeleteBook |
+ * metric_costs: |
+ * library.googleapis.com/write_calls: 1 |
+ * |
+ * Corresponding Metric definition: |
+ * |
+ * metrics: |
+ * - name: library.googleapis.com/read_calls |
+ * display_name: Read requests |
+ * metric_kind: DELTA |
+ * value_type: INT64 |
+ * |
+ * - name: library.googleapis.com/write_calls |
+ * display_name: Write requests |
+ * metric_kind: DELTA |
+ * value_type: INT64 |
+ */ |
+class Quota { |
+ /** |
+ * List of `QuotaLimit` definitions for the service. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+ core.List<QuotaLimit> limits; |
+ /** |
+ * List of `MetricRule` definitions, each one mapping a selected method to one |
+ * or more metrics. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+ core.List<MetricRule> metricRules; |
+ |
+ Quota(); |
+ |
+ Quota.fromJson(core.Map _json) { |
+ if (_json.containsKey("limits")) { |
+ limits = _json["limits"].map((value) => new QuotaLimit.fromJson(value)).toList(); |
+ } |
+ if (_json.containsKey("metricRules")) { |
+ metricRules = _json["metricRules"].map((value) => new MetricRule.fromJson(value)).toList(); |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (limits != null) { |
+ _json["limits"] = limits.map((value) => (value).toJson()).toList(); |
+ } |
+ if (metricRules != null) { |
+ _json["metricRules"] = metricRules.map((value) => (value).toJson()).toList(); |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
+ * `QuotaLimit` defines a specific limit that applies over a specified duration |
+ * for a limit type. There can be at most one limit for a duration and limit |
+ * type combination defined within a `QuotaGroup`. |
+ */ |
+class QuotaLimit { |
+ /** |
+ * Default number of tokens that can be consumed during the specified |
+ * duration. This is the number of tokens assigned when a client |
+ * application developer activates the service for his/her project. |
+ * |
+ * Specifying a value of 0 will block all requests. This can be used if you |
+ * are provisioning quota to selected consumers and blocking others. |
+ * Similarly, a value of -1 will indicate an unlimited quota. No other |
+ * negative values are allowed. |
+ * |
+ * Used by group-based quotas only. |
+ */ |
+ core.String defaultLimit; |
+ /** |
+ * Optional. User-visible, extended description for this quota limit. |
+ * Should be used only when more context is needed to understand this limit |
+ * than provided by the limit's display name (see: `display_name`). |
+ */ |
+ core.String description; |
+ /** |
+ * User-visible display name for this limit. |
+ * Optional. If not set, the UI will provide a default display name based on |
+ * the quota configuration. This field can be used to override the default |
+ * display name generated from the configuration. |
+ */ |
+ core.String displayName; |
+ /** |
+ * Duration of this limit in textual notation. Example: "100s", "24h", "1d". |
+ * For duration longer than a day, only multiple of days is supported. We |
+ * support only "100s" and "1d" for now. Additional support will be added in |
+ * the future. "0" indicates indefinite duration. |
+ * |
+ * Used by group-based quotas only. |
+ */ |
+ core.String duration; |
+ /** |
+ * Free tier value displayed in the Developers Console for this limit. |
+ * The free tier is the number of tokens that will be subtracted from the |
+ * billed amount when billing is enabled. |
+ * This field can only be set on a limit with duration "1d", in a billable |
+ * group; it is invalid on any other limit. If this field is not set, it |
+ * defaults to 0, indicating that there is no free tier for this service. |
+ * |
+ * Used by group-based quotas only. |
+ */ |
+ core.String freeTier; |
+ /** |
+ * Maximum number of tokens that can be consumed during the specified |
+ * duration. Client application developers can override the default limit up |
+ * to this maximum. If specified, this value cannot be set to a value less |
+ * than the default limit. If not specified, it is set to the default limit. |
+ * |
+ * To allow clients to apply overrides with no upper bound, set this to -1, |
+ * indicating unlimited maximum quota. |
+ * |
+ * Used by group-based quotas only. |
+ */ |
+ core.String maxLimit; |
+ /** |
+ * The name of the metric this quota limit applies to. The quota limits with |
+ * the same metric will be checked together during runtime. The metric must be |
+ * defined within the service config. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+ core.String metric; |
+ /** |
+ * Name of the quota limit. The name is used to refer to the limit when |
+ * overriding the default limit on per-consumer basis. |
+ * |
+ * For group-based quota limits, the name must be unique within the quota |
+ * group. If a name is not provided, it will be generated from the limit_by |
+ * and duration fields. |
+ * |
+ * For metric-based quota limits, the name must be provided, and it must be |
+ * unique within the service. The name can only include alphanumeric |
+ * characters as well as '-'. |
+ * |
+ * The maximum length of the limit name is 64 characters. |
+ * |
+ * The name of a limit is used as a unique identifier for this limit. |
+ * Therefore, once a limit has been put into use, its name should be |
+ * immutable. You can use the display_name field to provide a user-friendly |
+ * name for the limit. The display name can be evolved over time without |
+ * affecting the identity of the limit. |
+ */ |
+ core.String name; |
+ /** |
+ * Specify the unit of the quota limit. It uses the same syntax as |
+ * Metric.unit. The supported unit kinds are determined by the quota |
+ * backend system. |
+ * |
+ * The [Google Service Control](https://cloud.google.com/service-control) |
+ * supports the following unit components: |
+ * * One of the time intevals: |
+ * * "/min" for quota every minute. |
+ * * "/d" for quota every 24 hours, starting 00:00 US Pacific Time. |
+ * * Otherwise the quota won't be reset by time, such as storage limit. |
+ * * One and only one of the granted containers: |
+ * * "/{organization}" quota for an organization. |
+ * * "/{project}" quota for a project. |
+ * * "/{folder}" quota for a folder. |
+ * * "/{resource}" quota for a universal resource. |
+ * * Zero or more quota segmentation dimension. Not all combos are valid. |
+ * * "/{region}" quota for every region. Not to be used with time intervals. |
+ * * Otherwise the resources granted on the target is not segmented. |
+ * * "/{zone}" quota for every zone. Not to be used with time intervals. |
+ * * Otherwise the resources granted on the target is not segmented. |
+ * * "/{resource}" quota for a resource associated with a project or org. |
+ * |
+ * Here are some examples: |
+ * * "1/min/{project}" for quota per minute per project. |
+ * * "1/min/{user}" for quota per minute per user. |
+ * * "1/min/{organization}" for quota per minute per organization. |
+ * |
+ * Note: the order of unit components is insignificant. |
+ * The "1" at the beginning is required to follow the metric unit syntax. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+ core.String unit; |
+ /** |
+ * Tiered limit values. Also allows for regional or zone overrides for these |
+ * values if "/{region}" or "/{zone}" is specified in the unit field. |
+ * |
+ * Currently supported tiers from low to high: |
+ * VERY_LOW, LOW, STANDARD, HIGH, VERY_HIGH |
+ * |
+ * To apply different limit values for users according to their tiers, specify |
+ * the values for the tiers you want to differentiate. For example: |
+ * {LOW:100, STANDARD:500, HIGH:1000, VERY_HIGH:5000} |
+ * |
+ * The limit value for each tier is optional except for the tier STANDARD. |
+ * The limit value for an unspecified tier falls to the value of its next |
+ * tier towards tier STANDARD. For the above example, the limit value for tier |
+ * STANDARD is 500. |
+ * |
+ * To apply the same limit value for all users, just specify limit value for |
+ * tier STANDARD. For example: {STANDARD:500}. |
+ * |
+ * To apply a regional overide for a tier, add a map entry with key |
+ * "<TIER>/<region>", where <region> is a region name. Similarly, for a zone |
+ * override, add a map entry with key "<TIER>/{zone}". |
+ * Further, a wildcard can be used at the end of a zone name in order to |
+ * specify zone level overrides. For example: |
+ * LOW: 10, STANDARD: 50, HIGH: 100, |
+ * LOW/us-central1: 20, STANDARD/us-central1: 60, HIGH/us-central1: 200, |
+ * LOW/us-central1-*: 10, STANDARD/us-central1-*: 20, HIGH/us-central1-*: 80 |
+ * |
+ * The regional overrides tier set for each region must be the same as |
+ * the tier set for default limit values. Same rule applies for zone overrides |
+ * tier as well. |
+ * |
+ * Used by metric-based quotas only. |
+ */ |
+ core.Map<core.String, core.String> values; |
+ |
+ QuotaLimit(); |
+ |
+ QuotaLimit.fromJson(core.Map _json) { |
+ if (_json.containsKey("defaultLimit")) { |
+ defaultLimit = _json["defaultLimit"]; |
+ } |
+ if (_json.containsKey("description")) { |
+ description = _json["description"]; |
+ } |
+ if (_json.containsKey("displayName")) { |
+ displayName = _json["displayName"]; |
+ } |
+ if (_json.containsKey("duration")) { |
+ duration = _json["duration"]; |
+ } |
+ if (_json.containsKey("freeTier")) { |
+ freeTier = _json["freeTier"]; |
+ } |
+ if (_json.containsKey("maxLimit")) { |
+ maxLimit = _json["maxLimit"]; |
+ } |
+ if (_json.containsKey("metric")) { |
+ metric = _json["metric"]; |
+ } |
+ if (_json.containsKey("name")) { |
+ name = _json["name"]; |
+ } |
+ if (_json.containsKey("unit")) { |
+ unit = _json["unit"]; |
+ } |
+ if (_json.containsKey("values")) { |
+ values = _json["values"]; |
+ } |
+ } |
+ |
+ core.Map toJson() { |
+ var _json = new core.Map(); |
+ if (defaultLimit != null) { |
+ _json["defaultLimit"] = defaultLimit; |
+ } |
+ if (description != null) { |
+ _json["description"] = description; |
+ } |
+ if (displayName != null) { |
+ _json["displayName"] = displayName; |
+ } |
+ if (duration != null) { |
+ _json["duration"] = duration; |
+ } |
+ if (freeTier != null) { |
+ _json["freeTier"] = freeTier; |
+ } |
+ if (maxLimit != null) { |
+ _json["maxLimit"] = maxLimit; |
+ } |
+ if (metric != null) { |
+ _json["metric"] = metric; |
+ } |
+ if (name != null) { |
+ _json["name"] = name; |
+ } |
+ if (unit != null) { |
+ _json["unit"] = unit; |
+ } |
+ if (values != null) { |
+ _json["values"] = values; |
+ } |
+ return _json; |
+ } |
+} |
+ |
+/** |
* A rollout resource that defines how service configuration versions are pushed |
* to control plane systems. Typically, you create a new version of the |
* service config, and then create a Rollout to push the service config. |
@@ -5562,6 +5955,8 @@ class Service { |
* manage consumption of the service, etc. |
*/ |
core.String producerProjectId; |
+ /** Quota configuration. */ |
+ Quota quota; |
/** |
* Output only. The source information for this configuration if available. |
*/ |
@@ -5657,6 +6052,9 @@ class Service { |
if (_json.containsKey("producerProjectId")) { |
producerProjectId = _json["producerProjectId"]; |
} |
+ if (_json.containsKey("quota")) { |
+ quota = new Quota.fromJson(_json["quota"]); |
+ } |
if (_json.containsKey("sourceInfo")) { |
sourceInfo = new SourceInfo.fromJson(_json["sourceInfo"]); |
} |
@@ -5742,6 +6140,9 @@ class Service { |
if (producerProjectId != null) { |
_json["producerProjectId"] = producerProjectId; |
} |
+ if (quota != null) { |
+ _json["quota"] = (quota).toJson(); |
+ } |
if (sourceInfo != null) { |
_json["sourceInfo"] = (sourceInfo).toJson(); |
} |