| Index: generated/googleapis/lib/compute/v1.dart | 
| diff --git a/generated/googleapis/lib/compute/v1.dart b/generated/googleapis/lib/compute/v1.dart | 
| index 5fc0327af57a70016de068c1544bd2f8cb80a4ab..c748a6118604dc44ca4f22f8f8348e2111134c55 100644 | 
| --- a/generated/googleapis/lib/compute/v1.dart | 
| +++ b/generated/googleapis/lib/compute/v1.dart | 
| @@ -37,6 +37,7 @@ class ComputeApi { | 
|  | 
| final commons.ApiRequester _requester; | 
|  | 
| +  AcceleratorTypesResourceApi get acceleratorTypes => new AcceleratorTypesResourceApi(_requester); | 
| AddressesResourceApi get addresses => new AddressesResourceApi(_requester); | 
| AutoscalersResourceApi get autoscalers => new AutoscalersResourceApi(_requester); | 
| BackendBucketsResourceApi get backendBuckets => new BackendBucketsResourceApi(_requester); | 
| @@ -62,6 +63,7 @@ class ComputeApi { | 
| ProjectsResourceApi get projects => new ProjectsResourceApi(_requester); | 
| RegionAutoscalersResourceApi get regionAutoscalers => new RegionAutoscalersResourceApi(_requester); | 
| RegionBackendServicesResourceApi get regionBackendServices => new RegionBackendServicesResourceApi(_requester); | 
| +  RegionCommitmentsResourceApi get regionCommitments => new RegionCommitmentsResourceApi(_requester); | 
| RegionInstanceGroupManagersResourceApi get regionInstanceGroupManagers => new RegionInstanceGroupManagersResourceApi(_requester); | 
| RegionInstanceGroupsResourceApi get regionInstanceGroups => new RegionInstanceGroupsResourceApi(_requester); | 
| RegionOperationsResourceApi get regionOperations => new RegionOperationsResourceApi(_requester); | 
| @@ -88,6 +90,273 @@ class ComputeApi { | 
| } | 
|  | 
|  | 
| +class AcceleratorTypesResourceApi { | 
| +  final commons.ApiRequester _requester; | 
| + | 
| +  AcceleratorTypesResourceApi(commons.ApiRequester client) : | 
| +      _requester = client; | 
| + | 
| +  /** | 
| +   * Retrieves an aggregated list of accelerator types. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [filter] - Sets a filter {expression} for filtering listed resources. Your | 
| +   * {expression} must be in the format: field_name comparison_string | 
| +   * literal_string. | 
| +   * | 
| +   * The field_name is the name of the field you want to compare. Only atomic | 
| +   * field types are supported (string, number, boolean). The comparison_string | 
| +   * must be either eq (equals) or ne (not equals). The literal_string is the | 
| +   * string value to filter to. The literal value must be valid for the type of | 
| +   * field you are filtering by (string, number, boolean). For string fields, | 
| +   * the literal value is interpreted as a regular expression using RE2 syntax. | 
| +   * The literal value must match the entire field. | 
| +   * | 
| +   * For example, to filter for instances that do not have a name of | 
| +   * example-instance, you would use name ne example-instance. | 
| +   * | 
| +   * You can filter on nested fields. For example, you could filter on instances | 
| +   * that have set the scheduling.automaticRestart field to true. Use filtering | 
| +   * on nested fields to take advantage of labels to organize and search for | 
| +   * results based on label values. | 
| +   * | 
| +   * To filter on multiple expressions, provide each separate expression within | 
| +   * parentheses. For example, (scheduling.automaticRestart eq true) (zone eq | 
| +   * us-central1-f). Multiple expressions are treated as AND expressions, | 
| +   * meaning that resources must match all expressions to pass the filters. | 
| +   * | 
| +   * [maxResults] - The maximum number of results per page that should be | 
| +   * returned. If the number of available results is larger than maxResults, | 
| +   * Compute Engine returns a nextPageToken that can be used to get the next | 
| +   * page of results in subsequent list requests. Acceptable values are 0 to | 
| +   * 500, inclusive. (Default: 500) | 
| +   * | 
| +   * [orderBy] - Sorts list results by a certain order. By default, results are | 
| +   * returned in alphanumerical order based on the resource name. | 
| +   * | 
| +   * You can also sort results in descending order based on the creation | 
| +   * timestamp using orderBy="creationTimestamp desc". This sorts results based | 
| +   * on the creationTimestamp field in reverse chronological order (newest | 
| +   * result first). Use this to sort resources like operations so that the | 
| +   * newest operation is returned first. | 
| +   * | 
| +   * Currently, only sorting by name or creationTimestamp desc is supported. | 
| +   * | 
| +   * [pageToken] - Specifies a page token to use. Set pageToken to the | 
| +   * nextPageToken returned by a previous list request to get the next page of | 
| +   * results. | 
| +   * | 
| +   * Completes with a [AcceleratorTypeAggregatedList]. | 
| +   * | 
| +   * 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<AcceleratorTypeAggregatedList> aggregatedList(core.String project, {core.String filter, core.int maxResults, core.String orderBy, core.String pageToken}) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (filter != null) { | 
| +      _queryParams["filter"] = [filter]; | 
| +    } | 
| +    if (maxResults != null) { | 
| +      _queryParams["maxResults"] = ["${maxResults}"]; | 
| +    } | 
| +    if (orderBy != null) { | 
| +      _queryParams["orderBy"] = [orderBy]; | 
| +    } | 
| +    if (pageToken != null) { | 
| +      _queryParams["pageToken"] = [pageToken]; | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/acceleratorTypes'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new AcceleratorTypeAggregatedList.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Returns the specified accelerator type. Get a list of available accelerator | 
| +   * types by making a list() request. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [zone] - The name of the zone for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| +   * | 
| +   * [acceleratorType] - Name of the accelerator type to return. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| +   * | 
| +   * Completes with a [AcceleratorType]. | 
| +   * | 
| +   * 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<AcceleratorType> get(core.String project, core.String zone, core.String acceleratorType) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (zone == null) { | 
| +      throw new core.ArgumentError("Parameter zone is required."); | 
| +    } | 
| +    if (acceleratorType == null) { | 
| +      throw new core.ArgumentError("Parameter acceleratorType is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/zones/' + commons.Escaper.ecapeVariable('$zone') + '/acceleratorTypes/' + commons.Escaper.ecapeVariable('$acceleratorType'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new AcceleratorType.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Retrieves a list of accelerator types available to the specified project. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [zone] - The name of the zone for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| +   * | 
| +   * [filter] - Sets a filter {expression} for filtering listed resources. Your | 
| +   * {expression} must be in the format: field_name comparison_string | 
| +   * literal_string. | 
| +   * | 
| +   * The field_name is the name of the field you want to compare. Only atomic | 
| +   * field types are supported (string, number, boolean). The comparison_string | 
| +   * must be either eq (equals) or ne (not equals). The literal_string is the | 
| +   * string value to filter to. The literal value must be valid for the type of | 
| +   * field you are filtering by (string, number, boolean). For string fields, | 
| +   * the literal value is interpreted as a regular expression using RE2 syntax. | 
| +   * The literal value must match the entire field. | 
| +   * | 
| +   * For example, to filter for instances that do not have a name of | 
| +   * example-instance, you would use name ne example-instance. | 
| +   * | 
| +   * You can filter on nested fields. For example, you could filter on instances | 
| +   * that have set the scheduling.automaticRestart field to true. Use filtering | 
| +   * on nested fields to take advantage of labels to organize and search for | 
| +   * results based on label values. | 
| +   * | 
| +   * To filter on multiple expressions, provide each separate expression within | 
| +   * parentheses. For example, (scheduling.automaticRestart eq true) (zone eq | 
| +   * us-central1-f). Multiple expressions are treated as AND expressions, | 
| +   * meaning that resources must match all expressions to pass the filters. | 
| +   * | 
| +   * [maxResults] - The maximum number of results per page that should be | 
| +   * returned. If the number of available results is larger than maxResults, | 
| +   * Compute Engine returns a nextPageToken that can be used to get the next | 
| +   * page of results in subsequent list requests. Acceptable values are 0 to | 
| +   * 500, inclusive. (Default: 500) | 
| +   * | 
| +   * [orderBy] - Sorts list results by a certain order. By default, results are | 
| +   * returned in alphanumerical order based on the resource name. | 
| +   * | 
| +   * You can also sort results in descending order based on the creation | 
| +   * timestamp using orderBy="creationTimestamp desc". This sorts results based | 
| +   * on the creationTimestamp field in reverse chronological order (newest | 
| +   * result first). Use this to sort resources like operations so that the | 
| +   * newest operation is returned first. | 
| +   * | 
| +   * Currently, only sorting by name or creationTimestamp desc is supported. | 
| +   * | 
| +   * [pageToken] - Specifies a page token to use. Set pageToken to the | 
| +   * nextPageToken returned by a previous list request to get the next page of | 
| +   * results. | 
| +   * | 
| +   * Completes with a [AcceleratorTypeList]. | 
| +   * | 
| +   * 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<AcceleratorTypeList> list(core.String project, core.String zone, {core.String filter, core.int maxResults, core.String orderBy, core.String pageToken}) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (zone == null) { | 
| +      throw new core.ArgumentError("Parameter zone is required."); | 
| +    } | 
| +    if (filter != null) { | 
| +      _queryParams["filter"] = [filter]; | 
| +    } | 
| +    if (maxResults != null) { | 
| +      _queryParams["maxResults"] = ["${maxResults}"]; | 
| +    } | 
| +    if (orderBy != null) { | 
| +      _queryParams["orderBy"] = [orderBy]; | 
| +    } | 
| +    if (pageToken != null) { | 
| +      _queryParams["pageToken"] = [pageToken]; | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/zones/' + commons.Escaper.ecapeVariable('$zone') + '/acceleratorTypes'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new AcceleratorTypeList.fromJson(data)); | 
| +  } | 
| + | 
| +} | 
| + | 
| + | 
| class AddressesResourceApi { | 
| final commons.ApiRequester _requester; | 
|  | 
| @@ -832,7 +1101,8 @@ class AutoscalersResourceApi { | 
|  | 
| /** | 
| * Updates an autoscaler in the specified project using the data included in | 
| -   * the request. This method supports patch semantics. | 
| +   * the request. This method supports PATCH semantics and uses the JSON merge | 
| +   * patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -1201,7 +1471,8 @@ class BackendBucketsResourceApi { | 
|  | 
| /** | 
| * Updates the specified BackendBucket resource with the data included in the | 
| -   * request. This method supports patch semantics. | 
| +   * request. This method supports PATCH semantics and uses the JSON merge patch | 
| +   * format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -1715,7 +1986,8 @@ class BackendServicesResourceApi { | 
| * Patches the specified BackendService resource with the data included in the | 
| * request. There are several restrictions and guidelines to keep in mind when | 
| * updating a backend service. Read  Restrictions and Guidelines for more | 
| -   * information. This method supports patch semantics. | 
| +   * information. This method supports PATCH semantics and uses the JSON merge | 
| +   * patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -4553,7 +4825,8 @@ class HealthChecksResourceApi { | 
|  | 
| /** | 
| * Updates a HealthCheck resource in the specified project using the data | 
| -   * included in the request. This method supports patch semantics. | 
| +   * included in the request. This method supports PATCH semantics and uses the | 
| +   * JSON merge patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -4910,7 +5183,8 @@ class HttpHealthChecksResourceApi { | 
|  | 
| /** | 
| * Updates a HttpHealthCheck resource in the specified project using the data | 
| -   * included in the request. This method supports patch semantics. | 
| +   * included in the request. This method supports PATCH semantics and uses the | 
| +   * JSON merge patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -5267,7 +5541,8 @@ class HttpsHealthChecksResourceApi { | 
|  | 
| /** | 
| * Updates a HttpsHealthCheck resource in the specified project using the data | 
| -   * included in the request. This method supports patch semantics. | 
| +   * included in the request. This method supports PATCH semantics and uses the | 
| +   * JSON merge patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -5589,6 +5864,8 @@ class ImagesResourceApi { | 
| * Value must have pattern | 
| * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| * | 
| +   * [forceCreate] - Force image creation if true. | 
| +   * | 
| * Completes with a [Operation]. | 
| * | 
| * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| @@ -5597,7 +5874,7 @@ class ImagesResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<Operation> insert(Image request, core.String project) { | 
| +  async.Future<Operation> insert(Image request, core.String project, {core.bool forceCreate}) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -5611,6 +5888,9 @@ class ImagesResourceApi { | 
| if (project == null) { | 
| throw new core.ArgumentError("Parameter project is required."); | 
| } | 
| +    if (forceCreate != null) { | 
| +      _queryParams["forceCreate"] = ["${forceCreate}"]; | 
| +    } | 
|  | 
| _url = commons.Escaper.ecapeVariable('$project') + '/global/images'; | 
|  | 
| @@ -8417,8 +8697,8 @@ class InstancesResourceApi { | 
| } | 
|  | 
| /** | 
| -   * Changes the machine type for a stopped instance to the machine type | 
| -   * specified in the request. | 
| +   * Changes the number and/or type of accelerator for a stopped instance to the | 
| +   * values specified in the request. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -8442,7 +8722,7 @@ class InstancesResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<Operation> setMachineType(InstancesSetMachineTypeRequest request, core.String project, core.String zone, core.String instance) { | 
| +  async.Future<Operation> setMachineResources(InstancesSetMachineResourcesRequest request, core.String project, core.String zone, core.String instance) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -8463,7 +8743,7 @@ class InstancesResourceApi { | 
| throw new core.ArgumentError("Parameter instance is required."); | 
| } | 
|  | 
| -    _url = commons.Escaper.ecapeVariable('$project') + '/zones/' + commons.Escaper.ecapeVariable('$zone') + '/instances/' + commons.Escaper.ecapeVariable('$instance') + '/setMachineType'; | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/zones/' + commons.Escaper.ecapeVariable('$zone') + '/instances/' + commons.Escaper.ecapeVariable('$instance') + '/setMachineResources'; | 
|  | 
| var _response = _requester.request(_url, | 
| "POST", | 
| @@ -8476,9 +8756,68 @@ class InstancesResourceApi { | 
| } | 
|  | 
| /** | 
| -   * Sets metadata for the specified instance to the data included in the | 
| -   * request. | 
| -   * | 
| +   * Changes the machine type for a stopped instance to the machine type | 
| +   * specified in the request. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [zone] - The name of the zone for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| +   * | 
| +   * [instance] - Name of the instance scoping this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| +   * | 
| +   * Completes with a [Operation]. | 
| +   * | 
| +   * 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<Operation> setMachineType(InstancesSetMachineTypeRequest request, core.String project, core.String zone, core.String instance) { | 
| +    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 (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (zone == null) { | 
| +      throw new core.ArgumentError("Parameter zone is required."); | 
| +    } | 
| +    if (instance == null) { | 
| +      throw new core.ArgumentError("Parameter instance is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/zones/' + commons.Escaper.ecapeVariable('$zone') + '/instances/' + commons.Escaper.ecapeVariable('$instance') + '/setMachineType'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Operation.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Sets metadata for the specified instance to the data included in the | 
| +   * request. | 
| +   * | 
| * [request] - The metadata request object. | 
| * | 
| * Request parameters: | 
| @@ -8890,8 +9229,7 @@ class LicensesResourceApi { | 
| _requester = client; | 
|  | 
| /** | 
| -   * Returns the specified License resource. Get a list of available licenses by | 
| -   * making a list() request. | 
| +   * Returns the specified License resource. | 
| * | 
| * Request parameters: | 
| * | 
| @@ -10463,7 +10801,8 @@ class RegionAutoscalersResourceApi { | 
|  | 
| /** | 
| * Updates an autoscaler in the specified project using the data included in | 
| -   * the request. This method supports patch semantics. | 
| +   * the request. This method supports PATCH semantics and uses the JSON merge | 
| +   * patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -10918,7 +11257,8 @@ class RegionBackendServicesResourceApi { | 
| * Updates the specified regional BackendService resource with the data | 
| * included in the request. There are several restrictions and guidelines to | 
| * keep in mind when updating a backend service. Read  Restrictions and | 
| -   * Guidelines for more information. This method supports patch semantics. | 
| +   * Guidelines for more information. This method supports PATCH semantics and | 
| +   * uses the JSON merge patch format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -11039,29 +11379,14 @@ class RegionBackendServicesResourceApi { | 
| } | 
|  | 
|  | 
| -class RegionInstanceGroupManagersResourceApi { | 
| +class RegionCommitmentsResourceApi { | 
| final commons.ApiRequester _requester; | 
|  | 
| -  RegionInstanceGroupManagersResourceApi(commons.ApiRequester client) : | 
| +  RegionCommitmentsResourceApi(commons.ApiRequester client) : | 
| _requester = client; | 
|  | 
| /** | 
| -   * Schedules a group action to remove the specified instances from the managed | 
| -   * instance group. Abandoning an instance does not delete the instance, but it | 
| -   * does remove the instance from any target pools that are applied by the | 
| -   * managed instance group. This method reduces the targetSize of the managed | 
| -   * instance group by the number of instances that you abandon. This operation | 
| -   * is marked as DONE when the action is scheduled even if the instances have | 
| -   * not yet been removed from the group. You must separately verify the status | 
| -   * of the abandoning action with the listmanagedinstances method. | 
| -   * | 
| -   * If the group is part of a backend service that has enabled connection | 
| -   * draining, it can take up to 60 seconds after the connection draining | 
| -   * duration has elapsed before the VM instance is removed or deleted. | 
| -   * | 
| -   * You can specify a maximum of 1000 instances with this method per request. | 
| -   * | 
| -   * [request] - The metadata request object. | 
| +   * Retrieves an aggregated list of commitments. | 
| * | 
| * Request parameters: | 
| * | 
| @@ -11069,11 +11394,53 @@ class RegionInstanceGroupManagersResourceApi { | 
| * Value must have pattern | 
| * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| * | 
| -   * [region] - Name of the region scoping this request. | 
| +   * [filter] - Sets a filter {expression} for filtering listed resources. Your | 
| +   * {expression} must be in the format: field_name comparison_string | 
| +   * literal_string. | 
| * | 
| -   * [instanceGroupManager] - Name of the managed instance group. | 
| +   * The field_name is the name of the field you want to compare. Only atomic | 
| +   * field types are supported (string, number, boolean). The comparison_string | 
| +   * must be either eq (equals) or ne (not equals). The literal_string is the | 
| +   * string value to filter to. The literal value must be valid for the type of | 
| +   * field you are filtering by (string, number, boolean). For string fields, | 
| +   * the literal value is interpreted as a regular expression using RE2 syntax. | 
| +   * The literal value must match the entire field. | 
| * | 
| -   * Completes with a [Operation]. | 
| +   * For example, to filter for instances that do not have a name of | 
| +   * example-instance, you would use name ne example-instance. | 
| +   * | 
| +   * You can filter on nested fields. For example, you could filter on instances | 
| +   * that have set the scheduling.automaticRestart field to true. Use filtering | 
| +   * on nested fields to take advantage of labels to organize and search for | 
| +   * results based on label values. | 
| +   * | 
| +   * To filter on multiple expressions, provide each separate expression within | 
| +   * parentheses. For example, (scheduling.automaticRestart eq true) (zone eq | 
| +   * us-central1-f). Multiple expressions are treated as AND expressions, | 
| +   * meaning that resources must match all expressions to pass the filters. | 
| +   * | 
| +   * [maxResults] - The maximum number of results per page that should be | 
| +   * returned. If the number of available results is larger than maxResults, | 
| +   * Compute Engine returns a nextPageToken that can be used to get the next | 
| +   * page of results in subsequent list requests. Acceptable values are 0 to | 
| +   * 500, inclusive. (Default: 500) | 
| +   * | 
| +   * [orderBy] - Sorts list results by a certain order. By default, results are | 
| +   * returned in alphanumerical order based on the resource name. | 
| +   * | 
| +   * You can also sort results in descending order based on the creation | 
| +   * timestamp using orderBy="creationTimestamp desc". This sorts results based | 
| +   * on the creationTimestamp field in reverse chronological order (newest | 
| +   * result first). Use this to sort resources like operations so that the | 
| +   * newest operation is returned first. | 
| +   * | 
| +   * Currently, only sorting by name or creationTimestamp desc is supported. | 
| +   * | 
| +   * [pageToken] - Specifies a page token to use. Set pageToken to the | 
| +   * nextPageToken returned by a previous list request to get the next page of | 
| +   * results. | 
| +   * | 
| +   * Completes with a [CommitmentAggregatedList]. | 
| * | 
| * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| * error. | 
| @@ -11081,7 +11448,7 @@ class RegionInstanceGroupManagersResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<Operation> abandonInstances(RegionInstanceGroupManagersAbandonInstancesRequest request, core.String project, core.String region, core.String instanceGroupManager) { | 
| +  async.Future<CommitmentAggregatedList> aggregatedList(core.String project, {core.String filter, core.int maxResults, core.String orderBy, core.String pageToken}) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -11089,34 +11456,37 @@ class RegionInstanceGroupManagersResourceApi { | 
| var _downloadOptions = commons.DownloadOptions.Metadata; | 
| var _body = null; | 
|  | 
| -    if (request != null) { | 
| -      _body = convert.JSON.encode((request).toJson()); | 
| -    } | 
| if (project == null) { | 
| throw new core.ArgumentError("Parameter project is required."); | 
| } | 
| -    if (region == null) { | 
| -      throw new core.ArgumentError("Parameter region is required."); | 
| +    if (filter != null) { | 
| +      _queryParams["filter"] = [filter]; | 
| } | 
| -    if (instanceGroupManager == null) { | 
| -      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    if (maxResults != null) { | 
| +      _queryParams["maxResults"] = ["${maxResults}"]; | 
| +    } | 
| +    if (orderBy != null) { | 
| +      _queryParams["orderBy"] = [orderBy]; | 
| +    } | 
| +    if (pageToken != null) { | 
| +      _queryParams["pageToken"] = [pageToken]; | 
| } | 
|  | 
| -    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager') + '/abandonInstances'; | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/aggregated/commitments'; | 
|  | 
| var _response = _requester.request(_url, | 
| -                                       "POST", | 
| +                                       "GET", | 
| body: _body, | 
| queryParams: _queryParams, | 
| uploadOptions: _uploadOptions, | 
| uploadMedia: _uploadMedia, | 
| downloadOptions: _downloadOptions); | 
| -    return _response.then((data) => new Operation.fromJson(data)); | 
| +    return _response.then((data) => new CommitmentAggregatedList.fromJson(data)); | 
| } | 
|  | 
| /** | 
| -   * Deletes the specified managed instance group and all of the instances in | 
| -   * that group. | 
| +   * Returns the specified commitment resource. Get a list of available | 
| +   * commitments by making a list() request. | 
| * | 
| * Request parameters: | 
| * | 
| @@ -11124,11 +11494,13 @@ class RegionInstanceGroupManagersResourceApi { | 
| * Value must have pattern | 
| * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| * | 
| -   * [region] - Name of the region scoping this request. | 
| +   * [region] - Name of the region for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| * | 
| -   * [instanceGroupManager] - Name of the managed instance group to delete. | 
| +   * [commitment] - Name of the commitment to return. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| * | 
| -   * Completes with a [Operation]. | 
| +   * Completes with a [Commitment]. | 
| * | 
| * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| * error. | 
| @@ -11136,7 +11508,7 @@ class RegionInstanceGroupManagersResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<Operation> delete(core.String project, core.String region, core.String instanceGroupManager) { | 
| +  async.Future<Commitment> get(core.String project, core.String region, core.String commitment) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -11150,36 +11522,25 @@ class RegionInstanceGroupManagersResourceApi { | 
| if (region == null) { | 
| throw new core.ArgumentError("Parameter region is required."); | 
| } | 
| -    if (instanceGroupManager == null) { | 
| -      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    if (commitment == null) { | 
| +      throw new core.ArgumentError("Parameter commitment is required."); | 
| } | 
|  | 
| -    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager'); | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/commitments/' + commons.Escaper.ecapeVariable('$commitment'); | 
|  | 
| var _response = _requester.request(_url, | 
| -                                       "DELETE", | 
| +                                       "GET", | 
| body: _body, | 
| queryParams: _queryParams, | 
| uploadOptions: _uploadOptions, | 
| uploadMedia: _uploadMedia, | 
| downloadOptions: _downloadOptions); | 
| -    return _response.then((data) => new Operation.fromJson(data)); | 
| +    return _response.then((data) => new Commitment.fromJson(data)); | 
| } | 
|  | 
| /** | 
| -   * Schedules a group action to delete the specified instances in the managed | 
| -   * instance group. The instances are also removed from any target pools of | 
| -   * which they were a member. This method reduces the targetSize of the managed | 
| -   * instance group by the number of instances that you delete. This operation | 
| -   * is marked as DONE when the action is scheduled even if the instances are | 
| -   * still being deleted. You must separately verify the status of the deleting | 
| -   * action with the listmanagedinstances method. | 
| -   * | 
| -   * If the group is part of a backend service that has enabled connection | 
| -   * draining, it can take up to 60 seconds after the connection draining | 
| -   * duration has elapsed before the VM instance is removed or deleted. | 
| -   * | 
| -   * You can specify a maximum of 1000 instances with this method per request. | 
| +   * Creates a commitment in the specified project using the data included in | 
| +   * the request. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -11189,9 +11550,8 @@ class RegionInstanceGroupManagersResourceApi { | 
| * Value must have pattern | 
| * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| * | 
| -   * [region] - Name of the region scoping this request. | 
| -   * | 
| -   * [instanceGroupManager] - Name of the managed instance group. | 
| +   * [region] - Name of the region for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| * | 
| * Completes with a [Operation]. | 
| * | 
| @@ -11201,7 +11561,7 @@ class RegionInstanceGroupManagersResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<Operation> deleteInstances(RegionInstanceGroupManagersDeleteInstancesRequest request, core.String project, core.String region, core.String instanceGroupManager) { | 
| +  async.Future<Operation> insert(Commitment request, core.String project, core.String region) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -11218,11 +11578,8 @@ class RegionInstanceGroupManagersResourceApi { | 
| if (region == null) { | 
| throw new core.ArgumentError("Parameter region is required."); | 
| } | 
| -    if (instanceGroupManager == null) { | 
| -      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| -    } | 
|  | 
| -    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager') + '/deleteInstances'; | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/commitments'; | 
|  | 
| var _response = _requester.request(_url, | 
| "POST", | 
| @@ -11235,7 +11592,7 @@ class RegionInstanceGroupManagersResourceApi { | 
| } | 
|  | 
| /** | 
| -   * Returns all of the details about the specified managed instance group. | 
| +   * Retrieves a list of commitments contained within the specified region. | 
| * | 
| * Request parameters: | 
| * | 
| @@ -11243,11 +11600,56 @@ class RegionInstanceGroupManagersResourceApi { | 
| * Value must have pattern | 
| * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| * | 
| -   * [region] - Name of the region scoping this request. | 
| +   * [region] - Name of the region for this request. | 
| +   * Value must have pattern "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?". | 
| * | 
| -   * [instanceGroupManager] - Name of the managed instance group to return. | 
| +   * [filter] - Sets a filter {expression} for filtering listed resources. Your | 
| +   * {expression} must be in the format: field_name comparison_string | 
| +   * literal_string. | 
| * | 
| -   * Completes with a [InstanceGroupManager]. | 
| +   * The field_name is the name of the field you want to compare. Only atomic | 
| +   * field types are supported (string, number, boolean). The comparison_string | 
| +   * must be either eq (equals) or ne (not equals). The literal_string is the | 
| +   * string value to filter to. The literal value must be valid for the type of | 
| +   * field you are filtering by (string, number, boolean). For string fields, | 
| +   * the literal value is interpreted as a regular expression using RE2 syntax. | 
| +   * The literal value must match the entire field. | 
| +   * | 
| +   * For example, to filter for instances that do not have a name of | 
| +   * example-instance, you would use name ne example-instance. | 
| +   * | 
| +   * You can filter on nested fields. For example, you could filter on instances | 
| +   * that have set the scheduling.automaticRestart field to true. Use filtering | 
| +   * on nested fields to take advantage of labels to organize and search for | 
| +   * results based on label values. | 
| +   * | 
| +   * To filter on multiple expressions, provide each separate expression within | 
| +   * parentheses. For example, (scheduling.automaticRestart eq true) (zone eq | 
| +   * us-central1-f). Multiple expressions are treated as AND expressions, | 
| +   * meaning that resources must match all expressions to pass the filters. | 
| +   * | 
| +   * [maxResults] - The maximum number of results per page that should be | 
| +   * returned. If the number of available results is larger than maxResults, | 
| +   * Compute Engine returns a nextPageToken that can be used to get the next | 
| +   * page of results in subsequent list requests. Acceptable values are 0 to | 
| +   * 500, inclusive. (Default: 500) | 
| +   * | 
| +   * [orderBy] - Sorts list results by a certain order. By default, results are | 
| +   * returned in alphanumerical order based on the resource name. | 
| +   * | 
| +   * You can also sort results in descending order based on the creation | 
| +   * timestamp using orderBy="creationTimestamp desc". This sorts results based | 
| +   * on the creationTimestamp field in reverse chronological order (newest | 
| +   * result first). Use this to sort resources like operations so that the | 
| +   * newest operation is returned first. | 
| +   * | 
| +   * Currently, only sorting by name or creationTimestamp desc is supported. | 
| +   * | 
| +   * [pageToken] - Specifies a page token to use. Set pageToken to the | 
| +   * nextPageToken returned by a previous list request to get the next page of | 
| +   * results. | 
| +   * | 
| +   * Completes with a [CommitmentList]. | 
| * | 
| * Completes with a [commons.ApiRequestError] if the API endpoint returned an | 
| * error. | 
| @@ -11255,7 +11657,7 @@ class RegionInstanceGroupManagersResourceApi { | 
| * If the used [http.Client] completes with an error when making a REST call, | 
| * this method will complete with the same error. | 
| */ | 
| -  async.Future<InstanceGroupManager> get(core.String project, core.String region, core.String instanceGroupManager) { | 
| +  async.Future<CommitmentList> list(core.String project, core.String region, {core.String filter, core.int maxResults, core.String orderBy, core.String pageToken}) { | 
| var _url = null; | 
| var _queryParams = new core.Map(); | 
| var _uploadMedia = null; | 
| @@ -11269,11 +11671,20 @@ class RegionInstanceGroupManagersResourceApi { | 
| if (region == null) { | 
| throw new core.ArgumentError("Parameter region is required."); | 
| } | 
| -    if (instanceGroupManager == null) { | 
| -      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    if (filter != null) { | 
| +      _queryParams["filter"] = [filter]; | 
| +    } | 
| +    if (maxResults != null) { | 
| +      _queryParams["maxResults"] = ["${maxResults}"]; | 
| +    } | 
| +    if (orderBy != null) { | 
| +      _queryParams["orderBy"] = [orderBy]; | 
| +    } | 
| +    if (pageToken != null) { | 
| +      _queryParams["pageToken"] = [pageToken]; | 
| } | 
|  | 
| -    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager'); | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/commitments'; | 
|  | 
| var _response = _requester.request(_url, | 
| "GET", | 
| @@ -11282,7 +11693,256 @@ class RegionInstanceGroupManagersResourceApi { | 
| uploadOptions: _uploadOptions, | 
| uploadMedia: _uploadMedia, | 
| downloadOptions: _downloadOptions); | 
| -    return _response.then((data) => new InstanceGroupManager.fromJson(data)); | 
| +    return _response.then((data) => new CommitmentList.fromJson(data)); | 
| +  } | 
| + | 
| +} | 
| + | 
| + | 
| +class RegionInstanceGroupManagersResourceApi { | 
| +  final commons.ApiRequester _requester; | 
| + | 
| +  RegionInstanceGroupManagersResourceApi(commons.ApiRequester client) : | 
| +      _requester = client; | 
| + | 
| +  /** | 
| +   * Schedules a group action to remove the specified instances from the managed | 
| +   * instance group. Abandoning an instance does not delete the instance, but it | 
| +   * does remove the instance from any target pools that are applied by the | 
| +   * managed instance group. This method reduces the targetSize of the managed | 
| +   * instance group by the number of instances that you abandon. This operation | 
| +   * is marked as DONE when the action is scheduled even if the instances have | 
| +   * not yet been removed from the group. You must separately verify the status | 
| +   * of the abandoning action with the listmanagedinstances method. | 
| +   * | 
| +   * If the group is part of a backend service that has enabled connection | 
| +   * draining, it can take up to 60 seconds after the connection draining | 
| +   * duration has elapsed before the VM instance is removed or deleted. | 
| +   * | 
| +   * You can specify a maximum of 1000 instances with this method per request. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [region] - Name of the region scoping this request. | 
| +   * | 
| +   * [instanceGroupManager] - Name of the managed instance group. | 
| +   * | 
| +   * Completes with a [Operation]. | 
| +   * | 
| +   * 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<Operation> abandonInstances(RegionInstanceGroupManagersAbandonInstancesRequest request, core.String project, core.String region, core.String instanceGroupManager) { | 
| +    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 (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (region == null) { | 
| +      throw new core.ArgumentError("Parameter region is required."); | 
| +    } | 
| +    if (instanceGroupManager == null) { | 
| +      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager') + '/abandonInstances'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Operation.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Deletes the specified managed instance group and all of the instances in | 
| +   * that group. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [region] - Name of the region scoping this request. | 
| +   * | 
| +   * [instanceGroupManager] - Name of the managed instance group to delete. | 
| +   * | 
| +   * Completes with a [Operation]. | 
| +   * | 
| +   * 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<Operation> delete(core.String project, core.String region, core.String instanceGroupManager) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (region == null) { | 
| +      throw new core.ArgumentError("Parameter region is required."); | 
| +    } | 
| +    if (instanceGroupManager == null) { | 
| +      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "DELETE", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Operation.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Schedules a group action to delete the specified instances in the managed | 
| +   * instance group. The instances are also removed from any target pools of | 
| +   * which they were a member. This method reduces the targetSize of the managed | 
| +   * instance group by the number of instances that you delete. This operation | 
| +   * is marked as DONE when the action is scheduled even if the instances are | 
| +   * still being deleted. You must separately verify the status of the deleting | 
| +   * action with the listmanagedinstances method. | 
| +   * | 
| +   * If the group is part of a backend service that has enabled connection | 
| +   * draining, it can take up to 60 seconds after the connection draining | 
| +   * duration has elapsed before the VM instance is removed or deleted. | 
| +   * | 
| +   * You can specify a maximum of 1000 instances with this method per request. | 
| +   * | 
| +   * [request] - The metadata request object. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [region] - Name of the region scoping this request. | 
| +   * | 
| +   * [instanceGroupManager] - Name of the managed instance group. | 
| +   * | 
| +   * Completes with a [Operation]. | 
| +   * | 
| +   * 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<Operation> deleteInstances(RegionInstanceGroupManagersDeleteInstancesRequest request, core.String project, core.String region, core.String instanceGroupManager) { | 
| +    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 (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (region == null) { | 
| +      throw new core.ArgumentError("Parameter region is required."); | 
| +    } | 
| +    if (instanceGroupManager == null) { | 
| +      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager') + '/deleteInstances'; | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "POST", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new Operation.fromJson(data)); | 
| +  } | 
| + | 
| +  /** | 
| +   * Returns all of the details about the specified managed instance group. | 
| +   * | 
| +   * Request parameters: | 
| +   * | 
| +   * [project] - Project ID for this request. | 
| +   * Value must have pattern | 
| +   * "(?:(?:[-a-z0-9]{1,63}\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))". | 
| +   * | 
| +   * [region] - Name of the region scoping this request. | 
| +   * | 
| +   * [instanceGroupManager] - Name of the managed instance group to return. | 
| +   * | 
| +   * Completes with a [InstanceGroupManager]. | 
| +   * | 
| +   * 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<InstanceGroupManager> get(core.String project, core.String region, core.String instanceGroupManager) { | 
| +    var _url = null; | 
| +    var _queryParams = new core.Map(); | 
| +    var _uploadMedia = null; | 
| +    var _uploadOptions = null; | 
| +    var _downloadOptions = commons.DownloadOptions.Metadata; | 
| +    var _body = null; | 
| + | 
| +    if (project == null) { | 
| +      throw new core.ArgumentError("Parameter project is required."); | 
| +    } | 
| +    if (region == null) { | 
| +      throw new core.ArgumentError("Parameter region is required."); | 
| +    } | 
| +    if (instanceGroupManager == null) { | 
| +      throw new core.ArgumentError("Parameter instanceGroupManager is required."); | 
| +    } | 
| + | 
| +    _url = commons.Escaper.ecapeVariable('$project') + '/regions/' + commons.Escaper.ecapeVariable('$region') + '/instanceGroupManagers/' + commons.Escaper.ecapeVariable('$instanceGroupManager'); | 
| + | 
| +    var _response = _requester.request(_url, | 
| +                                       "GET", | 
| +                                       body: _body, | 
| +                                       queryParams: _queryParams, | 
| +                                       uploadOptions: _uploadOptions, | 
| +                                       uploadMedia: _uploadMedia, | 
| +                                       downloadOptions: _downloadOptions); | 
| +    return _response.then((data) => new InstanceGroupManager.fromJson(data)); | 
| } | 
|  | 
| /** | 
| @@ -17552,7 +18212,8 @@ class UrlMapsResourceApi { | 
|  | 
| /** | 
| * Patches the specified UrlMap resource with the data included in the | 
| -   * request. This method supports patch semantics. | 
| +   * request. This method supports PATCH semantics and uses the JSON merge patch | 
| +   * format and processing rules. | 
| * | 
| * [request] - The metadata request object. | 
| * | 
| @@ -18466,81 +19127,50 @@ class ZonesResourceApi { | 
|  | 
|  | 
| /** | 
| - * An access configuration attached to an instance's network interface. Only one | 
| - * access config per instance is supported. | 
| + * A specification of the type and number of accelerator cards attached to the | 
| + * instance. | 
| */ | 
| -class AccessConfig { | 
| +class AcceleratorConfig { | 
| +  /** The number of the guest accelerator cards exposed to this instance. */ | 
| +  core.int acceleratorCount; | 
| /** | 
| -   * [Output Only] Type of the resource. Always compute#accessConfig for access | 
| -   * configs. | 
| +   * Full or partial URL of the accelerator type resource to expose to this | 
| +   * instance. | 
| */ | 
| -  core.String kind; | 
| -  /** | 
| -   * The name of this access configuration. The default and recommended name is | 
| -   * External NAT but you can use any arbitrary string you would like. For | 
| -   * example, My external IP or Network Access. | 
| -   */ | 
| -  core.String name; | 
| -  /** | 
| -   * An external IP address associated with this instance. Specify an unused | 
| -   * static external IP address available to the project or leave this field | 
| -   * undefined to use an IP from a shared ephemeral IP address pool. If you | 
| -   * specify a static external IP address, it must live in the same region as | 
| -   * the zone of the instance. | 
| -   */ | 
| -  core.String natIP; | 
| -  /** | 
| -   * The type of configuration. The default and only option is ONE_TO_ONE_NAT. | 
| -   * Possible string values are: | 
| -   * - "ONE_TO_ONE_NAT" | 
| -   */ | 
| -  core.String type; | 
| +  core.String acceleratorType; | 
|  | 
| -  AccessConfig(); | 
| +  AcceleratorConfig(); | 
|  | 
| -  AccessConfig.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| -    } | 
| -    if (_json.containsKey("name")) { | 
| -      name = _json["name"]; | 
| +  AcceleratorConfig.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("acceleratorCount")) { | 
| +      acceleratorCount = _json["acceleratorCount"]; | 
| } | 
| -    if (_json.containsKey("natIP")) { | 
| -      natIP = _json["natIP"]; | 
| -    } | 
| -    if (_json.containsKey("type")) { | 
| -      type = _json["type"]; | 
| +    if (_json.containsKey("acceleratorType")) { | 
| +      acceleratorType = _json["acceleratorType"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| -    } | 
| -    if (name != null) { | 
| -      _json["name"] = name; | 
| -    } | 
| -    if (natIP != null) { | 
| -      _json["natIP"] = natIP; | 
| +    if (acceleratorCount != null) { | 
| +      _json["acceleratorCount"] = acceleratorCount; | 
| } | 
| -    if (type != null) { | 
| -      _json["type"] = type; | 
| +    if (acceleratorType != null) { | 
| +      _json["acceleratorType"] = acceleratorType; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** A reserved address resource. */ | 
| -class Address { | 
| -  /** The static external IP address represented by this resource. */ | 
| -  core.String address; | 
| +/** An Accelerator Type resource. */ | 
| +class AcceleratorType { | 
| /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| core.String creationTimestamp; | 
| /** | 
| -   * An optional description of this resource. Provide this property when you | 
| -   * create the resource. | 
| +   * [Output Only] The deprecation status associated with this accelerator type. | 
| */ | 
| +  DeprecationStatus deprecated; | 
| +  /** [Output Only] An optional textual description of the resource. */ | 
| core.String description; | 
| /** | 
| * [Output Only] The unique identifier for the resource. This identifier is | 
| @@ -18548,135 +19178,99 @@ class Address { | 
| */ | 
| core.String id; | 
| /** | 
| -   * The IP Version that will be used by this address. Valid options are IPV4 or | 
| -   * IPV6. This can only be specified for a global address. | 
| -   * Possible string values are: | 
| -   * - "IPV4" | 
| -   * - "IPV6" | 
| -   * - "UNSPECIFIED_VERSION" | 
| -   */ | 
| -  core.String ipVersion; | 
| -  /** | 
| -   * [Output Only] Type of the resource. Always compute#address for addresses. | 
| +   * [Output Only] The type of the resource. Always compute#acceleratorType for | 
| +   * accelerator types. | 
| */ | 
| core.String kind; | 
| -  /** | 
| -   * Name of the resource. Provided by the client when the resource is created. | 
| -   * The name must be 1-63 characters long, and comply with RFC1035. | 
| -   * Specifically, the name must be 1-63 characters long and match the regular | 
| -   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| -   * be a lowercase letter, and all following characters must be a dash, | 
| -   * lowercase letter, or digit, except the last character, which cannot be a | 
| -   * dash. | 
| -   */ | 
| +  /** [Output Only] Maximum accelerator cards allowed per instance. */ | 
| +  core.int maximumCardsPerInstance; | 
| +  /** [Output Only] Name of the resource. */ | 
| core.String name; | 
| -  /** | 
| -   * [Output Only] URL of the region where the regional address resides. This | 
| -   * field is not applicable to global addresses. | 
| -   */ | 
| -  core.String region; | 
| -  /** [Output Only] Server-defined URL for the resource. */ | 
| +  /** [Output Only] Server-defined fully-qualified URL for this resource. */ | 
| core.String selfLink; | 
| /** | 
| -   * [Output Only] The status of the address, which can be either IN_USE or | 
| -   * RESERVED. An address that is RESERVED is currently reserved and available | 
| -   * to use. An IN_USE address is currently being used by another resource and | 
| -   * is not available. | 
| -   * Possible string values are: | 
| -   * - "IN_USE" | 
| -   * - "RESERVED" | 
| +   * [Output Only] The name of the zone where the accelerator type resides, such | 
| +   * as us-central1-a. | 
| */ | 
| -  core.String status; | 
| -  /** [Output Only] The URLs of the resources that are using this address. */ | 
| -  core.List<core.String> users; | 
| +  core.String zone; | 
|  | 
| -  Address(); | 
| +  AcceleratorType(); | 
|  | 
| -  Address.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("address")) { | 
| -      address = _json["address"]; | 
| -    } | 
| +  AcceleratorType.fromJson(core.Map _json) { | 
| if (_json.containsKey("creationTimestamp")) { | 
| creationTimestamp = _json["creationTimestamp"]; | 
| } | 
| +    if (_json.containsKey("deprecated")) { | 
| +      deprecated = new DeprecationStatus.fromJson(_json["deprecated"]); | 
| +    } | 
| if (_json.containsKey("description")) { | 
| description = _json["description"]; | 
| } | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| -    if (_json.containsKey("ipVersion")) { | 
| -      ipVersion = _json["ipVersion"]; | 
| -    } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| } | 
| +    if (_json.containsKey("maximumCardsPerInstance")) { | 
| +      maximumCardsPerInstance = _json["maximumCardsPerInstance"]; | 
| +    } | 
| if (_json.containsKey("name")) { | 
| name = _json["name"]; | 
| } | 
| -    if (_json.containsKey("region")) { | 
| -      region = _json["region"]; | 
| -    } | 
| if (_json.containsKey("selfLink")) { | 
| selfLink = _json["selfLink"]; | 
| } | 
| -    if (_json.containsKey("status")) { | 
| -      status = _json["status"]; | 
| -    } | 
| -    if (_json.containsKey("users")) { | 
| -      users = _json["users"]; | 
| +    if (_json.containsKey("zone")) { | 
| +      zone = _json["zone"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (address != null) { | 
| -      _json["address"] = address; | 
| -    } | 
| if (creationTimestamp != null) { | 
| _json["creationTimestamp"] = creationTimestamp; | 
| } | 
| +    if (deprecated != null) { | 
| +      _json["deprecated"] = (deprecated).toJson(); | 
| +    } | 
| if (description != null) { | 
| _json["description"] = description; | 
| } | 
| if (id != null) { | 
| _json["id"] = id; | 
| } | 
| -    if (ipVersion != null) { | 
| -      _json["ipVersion"] = ipVersion; | 
| -    } | 
| if (kind != null) { | 
| _json["kind"] = kind; | 
| } | 
| +    if (maximumCardsPerInstance != null) { | 
| +      _json["maximumCardsPerInstance"] = maximumCardsPerInstance; | 
| +    } | 
| if (name != null) { | 
| _json["name"] = name; | 
| } | 
| -    if (region != null) { | 
| -      _json["region"] = region; | 
| -    } | 
| if (selfLink != null) { | 
| _json["selfLink"] = selfLink; | 
| } | 
| -    if (status != null) { | 
| -      _json["status"] = status; | 
| -    } | 
| -    if (users != null) { | 
| -      _json["users"] = users; | 
| +    if (zone != null) { | 
| +      _json["zone"] = zone; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -class AddressAggregatedList { | 
| +class AcceleratorTypeAggregatedList { | 
| /** | 
| -   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| core.String id; | 
| -  /** [Output Only] A map of scoped address lists. */ | 
| -  core.Map<core.String, AddressesScopedList> items; | 
| +  /** [Output Only] A map of scoped accelerator type lists. */ | 
| +  core.Map<core.String, AcceleratorTypesScopedList> items; | 
| /** | 
| -   * [Output Only] Type of resource. Always compute#addressAggregatedList for | 
| -   * aggregated lists of addresses. | 
| +   * [Output Only] Type of resource. Always | 
| +   * compute#acceleratorTypeAggregatedList for aggregated lists of accelerator | 
| +   * types. | 
| */ | 
| core.String kind; | 
| /** | 
| @@ -18690,14 +19284,14 @@ class AddressAggregatedList { | 
| /** [Output Only] Server-defined URL for this resource. */ | 
| core.String selfLink; | 
|  | 
| -  AddressAggregatedList(); | 
| +  AcceleratorTypeAggregatedList(); | 
|  | 
| -  AddressAggregatedList.fromJson(core.Map _json) { | 
| +  AcceleratorTypeAggregatedList.fromJson(core.Map _json) { | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| if (_json.containsKey("items")) { | 
| -      items = commons.mapMap<core.Map<core.String, core.Object>, AddressesScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new AddressesScopedList.fromJson(item)); | 
| +      items = commons.mapMap<core.Map<core.String, core.Object>, AcceleratorTypesScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new AcceleratorTypesScopedList.fromJson(item)); | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| @@ -18716,7 +19310,7 @@ class AddressAggregatedList { | 
| _json["id"] = id; | 
| } | 
| if (items != null) { | 
| -      _json["items"] = commons.mapMap<AddressesScopedList, core.Map<core.String, core.Object>>(items, (AddressesScopedList item) => (item).toJson()); | 
| +      _json["items"] = commons.mapMap<AcceleratorTypesScopedList, core.Map<core.String, core.Object>>(items, (AcceleratorTypesScopedList item) => (item).toJson()); | 
| } | 
| if (kind != null) { | 
| _json["kind"] = kind; | 
| @@ -18731,39 +19325,32 @@ class AddressAggregatedList { | 
| } | 
| } | 
|  | 
| -/** Contains a list of addresses. */ | 
| -class AddressList { | 
| +/** Contains a list of accelerator types. */ | 
| +class AcceleratorTypeList { | 
| /** | 
| -   * [Output Only] The unique identifier for the resource. This identifier is | 
| -   * defined by the server. | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| */ | 
| core.String id; | 
| -  /** [Output Only] A list of addresses. */ | 
| -  core.List<Address> items; | 
| +  /** A list of AcceleratorType resources. */ | 
| +  core.List<AcceleratorType> items; | 
| /** | 
| -   * [Output Only] Type of resource. Always compute#addressList for lists of | 
| -   * addresses. | 
| +   * [Output Only] Type of resource. Always compute#acceleratorTypeList for | 
| +   * lists of accelerator types. | 
| */ | 
| core.String kind; | 
| -  /** | 
| -   * [Output Only] This token allows you to get the next page of results for | 
| -   * list requests. If the number of results is larger than maxResults, use the | 
| -   * nextPageToken as a value for the query parameter pageToken in the next list | 
| -   * request. Subsequent list requests will have their own nextPageToken to | 
| -   * continue paging through the results. | 
| -   */ | 
| +  /** [Output Only] A token used to continue a truncated list request. */ | 
| core.String nextPageToken; | 
| -  /** [Output Only] Server-defined URL for the resource. */ | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| core.String selfLink; | 
|  | 
| -  AddressList(); | 
| +  AcceleratorTypeList(); | 
|  | 
| -  AddressList.fromJson(core.Map _json) { | 
| +  AcceleratorTypeList.fromJson(core.Map _json) { | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| if (_json.containsKey("items")) { | 
| -      items = _json["items"].map((value) => new Address.fromJson(value)).toList(); | 
| +      items = _json["items"].map((value) => new AcceleratorType.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| @@ -18797,7 +19384,7 @@ class AddressList { | 
| } | 
| } | 
|  | 
| -class AddressesScopedListWarningData { | 
| +class AcceleratorTypesScopedListWarningData { | 
| /** | 
| * [Output Only] A key that provides more detail on the warning being | 
| * returned. For example, for warnings where there are no results in a list | 
| @@ -18811,9 +19398,9 @@ class AddressesScopedListWarningData { | 
| /** [Output Only] A warning data value corresponding to the key. */ | 
| core.String value; | 
|  | 
| -  AddressesScopedListWarningData(); | 
| +  AcceleratorTypesScopedListWarningData(); | 
|  | 
| -  AddressesScopedListWarningData.fromJson(core.Map _json) { | 
| +  AcceleratorTypesScopedListWarningData.fromJson(core.Map _json) { | 
| if (_json.containsKey("key")) { | 
| key = _json["key"]; | 
| } | 
| @@ -18835,10 +19422,10 @@ class AddressesScopedListWarningData { | 
| } | 
|  | 
| /** | 
| - * [Output Only] Informational warning which replaces the list of addresses when | 
| - * the list is empty. | 
| + * [Output Only] An informational warning that appears when the accelerator | 
| + * types list is empty. | 
| */ | 
| -class AddressesScopedListWarning { | 
| +class AcceleratorTypesScopedListWarning { | 
| /** | 
| * [Output Only] A warning code, if applicable. For example, Compute Engine | 
| * returns NO_RESULTS_ON_PAGE if there are no results in the response. | 
| @@ -18867,18 +19454,18 @@ class AddressesScopedListWarning { | 
| * example: | 
| * "data": [ { "key": "scope", "value": "zones/us-east1-d" } | 
| */ | 
| -  core.List<AddressesScopedListWarningData> data; | 
| +  core.List<AcceleratorTypesScopedListWarningData> data; | 
| /** [Output Only] A human-readable description of the warning code. */ | 
| core.String message; | 
|  | 
| -  AddressesScopedListWarning(); | 
| +  AcceleratorTypesScopedListWarning(); | 
|  | 
| -  AddressesScopedListWarning.fromJson(core.Map _json) { | 
| +  AcceleratorTypesScopedListWarning.fromJson(core.Map _json) { | 
| if (_json.containsKey("code")) { | 
| code = _json["code"]; | 
| } | 
| if (_json.containsKey("data")) { | 
| -      data = _json["data"].map((value) => new AddressesScopedListWarningData.fromJson(value)).toList(); | 
| +      data = _json["data"].map((value) => new AcceleratorTypesScopedListWarningData.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("message")) { | 
| message = _json["message"]; | 
| @@ -18900,30 +19487,30 @@ class AddressesScopedListWarning { | 
| } | 
| } | 
|  | 
| -class AddressesScopedList { | 
| -  /** [Output Only] List of addresses contained in this scope. */ | 
| -  core.List<Address> addresses; | 
| +class AcceleratorTypesScopedList { | 
| +  /** [Output Only] List of accelerator types contained in this scope. */ | 
| +  core.List<AcceleratorType> acceleratorTypes; | 
| /** | 
| -   * [Output Only] Informational warning which replaces the list of addresses | 
| -   * when the list is empty. | 
| +   * [Output Only] An informational warning that appears when the accelerator | 
| +   * types list is empty. | 
| */ | 
| -  AddressesScopedListWarning warning; | 
| +  AcceleratorTypesScopedListWarning warning; | 
|  | 
| -  AddressesScopedList(); | 
| +  AcceleratorTypesScopedList(); | 
|  | 
| -  AddressesScopedList.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("addresses")) { | 
| -      addresses = _json["addresses"].map((value) => new Address.fromJson(value)).toList(); | 
| +  AcceleratorTypesScopedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("acceleratorTypes")) { | 
| +      acceleratorTypes = _json["acceleratorTypes"].map((value) => new AcceleratorType.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("warning")) { | 
| -      warning = new AddressesScopedListWarning.fromJson(_json["warning"]); | 
| +      warning = new AcceleratorTypesScopedListWarning.fromJson(_json["warning"]); | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (addresses != null) { | 
| -      _json["addresses"] = addresses.map((value) => (value).toJson()).toList(); | 
| +    if (acceleratorTypes != null) { | 
| +      _json["acceleratorTypes"] = acceleratorTypes.map((value) => (value).toJson()).toList(); | 
| } | 
| if (warning != null) { | 
| _json["warning"] = (warning).toJson(); | 
| @@ -18932,449 +19519,220 @@ class AddressesScopedList { | 
| } | 
| } | 
|  | 
| -/** An instance-attached disk resource. */ | 
| -class AttachedDisk { | 
| -  /** | 
| -   * Specifies whether the disk will be auto-deleted when the instance is | 
| -   * deleted (but not when the disk is detached from the instance). | 
| -   */ | 
| -  core.bool autoDelete; | 
| +/** | 
| + * An access configuration attached to an instance's network interface. Only one | 
| + * access config per instance is supported. | 
| + */ | 
| +class AccessConfig { | 
| /** | 
| -   * Indicates that this is a boot disk. The virtual machine will use the first | 
| -   * partition of the disk for its root filesystem. | 
| +   * [Output Only] Type of the resource. Always compute#accessConfig for access | 
| +   * configs. | 
| */ | 
| -  core.bool boot; | 
| +  core.String kind; | 
| /** | 
| -   * Specifies a unique device name of your choice that is reflected into the | 
| -   * /dev/disk/by-id/google-* tree of a Linux operating system running within | 
| -   * the instance. This name can be used to reference the device for mounting, | 
| -   * resizing, and so on, from within the instance. | 
| -   * | 
| -   * If not specified, the server chooses a default device name to apply to this | 
| -   * disk, in the form persistent-disks-x, where x is a number assigned by | 
| -   * Google Compute Engine. This field is only applicable for persistent disks. | 
| +   * The name of this access configuration. The default and recommended name is | 
| +   * External NAT but you can use any arbitrary string you would like. For | 
| +   * example, My external IP or Network Access. | 
| */ | 
| -  core.String deviceName; | 
| +  core.String name; | 
| /** | 
| -   * Encrypts or decrypts a disk using a customer-supplied encryption key. | 
| -   * | 
| -   * If you are creating a new disk, this field encrypts the new disk using an | 
| -   * encryption key that you provide. If you are attaching an existing disk that | 
| -   * is already encrypted, this field decrypts the disk using the | 
| -   * customer-supplied encryption key. | 
| -   * | 
| -   * If you encrypt a disk using a customer-supplied key, you must provide the | 
| -   * same key again when you attempt to use this resource at a later time. For | 
| -   * example, you must provide the key when you create a snapshot or an image | 
| -   * from the disk or when you attach the disk to a virtual machine instance. | 
| -   * | 
| -   * If you do not provide an encryption key, then the disk will be encrypted | 
| -   * using an automatically generated key and you do not need to provide a key | 
| -   * to use the disk later. | 
| -   * | 
| -   * Instance templates do not store customer-supplied encryption keys, so you | 
| -   * cannot use your own keys to encrypt disks in a managed instance group. | 
| +   * An external IP address associated with this instance. Specify an unused | 
| +   * static external IP address available to the project or leave this field | 
| +   * undefined to use an IP from a shared ephemeral IP address pool. If you | 
| +   * specify a static external IP address, it must live in the same region as | 
| +   * the zone of the instance. | 
| */ | 
| -  CustomerEncryptionKey diskEncryptionKey; | 
| +  core.String natIP; | 
| /** | 
| -   * Assigns a zero-based index to this disk, where 0 is reserved for the boot | 
| -   * disk. For example, if you have many disks attached to an instance, each | 
| -   * disk would have a unique index number. If not specified, the server will | 
| -   * choose an appropriate value. | 
| +   * The type of configuration. The default and only option is ONE_TO_ONE_NAT. | 
| +   * Possible string values are: | 
| +   * - "ONE_TO_ONE_NAT" | 
| */ | 
| -  core.int index; | 
| -  /** | 
| -   * [Input Only] Specifies the parameters for a new disk that will be created | 
| -   * alongside the new instance. Use initialization parameters to create boot | 
| -   * disks or local SSDs attached to the new instance. | 
| -   * | 
| -   * This property is mutually exclusive with the source property; you can only | 
| -   * define one or the other, but not both. | 
| +  core.String type; | 
| + | 
| +  AccessConfig(); | 
| + | 
| +  AccessConfig.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| +    } | 
| +    if (_json.containsKey("natIP")) { | 
| +      natIP = _json["natIP"]; | 
| +    } | 
| +    if (_json.containsKey("type")) { | 
| +      type = _json["type"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| +    } | 
| +    if (natIP != null) { | 
| +      _json["natIP"] = natIP; | 
| +    } | 
| +    if (type != null) { | 
| +      _json["type"] = type; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** A reserved address resource. */ | 
| +class Address { | 
| +  /** The static external IP address represented by this resource. */ | 
| +  core.String address; | 
| +  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| +  core.String creationTimestamp; | 
| +  /** | 
| +   * An optional description of this resource. Provide this property when you | 
| +   * create the resource. | 
| */ | 
| -  AttachedDiskInitializeParams initializeParams; | 
| +  core.String description; | 
| /** | 
| -   * Specifies the disk interface to use for attaching this disk, which is | 
| -   * either SCSI or NVME. The default is SCSI. Persistent disks must always use | 
| -   * SCSI and the request will fail if you attempt to attach a persistent disk | 
| -   * in any other format than SCSI. Local SSDs can use either NVME or SCSI. For | 
| -   * performance characteristics of SCSI over NVMe, see Local SSD performance. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** | 
| +   * The IP Version that will be used by this address. Valid options are IPV4 or | 
| +   * IPV6. This can only be specified for a global address. | 
| * Possible string values are: | 
| -   * - "NVME" | 
| -   * - "SCSI" | 
| +   * - "IPV4" | 
| +   * - "IPV6" | 
| +   * - "UNSPECIFIED_VERSION" | 
| */ | 
| -  core.String interface; | 
| +  core.String ipVersion; | 
| /** | 
| -   * [Output Only] Type of the resource. Always compute#attachedDisk for | 
| -   * attached disks. | 
| +   * [Output Only] Type of the resource. Always compute#address for addresses. | 
| */ | 
| core.String kind; | 
| -  /** [Output Only] Any valid publicly visible licenses. */ | 
| -  core.List<core.String> licenses; | 
| /** | 
| -   * The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If | 
| -   * not specified, the default is to attach the disk in READ_WRITE mode. | 
| -   * Possible string values are: | 
| -   * - "READ_ONLY" | 
| -   * - "READ_WRITE" | 
| +   * Name of the resource. Provided by the client when the resource is created. | 
| +   * The name must be 1-63 characters long, and comply with RFC1035. | 
| +   * Specifically, the name must be 1-63 characters long and match the regular | 
| +   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| +   * be a lowercase letter, and all following characters must be a dash, | 
| +   * lowercase letter, or digit, except the last character, which cannot be a | 
| +   * dash. | 
| */ | 
| -  core.String mode; | 
| +  core.String name; | 
| /** | 
| -   * Specifies a valid partial or full URL to an existing Persistent Disk | 
| -   * resource. When creating a new instance, one of initializeParams.sourceImage | 
| -   * or disks.source is required. | 
| -   * | 
| -   * If desired, you can also attach existing non-root persistent disks using | 
| -   * this property. This field is only applicable for persistent disks. | 
| -   * | 
| -   * Note that for InstanceTemplate, specify the disk name, not the URL for the | 
| -   * disk. | 
| +   * [Output Only] URL of the region where the regional address resides. This | 
| +   * field is not applicable to global addresses. | 
| */ | 
| -  core.String source; | 
| +  core.String region; | 
| +  /** [Output Only] Server-defined URL for the resource. */ | 
| +  core.String selfLink; | 
| /** | 
| -   * Specifies the type of the disk, either SCRATCH or PERSISTENT. If not | 
| -   * specified, the default is PERSISTENT. | 
| +   * [Output Only] The status of the address, which can be either IN_USE or | 
| +   * RESERVED. An address that is RESERVED is currently reserved and available | 
| +   * to use. An IN_USE address is currently being used by another resource and | 
| +   * is not available. | 
| * Possible string values are: | 
| -   * - "PERSISTENT" | 
| -   * - "SCRATCH" | 
| +   * - "IN_USE" | 
| +   * - "RESERVED" | 
| */ | 
| -  core.String type; | 
| +  core.String status; | 
| +  /** [Output Only] The URLs of the resources that are using this address. */ | 
| +  core.List<core.String> users; | 
|  | 
| -  AttachedDisk(); | 
| +  Address(); | 
|  | 
| -  AttachedDisk.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("autoDelete")) { | 
| -      autoDelete = _json["autoDelete"]; | 
| -    } | 
| -    if (_json.containsKey("boot")) { | 
| -      boot = _json["boot"]; | 
| -    } | 
| -    if (_json.containsKey("deviceName")) { | 
| -      deviceName = _json["deviceName"]; | 
| +  Address.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("address")) { | 
| +      address = _json["address"]; | 
| } | 
| -    if (_json.containsKey("diskEncryptionKey")) { | 
| -      diskEncryptionKey = new CustomerEncryptionKey.fromJson(_json["diskEncryptionKey"]); | 
| +    if (_json.containsKey("creationTimestamp")) { | 
| +      creationTimestamp = _json["creationTimestamp"]; | 
| } | 
| -    if (_json.containsKey("index")) { | 
| -      index = _json["index"]; | 
| +    if (_json.containsKey("description")) { | 
| +      description = _json["description"]; | 
| } | 
| -    if (_json.containsKey("initializeParams")) { | 
| -      initializeParams = new AttachedDiskInitializeParams.fromJson(_json["initializeParams"]); | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| } | 
| -    if (_json.containsKey("interface")) { | 
| -      interface = _json["interface"]; | 
| +    if (_json.containsKey("ipVersion")) { | 
| +      ipVersion = _json["ipVersion"]; | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| } | 
| -    if (_json.containsKey("licenses")) { | 
| -      licenses = _json["licenses"]; | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| } | 
| -    if (_json.containsKey("mode")) { | 
| -      mode = _json["mode"]; | 
| +    if (_json.containsKey("region")) { | 
| +      region = _json["region"]; | 
| } | 
| -    if (_json.containsKey("source")) { | 
| -      source = _json["source"]; | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| } | 
| -    if (_json.containsKey("type")) { | 
| -      type = _json["type"]; | 
| +    if (_json.containsKey("status")) { | 
| +      status = _json["status"]; | 
| +    } | 
| +    if (_json.containsKey("users")) { | 
| +      users = _json["users"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (autoDelete != null) { | 
| -      _json["autoDelete"] = autoDelete; | 
| -    } | 
| -    if (boot != null) { | 
| -      _json["boot"] = boot; | 
| -    } | 
| -    if (deviceName != null) { | 
| -      _json["deviceName"] = deviceName; | 
| +    if (address != null) { | 
| +      _json["address"] = address; | 
| } | 
| -    if (diskEncryptionKey != null) { | 
| -      _json["diskEncryptionKey"] = (diskEncryptionKey).toJson(); | 
| +    if (creationTimestamp != null) { | 
| +      _json["creationTimestamp"] = creationTimestamp; | 
| } | 
| -    if (index != null) { | 
| -      _json["index"] = index; | 
| +    if (description != null) { | 
| +      _json["description"] = description; | 
| } | 
| -    if (initializeParams != null) { | 
| -      _json["initializeParams"] = (initializeParams).toJson(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| } | 
| -    if (interface != null) { | 
| -      _json["interface"] = interface; | 
| +    if (ipVersion != null) { | 
| +      _json["ipVersion"] = ipVersion; | 
| } | 
| if (kind != null) { | 
| _json["kind"] = kind; | 
| } | 
| -    if (licenses != null) { | 
| -      _json["licenses"] = licenses; | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| } | 
| -    if (mode != null) { | 
| -      _json["mode"] = mode; | 
| +    if (region != null) { | 
| +      _json["region"] = region; | 
| } | 
| -    if (source != null) { | 
| -      _json["source"] = source; | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| } | 
| -    if (type != null) { | 
| -      _json["type"] = type; | 
| +    if (status != null) { | 
| +      _json["status"] = status; | 
| +    } | 
| +    if (users != null) { | 
| +      _json["users"] = users; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** | 
| - * [Input Only] Specifies the parameters for a new disk that will be created | 
| - * alongside the new instance. Use initialization parameters to create boot | 
| - * disks or local SSDs attached to the new instance. | 
| - * | 
| - * This property is mutually exclusive with the source property; you can only | 
| - * define one or the other, but not both. | 
| - */ | 
| -class AttachedDiskInitializeParams { | 
| +class AddressAggregatedList { | 
| /** | 
| -   * Specifies the disk name. If not specified, the default is to use the name | 
| -   * of the instance. | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| */ | 
| -  core.String diskName; | 
| -  /** Specifies the size of the disk in base-2 GB. */ | 
| -  core.String diskSizeGb; | 
| +  core.String id; | 
| +  /** [Output Only] A map of scoped address lists. */ | 
| +  core.Map<core.String, AddressesScopedList> items; | 
| /** | 
| -   * Specifies the disk type to use to create the instance. If not specified, | 
| -   * the default is pd-standard, specified using the full URL. For example: | 
| -   * | 
| -   * https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard | 
| -   * | 
| -   * Other values include pd-ssd and local-ssd. If you define this field, you | 
| -   * can provide either the full or partial URL. For example, the following are | 
| -   * valid values: | 
| -   * - | 
| -   * https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType | 
| -   * - projects/project/zones/zone/diskTypes/diskType | 
| -   * - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is | 
| -   * the name of the disk type, not URL. | 
| +   * [Output Only] Type of resource. Always compute#addressAggregatedList for | 
| +   * aggregated lists of addresses. | 
| */ | 
| -  core.String diskType; | 
| -  /** | 
| -   * The source image to create this disk. When creating a new instance, one of | 
| -   * initializeParams.sourceImage or disks.source is required. | 
| -   * | 
| -   * To create a disk with one of the public operating system images, specify | 
| -   * the image by its family name. For example, specify family/debian-8 to use | 
| -   * the latest Debian 8 image: | 
| -   * | 
| -   * projects/debian-cloud/global/images/family/debian-8 | 
| -   * | 
| -   * Alternatively, use a specific version of a public operating system image: | 
| -   * | 
| -   * projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD | 
| -   * | 
| -   * To create a disk with a private image that you created, specify the image | 
| -   * name in the following format: | 
| -   * | 
| -   * global/images/my-private-image | 
| -   * | 
| -   * You can also specify a private image by its image family, which returns the | 
| -   * latest version of the image in that family. Replace the image name with | 
| -   * family/family-name: | 
| -   * | 
| -   * global/images/family/my-private-family | 
| -   * | 
| -   * If the source image is deleted later, this field will not be set. | 
| -   */ | 
| -  core.String sourceImage; | 
| -  /** | 
| -   * The customer-supplied encryption key of the source image. Required if the | 
| -   * source image is protected by a customer-supplied encryption key. | 
| -   * | 
| -   * Instance templates do not store customer-supplied encryption keys, so you | 
| -   * cannot create disks for instances in a managed instance group if the source | 
| -   * images are encrypted with your own keys. | 
| -   */ | 
| -  CustomerEncryptionKey sourceImageEncryptionKey; | 
| - | 
| -  AttachedDiskInitializeParams(); | 
| - | 
| -  AttachedDiskInitializeParams.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("diskName")) { | 
| -      diskName = _json["diskName"]; | 
| -    } | 
| -    if (_json.containsKey("diskSizeGb")) { | 
| -      diskSizeGb = _json["diskSizeGb"]; | 
| -    } | 
| -    if (_json.containsKey("diskType")) { | 
| -      diskType = _json["diskType"]; | 
| -    } | 
| -    if (_json.containsKey("sourceImage")) { | 
| -      sourceImage = _json["sourceImage"]; | 
| -    } | 
| -    if (_json.containsKey("sourceImageEncryptionKey")) { | 
| -      sourceImageEncryptionKey = new CustomerEncryptionKey.fromJson(_json["sourceImageEncryptionKey"]); | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (diskName != null) { | 
| -      _json["diskName"] = diskName; | 
| -    } | 
| -    if (diskSizeGb != null) { | 
| -      _json["diskSizeGb"] = diskSizeGb; | 
| -    } | 
| -    if (diskType != null) { | 
| -      _json["diskType"] = diskType; | 
| -    } | 
| -    if (sourceImage != null) { | 
| -      _json["sourceImage"] = sourceImage; | 
| -    } | 
| -    if (sourceImageEncryptionKey != null) { | 
| -      _json["sourceImageEncryptionKey"] = (sourceImageEncryptionKey).toJson(); | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** | 
| - * Represents an Autoscaler resource. Autoscalers allow you to automatically | 
| - * scale virtual machine instances in managed instance groups according to an | 
| - * autoscaling policy that you define. For more information, read Autoscaling | 
| - * Groups of Instances. | 
| - */ | 
| -class Autoscaler { | 
| -  /** | 
| -   * The configuration parameters for the autoscaling algorithm. You can define | 
| -   * one or more of the policies for an autoscaler: cpuUtilization, | 
| -   * customMetricUtilizations, and loadBalancingUtilization. | 
| -   * | 
| -   * If none of these are specified, the default will be to autoscale based on | 
| -   * cpuUtilization to 0.6 or 60%. | 
| -   */ | 
| -  AutoscalingPolicy autoscalingPolicy; | 
| -  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| -  core.String creationTimestamp; | 
| -  /** | 
| -   * An optional description of this resource. Provide this property when you | 
| -   * create the resource. | 
| -   */ | 
| -  core.String description; | 
| -  /** | 
| -   * [Output Only] The unique identifier for the resource. This identifier is | 
| -   * defined by the server. | 
| -   */ | 
| -  core.String id; | 
| -  /** | 
| -   * [Output Only] Type of the resource. Always compute#autoscaler for | 
| -   * autoscalers. | 
| -   */ | 
| -  core.String kind; | 
| -  /** | 
| -   * Name of the resource. Provided by the client when the resource is created. | 
| -   * The name must be 1-63 characters long, and comply with RFC1035. | 
| -   * Specifically, the name must be 1-63 characters long and match the regular | 
| -   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| -   * be a lowercase letter, and all following characters must be a dash, | 
| -   * lowercase letter, or digit, except the last character, which cannot be a | 
| -   * dash. | 
| -   */ | 
| -  core.String name; | 
| -  /** | 
| -   * [Output Only] URL of the region where the instance group resides (for | 
| -   * autoscalers living in regional scope). | 
| -   */ | 
| -  core.String region; | 
| -  /** [Output Only] Server-defined URL for the resource. */ | 
| -  core.String selfLink; | 
| -  /** URL of the managed instance group that this autoscaler will scale. */ | 
| -  core.String target; | 
| -  /** | 
| -   * [Output Only] URL of the zone where the instance group resides (for | 
| -   * autoscalers living in zonal scope). | 
| -   */ | 
| -  core.String zone; | 
| - | 
| -  Autoscaler(); | 
| - | 
| -  Autoscaler.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("autoscalingPolicy")) { | 
| -      autoscalingPolicy = new AutoscalingPolicy.fromJson(_json["autoscalingPolicy"]); | 
| -    } | 
| -    if (_json.containsKey("creationTimestamp")) { | 
| -      creationTimestamp = _json["creationTimestamp"]; | 
| -    } | 
| -    if (_json.containsKey("description")) { | 
| -      description = _json["description"]; | 
| -    } | 
| -    if (_json.containsKey("id")) { | 
| -      id = _json["id"]; | 
| -    } | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| -    } | 
| -    if (_json.containsKey("name")) { | 
| -      name = _json["name"]; | 
| -    } | 
| -    if (_json.containsKey("region")) { | 
| -      region = _json["region"]; | 
| -    } | 
| -    if (_json.containsKey("selfLink")) { | 
| -      selfLink = _json["selfLink"]; | 
| -    } | 
| -    if (_json.containsKey("target")) { | 
| -      target = _json["target"]; | 
| -    } | 
| -    if (_json.containsKey("zone")) { | 
| -      zone = _json["zone"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (autoscalingPolicy != null) { | 
| -      _json["autoscalingPolicy"] = (autoscalingPolicy).toJson(); | 
| -    } | 
| -    if (creationTimestamp != null) { | 
| -      _json["creationTimestamp"] = creationTimestamp; | 
| -    } | 
| -    if (description != null) { | 
| -      _json["description"] = description; | 
| -    } | 
| -    if (id != null) { | 
| -      _json["id"] = id; | 
| -    } | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| -    } | 
| -    if (name != null) { | 
| -      _json["name"] = name; | 
| -    } | 
| -    if (region != null) { | 
| -      _json["region"] = region; | 
| -    } | 
| -    if (selfLink != null) { | 
| -      _json["selfLink"] = selfLink; | 
| -    } | 
| -    if (target != null) { | 
| -      _json["target"] = target; | 
| -    } | 
| -    if (zone != null) { | 
| -      _json["zone"] = zone; | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -class AutoscalerAggregatedList { | 
| -  /** | 
| -   * [Output Only] The unique identifier for the resource. This identifier is | 
| -   * defined by the server. | 
| -   */ | 
| -  core.String id; | 
| -  /** A map of scoped autoscaler lists. */ | 
| -  core.Map<core.String, AutoscalersScopedList> items; | 
| -  /** | 
| -   * [Output Only] Type of resource. Always compute#autoscalerAggregatedList for | 
| -   * aggregated lists of autoscalers. | 
| -   */ | 
| -  core.String kind; | 
| +  core.String kind; | 
| /** | 
| * [Output Only] This token allows you to get the next page of results for | 
| * list requests. If the number of results is larger than maxResults, use the | 
| @@ -19386,14 +19744,14 @@ class AutoscalerAggregatedList { | 
| /** [Output Only] Server-defined URL for this resource. */ | 
| core.String selfLink; | 
|  | 
| -  AutoscalerAggregatedList(); | 
| +  AddressAggregatedList(); | 
|  | 
| -  AutoscalerAggregatedList.fromJson(core.Map _json) { | 
| +  AddressAggregatedList.fromJson(core.Map _json) { | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| if (_json.containsKey("items")) { | 
| -      items = commons.mapMap<core.Map<core.String, core.Object>, AutoscalersScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new AutoscalersScopedList.fromJson(item)); | 
| +      items = commons.mapMap<core.Map<core.String, core.Object>, AddressesScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new AddressesScopedList.fromJson(item)); | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| @@ -19412,7 +19770,7 @@ class AutoscalerAggregatedList { | 
| _json["id"] = id; | 
| } | 
| if (items != null) { | 
| -      _json["items"] = commons.mapMap<AutoscalersScopedList, core.Map<core.String, core.Object>>(items, (AutoscalersScopedList item) => (item).toJson()); | 
| +      _json["items"] = commons.mapMap<AddressesScopedList, core.Map<core.String, core.Object>>(items, (AddressesScopedList item) => (item).toJson()); | 
| } | 
| if (kind != null) { | 
| _json["kind"] = kind; | 
| @@ -19427,18 +19785,18 @@ class AutoscalerAggregatedList { | 
| } | 
| } | 
|  | 
| -/** Contains a list of Autoscaler resources. */ | 
| -class AutoscalerList { | 
| +/** Contains a list of addresses. */ | 
| +class AddressList { | 
| /** | 
| * [Output Only] The unique identifier for the resource. This identifier is | 
| * defined by the server. | 
| */ | 
| core.String id; | 
| -  /** A list of Autoscaler resources. */ | 
| -  core.List<Autoscaler> items; | 
| +  /** [Output Only] A list of addresses. */ | 
| +  core.List<Address> items; | 
| /** | 
| -   * [Output Only] Type of resource. Always compute#autoscalerList for lists of | 
| -   * autoscalers. | 
| +   * [Output Only] Type of resource. Always compute#addressList for lists of | 
| +   * addresses. | 
| */ | 
| core.String kind; | 
| /** | 
| @@ -19449,17 +19807,17 @@ class AutoscalerList { | 
| * continue paging through the results. | 
| */ | 
| core.String nextPageToken; | 
| -  /** [Output Only] Server-defined URL for this resource. */ | 
| +  /** [Output Only] Server-defined URL for the resource. */ | 
| core.String selfLink; | 
|  | 
| -  AutoscalerList(); | 
| +  AddressList(); | 
|  | 
| -  AutoscalerList.fromJson(core.Map _json) { | 
| +  AddressList.fromJson(core.Map _json) { | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| if (_json.containsKey("items")) { | 
| -      items = _json["items"].map((value) => new Autoscaler.fromJson(value)).toList(); | 
| +      items = _json["items"].map((value) => new Address.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| @@ -19493,7 +19851,7 @@ class AutoscalerList { | 
| } | 
| } | 
|  | 
| -class AutoscalersScopedListWarningData { | 
| +class AddressesScopedListWarningData { | 
| /** | 
| * [Output Only] A key that provides more detail on the warning being | 
| * returned. For example, for warnings where there are no results in a list | 
| @@ -19507,9 +19865,9 @@ class AutoscalersScopedListWarningData { | 
| /** [Output Only] A warning data value corresponding to the key. */ | 
| core.String value; | 
|  | 
| -  AutoscalersScopedListWarningData(); | 
| +  AddressesScopedListWarningData(); | 
|  | 
| -  AutoscalersScopedListWarningData.fromJson(core.Map _json) { | 
| +  AddressesScopedListWarningData.fromJson(core.Map _json) { | 
| if (_json.containsKey("key")) { | 
| key = _json["key"]; | 
| } | 
| @@ -19531,10 +19889,10 @@ class AutoscalersScopedListWarningData { | 
| } | 
|  | 
| /** | 
| - * [Output Only] Informational warning which replaces the list of autoscalers | 
| - * when the list is empty. | 
| + * [Output Only] Informational warning which replaces the list of addresses when | 
| + * the list is empty. | 
| */ | 
| -class AutoscalersScopedListWarning { | 
| +class AddressesScopedListWarning { | 
| /** | 
| * [Output Only] A warning code, if applicable. For example, Compute Engine | 
| * returns NO_RESULTS_ON_PAGE if there are no results in the response. | 
| @@ -19563,18 +19921,18 @@ class AutoscalersScopedListWarning { | 
| * example: | 
| * "data": [ { "key": "scope", "value": "zones/us-east1-d" } | 
| */ | 
| -  core.List<AutoscalersScopedListWarningData> data; | 
| +  core.List<AddressesScopedListWarningData> data; | 
| /** [Output Only] A human-readable description of the warning code. */ | 
| core.String message; | 
|  | 
| -  AutoscalersScopedListWarning(); | 
| +  AddressesScopedListWarning(); | 
|  | 
| -  AutoscalersScopedListWarning.fromJson(core.Map _json) { | 
| +  AddressesScopedListWarning.fromJson(core.Map _json) { | 
| if (_json.containsKey("code")) { | 
| code = _json["code"]; | 
| } | 
| if (_json.containsKey("data")) { | 
| -      data = _json["data"].map((value) => new AutoscalersScopedListWarningData.fromJson(value)).toList(); | 
| +      data = _json["data"].map((value) => new AddressesScopedListWarningData.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("message")) { | 
| message = _json["message"]; | 
| @@ -19596,30 +19954,30 @@ class AutoscalersScopedListWarning { | 
| } | 
| } | 
|  | 
| -class AutoscalersScopedList { | 
| -  /** [Output Only] List of autoscalers contained in this scope. */ | 
| -  core.List<Autoscaler> autoscalers; | 
| +class AddressesScopedList { | 
| +  /** [Output Only] List of addresses contained in this scope. */ | 
| +  core.List<Address> addresses; | 
| /** | 
| -   * [Output Only] Informational warning which replaces the list of autoscalers | 
| +   * [Output Only] Informational warning which replaces the list of addresses | 
| * when the list is empty. | 
| */ | 
| -  AutoscalersScopedListWarning warning; | 
| +  AddressesScopedListWarning warning; | 
|  | 
| -  AutoscalersScopedList(); | 
| +  AddressesScopedList(); | 
|  | 
| -  AutoscalersScopedList.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("autoscalers")) { | 
| -      autoscalers = _json["autoscalers"].map((value) => new Autoscaler.fromJson(value)).toList(); | 
| +  AddressesScopedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("addresses")) { | 
| +      addresses = _json["addresses"].map((value) => new Address.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("warning")) { | 
| -      warning = new AutoscalersScopedListWarning.fromJson(_json["warning"]); | 
| +      warning = new AddressesScopedListWarning.fromJson(_json["warning"]); | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (autoscalers != null) { | 
| -      _json["autoscalers"] = autoscalers.map((value) => (value).toJson()).toList(); | 
| +    if (addresses != null) { | 
| +      _json["addresses"] = addresses.map((value) => (value).toJson()).toList(); | 
| } | 
| if (warning != null) { | 
| _json["warning"] = (warning).toJson(); | 
| @@ -19628,526 +19986,2031 @@ class AutoscalersScopedList { | 
| } | 
| } | 
|  | 
| -/** Cloud Autoscaler policy. */ | 
| -class AutoscalingPolicy { | 
| +/** An instance-attached disk resource. */ | 
| +class AttachedDisk { | 
| /** | 
| -   * The number of seconds that the autoscaler should wait before it starts | 
| -   * collecting information from a new instance. This prevents the autoscaler | 
| -   * from collecting information when the instance is initializing, during which | 
| -   * the collected usage would not be reliable. The default time autoscaler | 
| -   * waits is 60 seconds. | 
| +   * Specifies whether the disk will be auto-deleted when the instance is | 
| +   * deleted (but not when the disk is detached from the instance). | 
| +   */ | 
| +  core.bool autoDelete; | 
| +  /** | 
| +   * Indicates that this is a boot disk. The virtual machine will use the first | 
| +   * partition of the disk for its root filesystem. | 
| +   */ | 
| +  core.bool boot; | 
| +  /** | 
| +   * Specifies a unique device name of your choice that is reflected into the | 
| +   * /dev/disk/by-id/google-* tree of a Linux operating system running within | 
| +   * the instance. This name can be used to reference the device for mounting, | 
| +   * resizing, and so on, from within the instance. | 
| * | 
| -   * Virtual machine initialization times might vary because of numerous | 
| -   * factors. We recommend that you test how long an instance may take to | 
| -   * initialize. To do this, create an instance and time the startup process. | 
| +   * If not specified, the server chooses a default device name to apply to this | 
| +   * disk, in the form persistent-disks-x, where x is a number assigned by | 
| +   * Google Compute Engine. This field is only applicable for persistent disks. | 
| */ | 
| -  core.int coolDownPeriodSec; | 
| +  core.String deviceName; | 
| /** | 
| -   * Defines the CPU utilization policy that allows the autoscaler to scale | 
| -   * based on the average CPU utilization of a managed instance group. | 
| +   * Encrypts or decrypts a disk using a customer-supplied encryption key. | 
| +   * | 
| +   * If you are creating a new disk, this field encrypts the new disk using an | 
| +   * encryption key that you provide. If you are attaching an existing disk that | 
| +   * is already encrypted, this field decrypts the disk using the | 
| +   * customer-supplied encryption key. | 
| +   * | 
| +   * If you encrypt a disk using a customer-supplied key, you must provide the | 
| +   * same key again when you attempt to use this resource at a later time. For | 
| +   * example, you must provide the key when you create a snapshot or an image | 
| +   * from the disk or when you attach the disk to a virtual machine instance. | 
| +   * | 
| +   * If you do not provide an encryption key, then the disk will be encrypted | 
| +   * using an automatically generated key and you do not need to provide a key | 
| +   * to use the disk later. | 
| +   * | 
| +   * Instance templates do not store customer-supplied encryption keys, so you | 
| +   * cannot use your own keys to encrypt disks in a managed instance group. | 
| */ | 
| -  AutoscalingPolicyCpuUtilization cpuUtilization; | 
| -  /** Configuration parameters of autoscaling based on a custom metric. */ | 
| -  core.List<AutoscalingPolicyCustomMetricUtilization> customMetricUtilizations; | 
| -  /** Configuration parameters of autoscaling based on load balancer. */ | 
| -  AutoscalingPolicyLoadBalancingUtilization loadBalancingUtilization; | 
| +  CustomerEncryptionKey diskEncryptionKey; | 
| /** | 
| -   * The maximum number of instances that the autoscaler can scale up to. This | 
| -   * is required when creating or updating an autoscaler. The maximum number of | 
| -   * replicas should not be lower than minimal number of replicas. | 
| +   * Assigns a zero-based index to this disk, where 0 is reserved for the boot | 
| +   * disk. For example, if you have many disks attached to an instance, each | 
| +   * disk would have a unique index number. If not specified, the server will | 
| +   * choose an appropriate value. | 
| */ | 
| -  core.int maxNumReplicas; | 
| +  core.int index; | 
| /** | 
| -   * The minimum number of replicas that the autoscaler can scale down to. This | 
| -   * cannot be less than 0. If not provided, autoscaler will choose a default | 
| -   * value depending on maximum number of instances allowed. | 
| +   * [Input Only] Specifies the parameters for a new disk that will be created | 
| +   * alongside the new instance. Use initialization parameters to create boot | 
| +   * disks or local SSDs attached to the new instance. | 
| +   * | 
| +   * This property is mutually exclusive with the source property; you can only | 
| +   * define one or the other, but not both. | 
| */ | 
| -  core.int minNumReplicas; | 
| +  AttachedDiskInitializeParams initializeParams; | 
| +  /** | 
| +   * Specifies the disk interface to use for attaching this disk, which is | 
| +   * either SCSI or NVME. The default is SCSI. Persistent disks must always use | 
| +   * SCSI and the request will fail if you attempt to attach a persistent disk | 
| +   * in any other format than SCSI. Local SSDs can use either NVME or SCSI. For | 
| +   * performance characteristics of SCSI over NVMe, see Local SSD performance. | 
| +   * Possible string values are: | 
| +   * - "NVME" | 
| +   * - "SCSI" | 
| +   */ | 
| +  core.String interface; | 
| +  /** | 
| +   * [Output Only] Type of the resource. Always compute#attachedDisk for | 
| +   * attached disks. | 
| +   */ | 
| +  core.String kind; | 
| +  /** [Output Only] Any valid publicly visible licenses. */ | 
| +  core.List<core.String> licenses; | 
| +  /** | 
| +   * The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If | 
| +   * not specified, the default is to attach the disk in READ_WRITE mode. | 
| +   * Possible string values are: | 
| +   * - "READ_ONLY" | 
| +   * - "READ_WRITE" | 
| +   */ | 
| +  core.String mode; | 
| +  /** | 
| +   * Specifies a valid partial or full URL to an existing Persistent Disk | 
| +   * resource. When creating a new instance, one of initializeParams.sourceImage | 
| +   * or disks.source is required. | 
| +   * | 
| +   * If desired, you can also attach existing non-root persistent disks using | 
| +   * this property. This field is only applicable for persistent disks. | 
| +   * | 
| +   * Note that for InstanceTemplate, specify the disk name, not the URL for the | 
| +   * disk. | 
| +   */ | 
| +  core.String source; | 
| +  /** | 
| +   * Specifies the type of the disk, either SCRATCH or PERSISTENT. If not | 
| +   * specified, the default is PERSISTENT. | 
| +   * Possible string values are: | 
| +   * - "PERSISTENT" | 
| +   * - "SCRATCH" | 
| +   */ | 
| +  core.String type; | 
|  | 
| -  AutoscalingPolicy(); | 
| +  AttachedDisk(); | 
|  | 
| -  AutoscalingPolicy.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("coolDownPeriodSec")) { | 
| -      coolDownPeriodSec = _json["coolDownPeriodSec"]; | 
| +  AttachedDisk.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("autoDelete")) { | 
| +      autoDelete = _json["autoDelete"]; | 
| } | 
| -    if (_json.containsKey("cpuUtilization")) { | 
| -      cpuUtilization = new AutoscalingPolicyCpuUtilization.fromJson(_json["cpuUtilization"]); | 
| +    if (_json.containsKey("boot")) { | 
| +      boot = _json["boot"]; | 
| } | 
| -    if (_json.containsKey("customMetricUtilizations")) { | 
| -      customMetricUtilizations = _json["customMetricUtilizations"].map((value) => new AutoscalingPolicyCustomMetricUtilization.fromJson(value)).toList(); | 
| +    if (_json.containsKey("deviceName")) { | 
| +      deviceName = _json["deviceName"]; | 
| } | 
| -    if (_json.containsKey("loadBalancingUtilization")) { | 
| -      loadBalancingUtilization = new AutoscalingPolicyLoadBalancingUtilization.fromJson(_json["loadBalancingUtilization"]); | 
| +    if (_json.containsKey("diskEncryptionKey")) { | 
| +      diskEncryptionKey = new CustomerEncryptionKey.fromJson(_json["diskEncryptionKey"]); | 
| } | 
| -    if (_json.containsKey("maxNumReplicas")) { | 
| -      maxNumReplicas = _json["maxNumReplicas"]; | 
| +    if (_json.containsKey("index")) { | 
| +      index = _json["index"]; | 
| } | 
| -    if (_json.containsKey("minNumReplicas")) { | 
| -      minNumReplicas = _json["minNumReplicas"]; | 
| +    if (_json.containsKey("initializeParams")) { | 
| +      initializeParams = new AttachedDiskInitializeParams.fromJson(_json["initializeParams"]); | 
| +    } | 
| +    if (_json.containsKey("interface")) { | 
| +      interface = _json["interface"]; | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("licenses")) { | 
| +      licenses = _json["licenses"]; | 
| +    } | 
| +    if (_json.containsKey("mode")) { | 
| +      mode = _json["mode"]; | 
| +    } | 
| +    if (_json.containsKey("source")) { | 
| +      source = _json["source"]; | 
| +    } | 
| +    if (_json.containsKey("type")) { | 
| +      type = _json["type"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (coolDownPeriodSec != null) { | 
| -      _json["coolDownPeriodSec"] = coolDownPeriodSec; | 
| +    if (autoDelete != null) { | 
| +      _json["autoDelete"] = autoDelete; | 
| } | 
| -    if (cpuUtilization != null) { | 
| -      _json["cpuUtilization"] = (cpuUtilization).toJson(); | 
| +    if (boot != null) { | 
| +      _json["boot"] = boot; | 
| } | 
| -    if (customMetricUtilizations != null) { | 
| -      _json["customMetricUtilizations"] = customMetricUtilizations.map((value) => (value).toJson()).toList(); | 
| +    if (deviceName != null) { | 
| +      _json["deviceName"] = deviceName; | 
| } | 
| -    if (loadBalancingUtilization != null) { | 
| -      _json["loadBalancingUtilization"] = (loadBalancingUtilization).toJson(); | 
| +    if (diskEncryptionKey != null) { | 
| +      _json["diskEncryptionKey"] = (diskEncryptionKey).toJson(); | 
| } | 
| -    if (maxNumReplicas != null) { | 
| -      _json["maxNumReplicas"] = maxNumReplicas; | 
| +    if (index != null) { | 
| +      _json["index"] = index; | 
| } | 
| -    if (minNumReplicas != null) { | 
| -      _json["minNumReplicas"] = minNumReplicas; | 
| +    if (initializeParams != null) { | 
| +      _json["initializeParams"] = (initializeParams).toJson(); | 
| +    } | 
| +    if (interface != null) { | 
| +      _json["interface"] = interface; | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (licenses != null) { | 
| +      _json["licenses"] = licenses; | 
| +    } | 
| +    if (mode != null) { | 
| +      _json["mode"] = mode; | 
| +    } | 
| +    if (source != null) { | 
| +      _json["source"] = source; | 
| +    } | 
| +    if (type != null) { | 
| +      _json["type"] = type; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** CPU utilization policy. */ | 
| -class AutoscalingPolicyCpuUtilization { | 
| +/** | 
| + * [Input Only] Specifies the parameters for a new disk that will be created | 
| + * alongside the new instance. Use initialization parameters to create boot | 
| + * disks or local SSDs attached to the new instance. | 
| + * | 
| + * This property is mutually exclusive with the source property; you can only | 
| + * define one or the other, but not both. | 
| + */ | 
| +class AttachedDiskInitializeParams { | 
| /** | 
| -   * The target CPU utilization that the autoscaler should maintain. Must be a | 
| -   * float value in the range (0, 1]. If not specified, the default is 0.6. | 
| -   * | 
| -   * If the CPU level is below the target utilization, the autoscaler scales | 
| -   * down the number of instances until it reaches the minimum number of | 
| -   * instances you specified or until the average CPU of your instances reaches | 
| -   * the target utilization. | 
| -   * | 
| -   * If the average CPU is above the target utilization, the autoscaler scales | 
| -   * up until it reaches the maximum number of instances you specified or until | 
| -   * the average utilization reaches the target utilization. | 
| +   * Specifies the disk name. If not specified, the default is to use the name | 
| +   * of the instance. | 
| */ | 
| -  core.double utilizationTarget; | 
| - | 
| -  AutoscalingPolicyCpuUtilization(); | 
| - | 
| -  AutoscalingPolicyCpuUtilization.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("utilizationTarget")) { | 
| -      utilizationTarget = _json["utilizationTarget"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (utilizationTarget != null) { | 
| -      _json["utilizationTarget"] = utilizationTarget; | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** Custom utilization metric policy. */ | 
| -class AutoscalingPolicyCustomMetricUtilization { | 
| +  core.String diskName; | 
| +  /** Specifies the size of the disk in base-2 GB. */ | 
| +  core.String diskSizeGb; | 
| /** | 
| -   * The identifier (type) of the Stackdriver Monitoring metric. The metric | 
| -   * cannot have negative values and should be a utilization metric, which means | 
| -   * that the number of virtual machines handling requests should increase or | 
| -   * decrease proportionally to the metric. | 
| +   * Specifies the disk type to use to create the instance. If not specified, | 
| +   * the default is pd-standard, specified using the full URL. For example: | 
| * | 
| -   * The metric must have a value type of INT64 or DOUBLE. | 
| +   * https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard | 
| +   * | 
| +   * Other values include pd-ssd and local-ssd. If you define this field, you | 
| +   * can provide either the full or partial URL. For example, the following are | 
| +   * valid values: | 
| +   * - | 
| +   * https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType | 
| +   * - projects/project/zones/zone/diskTypes/diskType | 
| +   * - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is | 
| +   * the name of the disk type, not URL. | 
| */ | 
| -  core.String metric; | 
| +  core.String diskType; | 
| /** | 
| -   * The target value of the metric that autoscaler should maintain. This must | 
| -   * be a positive value. | 
| +   * The source image to create this disk. When creating a new instance, one of | 
| +   * initializeParams.sourceImage or disks.source is required. | 
| * | 
| -   * For example, a good metric to use as a utilization_target is | 
| -   * compute.googleapis.com/instance/network/received_bytes_count. The | 
| -   * autoscaler will work to keep this value constant for each of the instances. | 
| +   * To create a disk with one of the public operating system images, specify | 
| +   * the image by its family name. For example, specify family/debian-8 to use | 
| +   * the latest Debian 8 image: | 
| +   * | 
| +   * projects/debian-cloud/global/images/family/debian-8 | 
| +   * | 
| +   * Alternatively, use a specific version of a public operating system image: | 
| +   * | 
| +   * projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD | 
| +   * | 
| +   * To create a disk with a private image that you created, specify the image | 
| +   * name in the following format: | 
| +   * | 
| +   * global/images/my-private-image | 
| +   * | 
| +   * You can also specify a private image by its image family, which returns the | 
| +   * latest version of the image in that family. Replace the image name with | 
| +   * family/family-name: | 
| +   * | 
| +   * global/images/family/my-private-family | 
| +   * | 
| +   * If the source image is deleted later, this field will not be set. | 
| */ | 
| -  core.double utilizationTarget; | 
| +  core.String sourceImage; | 
| /** | 
| -   * Defines how target utilization value is expressed for a Stackdriver | 
| -   * Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If | 
| -   * not specified, the default is GAUGE. | 
| -   * Possible string values are: | 
| -   * - "DELTA_PER_MINUTE" | 
| -   * - "DELTA_PER_SECOND" | 
| -   * - "GAUGE" | 
| +   * The customer-supplied encryption key of the source image. Required if the | 
| +   * source image is protected by a customer-supplied encryption key. | 
| +   * | 
| +   * Instance templates do not store customer-supplied encryption keys, so you | 
| +   * cannot create disks for instances in a managed instance group if the source | 
| +   * images are encrypted with your own keys. | 
| */ | 
| -  core.String utilizationTargetType; | 
| +  CustomerEncryptionKey sourceImageEncryptionKey; | 
|  | 
| -  AutoscalingPolicyCustomMetricUtilization(); | 
| +  AttachedDiskInitializeParams(); | 
|  | 
| -  AutoscalingPolicyCustomMetricUtilization.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("metric")) { | 
| -      metric = _json["metric"]; | 
| +  AttachedDiskInitializeParams.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("diskName")) { | 
| +      diskName = _json["diskName"]; | 
| } | 
| -    if (_json.containsKey("utilizationTarget")) { | 
| -      utilizationTarget = _json["utilizationTarget"]; | 
| +    if (_json.containsKey("diskSizeGb")) { | 
| +      diskSizeGb = _json["diskSizeGb"]; | 
| } | 
| -    if (_json.containsKey("utilizationTargetType")) { | 
| -      utilizationTargetType = _json["utilizationTargetType"]; | 
| +    if (_json.containsKey("diskType")) { | 
| +      diskType = _json["diskType"]; | 
| +    } | 
| +    if (_json.containsKey("sourceImage")) { | 
| +      sourceImage = _json["sourceImage"]; | 
| +    } | 
| +    if (_json.containsKey("sourceImageEncryptionKey")) { | 
| +      sourceImageEncryptionKey = new CustomerEncryptionKey.fromJson(_json["sourceImageEncryptionKey"]); | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (metric != null) { | 
| -      _json["metric"] = metric; | 
| +    if (diskName != null) { | 
| +      _json["diskName"] = diskName; | 
| } | 
| -    if (utilizationTarget != null) { | 
| -      _json["utilizationTarget"] = utilizationTarget; | 
| +    if (diskSizeGb != null) { | 
| +      _json["diskSizeGb"] = diskSizeGb; | 
| } | 
| -    if (utilizationTargetType != null) { | 
| -      _json["utilizationTargetType"] = utilizationTargetType; | 
| +    if (diskType != null) { | 
| +      _json["diskType"] = diskType; | 
| } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** Configuration parameters of autoscaling based on load balancing. */ | 
| -class AutoscalingPolicyLoadBalancingUtilization { | 
| -  /** | 
| -   * Fraction of backend capacity utilization (set in HTTP(s) load balancing | 
| -   * configuration) that autoscaler should maintain. Must be a positive float | 
| -   * value. If not defined, the default is 0.8. | 
| -   */ | 
| -  core.double utilizationTarget; | 
| - | 
| -  AutoscalingPolicyLoadBalancingUtilization(); | 
| - | 
| -  AutoscalingPolicyLoadBalancingUtilization.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("utilizationTarget")) { | 
| -      utilizationTarget = _json["utilizationTarget"]; | 
| +    if (sourceImage != null) { | 
| +      _json["sourceImage"] = sourceImage; | 
| } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (utilizationTarget != null) { | 
| -      _json["utilizationTarget"] = utilizationTarget; | 
| +    if (sourceImageEncryptionKey != null) { | 
| +      _json["sourceImageEncryptionKey"] = (sourceImageEncryptionKey).toJson(); | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** Message containing information of one individual backend. */ | 
| -class Backend { | 
| -  /** | 
| -   * Specifies the balancing mode for this backend. For global HTTP(S) or | 
| -   * TCP/SSL load balancing, the default is UTILIZATION. Valid values are | 
| -   * UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| -   * Possible string values are: | 
| -   * - "CONNECTION" | 
| -   * - "RATE" | 
| -   * - "UTILIZATION" | 
| -   */ | 
| -  core.String balancingMode; | 
| +/** | 
| + * Represents an Autoscaler resource. Autoscalers allow you to automatically | 
| + * scale virtual machine instances in managed instance groups according to an | 
| + * autoscaling policy that you define. For more information, read Autoscaling | 
| + * Groups of Instances. | 
| + */ | 
| +class Autoscaler { | 
| /** | 
| -   * A multiplier applied to the group's maximum servicing capacity (based on | 
| -   * UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group | 
| -   * will serve up to 100% of its configured capacity (depending on | 
| -   * balancingMode). A setting of 0 means the group is completely drained, | 
| -   * offering 0% of its available Capacity. Valid range is [0.0,1.0]. | 
| +   * The configuration parameters for the autoscaling algorithm. You can define | 
| +   * one or more of the policies for an autoscaler: cpuUtilization, | 
| +   * customMetricUtilizations, and loadBalancingUtilization. | 
| * | 
| -   * This cannot be used for internal load balancing. | 
| +   * If none of these are specified, the default will be to autoscale based on | 
| +   * cpuUtilization to 0.6 or 60%. | 
| */ | 
| -  core.double capacityScaler; | 
| +  AutoscalingPolicy autoscalingPolicy; | 
| +  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| +  core.String creationTimestamp; | 
| /** | 
| * An optional description of this resource. Provide this property when you | 
| * create the resource. | 
| */ | 
| core.String description; | 
| /** | 
| -   * The fully-qualified URL of a zonal Instance Group resource. This instance | 
| -   * group defines the list of instances that serve traffic. Member virtual | 
| -   * machine instances from each instance group must live in the same zone as | 
| -   * the instance group itself. No two backends in a backend service are allowed | 
| -   * to use same Instance Group resource. | 
| -   * | 
| -   * Note that you must specify an Instance Group resource using the | 
| -   * fully-qualified URL, rather than a partial URL. | 
| -   * | 
| -   * When the BackendService has load balancing scheme INTERNAL, the instance | 
| -   * group must be in a zone within the same region as the BackendService. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| -  core.String group; | 
| +  core.String id; | 
| /** | 
| -   * The max number of simultaneous connections for the group. Can be used with | 
| -   * either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, | 
| -   * either maxConnections or maxConnectionsPerInstance must be set. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| +   * [Output Only] Type of the resource. Always compute#autoscaler for | 
| +   * autoscalers. | 
| */ | 
| -  core.int maxConnections; | 
| +  core.String kind; | 
| /** | 
| -   * The max number of simultaneous connections that a single backend instance | 
| -   * can handle. This is used to calculate the capacity of the group. Can be | 
| -   * used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION | 
| -   * mode, either maxConnections or maxConnectionsPerInstance must be set. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| +   * Name of the resource. Provided by the client when the resource is created. | 
| +   * The name must be 1-63 characters long, and comply with RFC1035. | 
| +   * Specifically, the name must be 1-63 characters long and match the regular | 
| +   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| +   * be a lowercase letter, and all following characters must be a dash, | 
| +   * lowercase letter, or digit, except the last character, which cannot be a | 
| +   * dash. | 
| */ | 
| -  core.int maxConnectionsPerInstance; | 
| +  core.String name; | 
| /** | 
| -   * The max requests per second (RPS) of the group. Can be used with either | 
| -   * RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE | 
| -   * mode, either maxRate or maxRatePerInstance must be set. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| +   * [Output Only] URL of the region where the instance group resides (for | 
| +   * autoscalers living in regional scope). | 
| */ | 
| -  core.int maxRate; | 
| +  core.String region; | 
| +  /** [Output Only] Server-defined URL for the resource. */ | 
| +  core.String selfLink; | 
| /** | 
| -   * The max requests per second (RPS) that a single backend instance can | 
| -   * handle. This is used to calculate the capacity of the group. Can be used in | 
| -   * either balancing mode. For RATE mode, either maxRate or maxRatePerInstance | 
| -   * must be set. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| +   * [Output Only] The status of the autoscaler configuration. | 
| +   * Possible string values are: | 
| +   * - "ACTIVE" | 
| +   * - "DELETING" | 
| +   * - "ERROR" | 
| +   * - "PENDING" | 
| */ | 
| -  core.double maxRatePerInstance; | 
| +  core.String status; | 
| /** | 
| -   * Used when balancingMode is UTILIZATION. This ratio defines the CPU | 
| -   * utilization target for the group. The default is 0.8. Valid range is [0.0, | 
| -   * 1.0]. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| +   * [Output Only] Human-readable details about the current state of the | 
| +   * autoscaler. Read the documentation for Commonly returned status messages | 
| +   * for examples of status messages you might encounter. | 
| */ | 
| -  core.double maxUtilization; | 
| +  core.List<AutoscalerStatusDetails> statusDetails; | 
| +  /** URL of the managed instance group that this autoscaler will scale. */ | 
| +  core.String target; | 
| +  /** | 
| +   * [Output Only] URL of the zone where the instance group resides (for | 
| +   * autoscalers living in zonal scope). | 
| +   */ | 
| +  core.String zone; | 
|  | 
| -  Backend(); | 
| +  Autoscaler(); | 
|  | 
| -  Backend.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("balancingMode")) { | 
| -      balancingMode = _json["balancingMode"]; | 
| +  Autoscaler.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("autoscalingPolicy")) { | 
| +      autoscalingPolicy = new AutoscalingPolicy.fromJson(_json["autoscalingPolicy"]); | 
| } | 
| -    if (_json.containsKey("capacityScaler")) { | 
| -      capacityScaler = _json["capacityScaler"]; | 
| +    if (_json.containsKey("creationTimestamp")) { | 
| +      creationTimestamp = _json["creationTimestamp"]; | 
| } | 
| if (_json.containsKey("description")) { | 
| description = _json["description"]; | 
| } | 
| -    if (_json.containsKey("group")) { | 
| -      group = _json["group"]; | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| } | 
| -    if (_json.containsKey("maxConnections")) { | 
| -      maxConnections = _json["maxConnections"]; | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| } | 
| -    if (_json.containsKey("maxConnectionsPerInstance")) { | 
| -      maxConnectionsPerInstance = _json["maxConnectionsPerInstance"]; | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| } | 
| -    if (_json.containsKey("maxRate")) { | 
| -      maxRate = _json["maxRate"]; | 
| +    if (_json.containsKey("region")) { | 
| +      region = _json["region"]; | 
| } | 
| -    if (_json.containsKey("maxRatePerInstance")) { | 
| -      maxRatePerInstance = _json["maxRatePerInstance"]; | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| } | 
| -    if (_json.containsKey("maxUtilization")) { | 
| -      maxUtilization = _json["maxUtilization"]; | 
| +    if (_json.containsKey("status")) { | 
| +      status = _json["status"]; | 
| +    } | 
| +    if (_json.containsKey("statusDetails")) { | 
| +      statusDetails = _json["statusDetails"].map((value) => new AutoscalerStatusDetails.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("target")) { | 
| +      target = _json["target"]; | 
| +    } | 
| +    if (_json.containsKey("zone")) { | 
| +      zone = _json["zone"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (balancingMode != null) { | 
| -      _json["balancingMode"] = balancingMode; | 
| +    if (autoscalingPolicy != null) { | 
| +      _json["autoscalingPolicy"] = (autoscalingPolicy).toJson(); | 
| } | 
| -    if (capacityScaler != null) { | 
| -      _json["capacityScaler"] = capacityScaler; | 
| +    if (creationTimestamp != null) { | 
| +      _json["creationTimestamp"] = creationTimestamp; | 
| } | 
| if (description != null) { | 
| _json["description"] = description; | 
| } | 
| -    if (group != null) { | 
| -      _json["group"] = group; | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| } | 
| -    if (maxConnections != null) { | 
| -      _json["maxConnections"] = maxConnections; | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| } | 
| -    if (maxConnectionsPerInstance != null) { | 
| -      _json["maxConnectionsPerInstance"] = maxConnectionsPerInstance; | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| } | 
| -    if (maxRate != null) { | 
| -      _json["maxRate"] = maxRate; | 
| +    if (region != null) { | 
| +      _json["region"] = region; | 
| } | 
| -    if (maxRatePerInstance != null) { | 
| -      _json["maxRatePerInstance"] = maxRatePerInstance; | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| } | 
| -    if (maxUtilization != null) { | 
| -      _json["maxUtilization"] = maxUtilization; | 
| +    if (status != null) { | 
| +      _json["status"] = status; | 
| +    } | 
| +    if (statusDetails != null) { | 
| +      _json["statusDetails"] = statusDetails.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (target != null) { | 
| +      _json["target"] = target; | 
| +    } | 
| +    if (zone != null) { | 
| +      _json["zone"] = zone; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** A BackendBucket resource. This resource defines a Cloud Storage bucket. */ | 
| -class BackendBucket { | 
| -  /** Cloud Storage bucket name. */ | 
| -  core.String bucketName; | 
| -  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| -  core.String creationTimestamp; | 
| +class AutoscalerAggregatedList { | 
| /** | 
| -   * An optional textual description of the resource; provided by the client | 
| -   * when the resource is created. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| -  core.String description; | 
| -  /** If true, enable Cloud CDN for this BackendBucket. */ | 
| -  core.bool enableCdn; | 
| +  core.String id; | 
| +  /** A map of scoped autoscaler lists. */ | 
| +  core.Map<core.String, AutoscalersScopedList> items; | 
| /** | 
| -   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   * [Output Only] Type of resource. Always compute#autoscalerAggregatedList for | 
| +   * aggregated lists of autoscalers. | 
| +   */ | 
| +  core.String kind; | 
| +  /** | 
| +   * [Output Only] This token allows you to get the next page of results for | 
| +   * list requests. If the number of results is larger than maxResults, use the | 
| +   * nextPageToken as a value for the query parameter pageToken in the next list | 
| +   * request. Subsequent list requests will have their own nextPageToken to | 
| +   * continue paging through the results. | 
| +   */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  AutoscalerAggregatedList(); | 
| + | 
| +  AutoscalerAggregatedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("items")) { | 
| +      items = commons.mapMap<core.Map<core.String, core.Object>, AutoscalersScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new AutoscalersScopedList.fromJson(item)); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (items != null) { | 
| +      _json["items"] = commons.mapMap<AutoscalersScopedList, core.Map<core.String, core.Object>>(items, (AutoscalersScopedList item) => (item).toJson()); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Contains a list of Autoscaler resources. */ | 
| +class AutoscalerList { | 
| +  /** | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| core.String id; | 
| -  /** Type of the resource. */ | 
| +  /** A list of Autoscaler resources. */ | 
| +  core.List<Autoscaler> items; | 
| +  /** | 
| +   * [Output Only] Type of resource. Always compute#autoscalerList for lists of | 
| +   * autoscalers. | 
| +   */ | 
| core.String kind; | 
| /** | 
| -   * Name of the resource. Provided by the client when the resource is created. | 
| -   * The name must be 1-63 characters long, and comply with RFC1035. | 
| -   * Specifically, the name must be 1-63 characters long and match the regular | 
| -   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| -   * be a lowercase letter, and all following characters must be a dash, | 
| -   * lowercase letter, or digit, except the last character, which cannot be a | 
| -   * dash. | 
| +   * [Output Only] This token allows you to get the next page of results for | 
| +   * list requests. If the number of results is larger than maxResults, use the | 
| +   * nextPageToken as a value for the query parameter pageToken in the next list | 
| +   * request. Subsequent list requests will have their own nextPageToken to | 
| +   * continue paging through the results. | 
| +   */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  AutoscalerList(); | 
| + | 
| +  AutoscalerList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("items")) { | 
| +      items = _json["items"].map((value) => new Autoscaler.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (items != null) { | 
| +      _json["items"] = items.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class AutoscalerStatusDetails { | 
| +  /** The status message. */ | 
| +  core.String message; | 
| +  /** | 
| +   * The type of error returned. | 
| +   * Possible string values are: | 
| +   * - "ALL_INSTANCES_UNHEALTHY" | 
| +   * - "BACKEND_SERVICE_DOES_NOT_EXIST" | 
| +   * - "CAPPED_AT_MAX_NUM_REPLICAS" | 
| +   * - "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE" | 
| +   * - "CUSTOM_METRIC_INVALID" | 
| +   * - "MIN_EQUALS_MAX" | 
| +   * - "MISSING_CUSTOM_METRIC_DATA_POINTS" | 
| +   * - "MISSING_LOAD_BALANCING_DATA_POINTS" | 
| +   * - "MORE_THAN_ONE_BACKEND_SERVICE" | 
| +   * - "NOT_ENOUGH_QUOTA_AVAILABLE" | 
| +   * - "REGION_RESOURCE_STOCKOUT" | 
| +   * - "SCALING_TARGET_DOES_NOT_EXIST" | 
| +   * - "UNKNOWN" | 
| +   * - "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION" | 
| +   * - "ZONE_RESOURCE_STOCKOUT" | 
| +   */ | 
| +  core.String type; | 
| + | 
| +  AutoscalerStatusDetails(); | 
| + | 
| +  AutoscalerStatusDetails.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("message")) { | 
| +      message = _json["message"]; | 
| +    } | 
| +    if (_json.containsKey("type")) { | 
| +      type = _json["type"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (message != null) { | 
| +      _json["message"] = message; | 
| +    } | 
| +    if (type != null) { | 
| +      _json["type"] = type; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class AutoscalersScopedListWarningData { | 
| +  /** | 
| +   * [Output Only] A key that provides more detail on the warning being | 
| +   * returned. For example, for warnings where there are no results in a list | 
| +   * request for a particular zone, this key might be scope and the key value | 
| +   * might be the zone name. Other examples might be a key indicating a | 
| +   * deprecated resource and a suggested replacement, or a warning about invalid | 
| +   * network settings (for example, if an instance attempts to perform IP | 
| +   * forwarding but is not enabled for IP forwarding). | 
| +   */ | 
| +  core.String key; | 
| +  /** [Output Only] A warning data value corresponding to the key. */ | 
| +  core.String value; | 
| + | 
| +  AutoscalersScopedListWarningData(); | 
| + | 
| +  AutoscalersScopedListWarningData.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("key")) { | 
| +      key = _json["key"]; | 
| +    } | 
| +    if (_json.containsKey("value")) { | 
| +      value = _json["value"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (key != null) { | 
| +      _json["key"] = key; | 
| +    } | 
| +    if (value != null) { | 
| +      _json["value"] = value; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * [Output Only] Informational warning which replaces the list of autoscalers | 
| + * when the list is empty. | 
| + */ | 
| +class AutoscalersScopedListWarning { | 
| +  /** | 
| +   * [Output Only] A warning code, if applicable. For example, Compute Engine | 
| +   * returns NO_RESULTS_ON_PAGE if there are no results in the response. | 
| +   * Possible string values are: | 
| +   * - "CLEANUP_FAILED" | 
| +   * - "DEPRECATED_RESOURCE_USED" | 
| +   * - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" | 
| +   * - "FIELD_VALUE_OVERRIDEN" | 
| +   * - "INJECTED_KERNELS_DEPRECATED" | 
| +   * - "NEXT_HOP_ADDRESS_NOT_ASSIGNED" | 
| +   * - "NEXT_HOP_CANNOT_IP_FORWARD" | 
| +   * - "NEXT_HOP_INSTANCE_NOT_FOUND" | 
| +   * - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" | 
| +   * - "NEXT_HOP_NOT_RUNNING" | 
| +   * - "NOT_CRITICAL_ERROR" | 
| +   * - "NO_RESULTS_ON_PAGE" | 
| +   * - "REQUIRED_TOS_AGREEMENT" | 
| +   * - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" | 
| +   * - "RESOURCE_NOT_DELETED" | 
| +   * - "SINGLE_INSTANCE_PROPERTY_TEMPLATE" | 
| +   * - "UNREACHABLE" | 
| +   */ | 
| +  core.String code; | 
| +  /** | 
| +   * [Output Only] Metadata about this warning in key: value format. For | 
| +   * example: | 
| +   * "data": [ { "key": "scope", "value": "zones/us-east1-d" } | 
| +   */ | 
| +  core.List<AutoscalersScopedListWarningData> data; | 
| +  /** [Output Only] A human-readable description of the warning code. */ | 
| +  core.String message; | 
| + | 
| +  AutoscalersScopedListWarning(); | 
| + | 
| +  AutoscalersScopedListWarning.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("code")) { | 
| +      code = _json["code"]; | 
| +    } | 
| +    if (_json.containsKey("data")) { | 
| +      data = _json["data"].map((value) => new AutoscalersScopedListWarningData.fromJson(value)).toList(); | 
| +    } | 
| +    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 (data != null) { | 
| +      _json["data"] = data.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (message != null) { | 
| +      _json["message"] = message; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class AutoscalersScopedList { | 
| +  /** [Output Only] List of autoscalers contained in this scope. */ | 
| +  core.List<Autoscaler> autoscalers; | 
| +  /** | 
| +   * [Output Only] Informational warning which replaces the list of autoscalers | 
| +   * when the list is empty. | 
| +   */ | 
| +  AutoscalersScopedListWarning warning; | 
| + | 
| +  AutoscalersScopedList(); | 
| + | 
| +  AutoscalersScopedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("autoscalers")) { | 
| +      autoscalers = _json["autoscalers"].map((value) => new Autoscaler.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("warning")) { | 
| +      warning = new AutoscalersScopedListWarning.fromJson(_json["warning"]); | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (autoscalers != null) { | 
| +      _json["autoscalers"] = autoscalers.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (warning != null) { | 
| +      _json["warning"] = (warning).toJson(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Cloud Autoscaler policy. */ | 
| +class AutoscalingPolicy { | 
| +  /** | 
| +   * The number of seconds that the autoscaler should wait before it starts | 
| +   * collecting information from a new instance. This prevents the autoscaler | 
| +   * from collecting information when the instance is initializing, during which | 
| +   * the collected usage would not be reliable. The default time autoscaler | 
| +   * waits is 60 seconds. | 
| +   * | 
| +   * Virtual machine initialization times might vary because of numerous | 
| +   * factors. We recommend that you test how long an instance may take to | 
| +   * initialize. To do this, create an instance and time the startup process. | 
| +   */ | 
| +  core.int coolDownPeriodSec; | 
| +  /** | 
| +   * Defines the CPU utilization policy that allows the autoscaler to scale | 
| +   * based on the average CPU utilization of a managed instance group. | 
| +   */ | 
| +  AutoscalingPolicyCpuUtilization cpuUtilization; | 
| +  /** Configuration parameters of autoscaling based on a custom metric. */ | 
| +  core.List<AutoscalingPolicyCustomMetricUtilization> customMetricUtilizations; | 
| +  /** Configuration parameters of autoscaling based on load balancer. */ | 
| +  AutoscalingPolicyLoadBalancingUtilization loadBalancingUtilization; | 
| +  /** | 
| +   * The maximum number of instances that the autoscaler can scale up to. This | 
| +   * is required when creating or updating an autoscaler. The maximum number of | 
| +   * replicas should not be lower than minimal number of replicas. | 
| +   */ | 
| +  core.int maxNumReplicas; | 
| +  /** | 
| +   * The minimum number of replicas that the autoscaler can scale down to. This | 
| +   * cannot be less than 0. If not provided, autoscaler will choose a default | 
| +   * value depending on maximum number of instances allowed. | 
| +   */ | 
| +  core.int minNumReplicas; | 
| + | 
| +  AutoscalingPolicy(); | 
| + | 
| +  AutoscalingPolicy.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("coolDownPeriodSec")) { | 
| +      coolDownPeriodSec = _json["coolDownPeriodSec"]; | 
| +    } | 
| +    if (_json.containsKey("cpuUtilization")) { | 
| +      cpuUtilization = new AutoscalingPolicyCpuUtilization.fromJson(_json["cpuUtilization"]); | 
| +    } | 
| +    if (_json.containsKey("customMetricUtilizations")) { | 
| +      customMetricUtilizations = _json["customMetricUtilizations"].map((value) => new AutoscalingPolicyCustomMetricUtilization.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("loadBalancingUtilization")) { | 
| +      loadBalancingUtilization = new AutoscalingPolicyLoadBalancingUtilization.fromJson(_json["loadBalancingUtilization"]); | 
| +    } | 
| +    if (_json.containsKey("maxNumReplicas")) { | 
| +      maxNumReplicas = _json["maxNumReplicas"]; | 
| +    } | 
| +    if (_json.containsKey("minNumReplicas")) { | 
| +      minNumReplicas = _json["minNumReplicas"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (coolDownPeriodSec != null) { | 
| +      _json["coolDownPeriodSec"] = coolDownPeriodSec; | 
| +    } | 
| +    if (cpuUtilization != null) { | 
| +      _json["cpuUtilization"] = (cpuUtilization).toJson(); | 
| +    } | 
| +    if (customMetricUtilizations != null) { | 
| +      _json["customMetricUtilizations"] = customMetricUtilizations.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (loadBalancingUtilization != null) { | 
| +      _json["loadBalancingUtilization"] = (loadBalancingUtilization).toJson(); | 
| +    } | 
| +    if (maxNumReplicas != null) { | 
| +      _json["maxNumReplicas"] = maxNumReplicas; | 
| +    } | 
| +    if (minNumReplicas != null) { | 
| +      _json["minNumReplicas"] = minNumReplicas; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** CPU utilization policy. */ | 
| +class AutoscalingPolicyCpuUtilization { | 
| +  /** | 
| +   * The target CPU utilization that the autoscaler should maintain. Must be a | 
| +   * float value in the range (0, 1]. If not specified, the default is 0.6. | 
| +   * | 
| +   * If the CPU level is below the target utilization, the autoscaler scales | 
| +   * down the number of instances until it reaches the minimum number of | 
| +   * instances you specified or until the average CPU of your instances reaches | 
| +   * the target utilization. | 
| +   * | 
| +   * If the average CPU is above the target utilization, the autoscaler scales | 
| +   * up until it reaches the maximum number of instances you specified or until | 
| +   * the average utilization reaches the target utilization. | 
| +   */ | 
| +  core.double utilizationTarget; | 
| + | 
| +  AutoscalingPolicyCpuUtilization(); | 
| + | 
| +  AutoscalingPolicyCpuUtilization.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("utilizationTarget")) { | 
| +      utilizationTarget = _json["utilizationTarget"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (utilizationTarget != null) { | 
| +      _json["utilizationTarget"] = utilizationTarget; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Custom utilization metric policy. */ | 
| +class AutoscalingPolicyCustomMetricUtilization { | 
| +  /** | 
| +   * The identifier (type) of the Stackdriver Monitoring metric. The metric | 
| +   * cannot have negative values and should be a utilization metric, which means | 
| +   * that the number of virtual machines handling requests should increase or | 
| +   * decrease proportionally to the metric. | 
| +   * | 
| +   * The metric must have a value type of INT64 or DOUBLE. | 
| +   */ | 
| +  core.String metric; | 
| +  /** | 
| +   * The target value of the metric that autoscaler should maintain. This must | 
| +   * be a positive value. | 
| +   * | 
| +   * For example, a good metric to use as a utilization_target is | 
| +   * compute.googleapis.com/instance/network/received_bytes_count. The | 
| +   * autoscaler will work to keep this value constant for each of the instances. | 
| +   */ | 
| +  core.double utilizationTarget; | 
| +  /** | 
| +   * Defines how target utilization value is expressed for a Stackdriver | 
| +   * Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If | 
| +   * not specified, the default is GAUGE. | 
| +   * Possible string values are: | 
| +   * - "DELTA_PER_MINUTE" | 
| +   * - "DELTA_PER_SECOND" | 
| +   * - "GAUGE" | 
| +   */ | 
| +  core.String utilizationTargetType; | 
| + | 
| +  AutoscalingPolicyCustomMetricUtilization(); | 
| + | 
| +  AutoscalingPolicyCustomMetricUtilization.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("metric")) { | 
| +      metric = _json["metric"]; | 
| +    } | 
| +    if (_json.containsKey("utilizationTarget")) { | 
| +      utilizationTarget = _json["utilizationTarget"]; | 
| +    } | 
| +    if (_json.containsKey("utilizationTargetType")) { | 
| +      utilizationTargetType = _json["utilizationTargetType"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (metric != null) { | 
| +      _json["metric"] = metric; | 
| +    } | 
| +    if (utilizationTarget != null) { | 
| +      _json["utilizationTarget"] = utilizationTarget; | 
| +    } | 
| +    if (utilizationTargetType != null) { | 
| +      _json["utilizationTargetType"] = utilizationTargetType; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Configuration parameters of autoscaling based on load balancing. */ | 
| +class AutoscalingPolicyLoadBalancingUtilization { | 
| +  /** | 
| +   * Fraction of backend capacity utilization (set in HTTP(s) load balancing | 
| +   * configuration) that autoscaler should maintain. Must be a positive float | 
| +   * value. If not defined, the default is 0.8. | 
| +   */ | 
| +  core.double utilizationTarget; | 
| + | 
| +  AutoscalingPolicyLoadBalancingUtilization(); | 
| + | 
| +  AutoscalingPolicyLoadBalancingUtilization.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("utilizationTarget")) { | 
| +      utilizationTarget = _json["utilizationTarget"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (utilizationTarget != null) { | 
| +      _json["utilizationTarget"] = utilizationTarget; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Message containing information of one individual backend. */ | 
| +class Backend { | 
| +  /** | 
| +   * Specifies the balancing mode for this backend. For global HTTP(S) or | 
| +   * TCP/SSL load balancing, the default is UTILIZATION. Valid values are | 
| +   * UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL). | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   * Possible string values are: | 
| +   * - "CONNECTION" | 
| +   * - "RATE" | 
| +   * - "UTILIZATION" | 
| +   */ | 
| +  core.String balancingMode; | 
| +  /** | 
| +   * A multiplier applied to the group's maximum servicing capacity (based on | 
| +   * UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group | 
| +   * will serve up to 100% of its configured capacity (depending on | 
| +   * balancingMode). A setting of 0 means the group is completely drained, | 
| +   * offering 0% of its available Capacity. Valid range is [0.0,1.0]. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.double capacityScaler; | 
| +  /** | 
| +   * An optional description of this resource. Provide this property when you | 
| +   * create the resource. | 
| +   */ | 
| +  core.String description; | 
| +  /** | 
| +   * The fully-qualified URL of a zonal Instance Group resource. This instance | 
| +   * group defines the list of instances that serve traffic. Member virtual | 
| +   * machine instances from each instance group must live in the same zone as | 
| +   * the instance group itself. No two backends in a backend service are allowed | 
| +   * to use same Instance Group resource. | 
| +   * | 
| +   * Note that you must specify an Instance Group resource using the | 
| +   * fully-qualified URL, rather than a partial URL. | 
| +   * | 
| +   * When the BackendService has load balancing scheme INTERNAL, the instance | 
| +   * group must be in a zone within the same region as the BackendService. | 
| +   */ | 
| +  core.String group; | 
| +  /** | 
| +   * The max number of simultaneous connections for the group. Can be used with | 
| +   * either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, | 
| +   * either maxConnections or maxConnectionsPerInstance must be set. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.int maxConnections; | 
| +  /** | 
| +   * The max number of simultaneous connections that a single backend instance | 
| +   * can handle. This is used to calculate the capacity of the group. Can be | 
| +   * used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION | 
| +   * mode, either maxConnections or maxConnectionsPerInstance must be set. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.int maxConnectionsPerInstance; | 
| +  /** | 
| +   * The max requests per second (RPS) of the group. Can be used with either | 
| +   * RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE | 
| +   * mode, either maxRate or maxRatePerInstance must be set. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.int maxRate; | 
| +  /** | 
| +   * The max requests per second (RPS) that a single backend instance can | 
| +   * handle. This is used to calculate the capacity of the group. Can be used in | 
| +   * either balancing mode. For RATE mode, either maxRate or maxRatePerInstance | 
| +   * must be set. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.double maxRatePerInstance; | 
| +  /** | 
| +   * Used when balancingMode is UTILIZATION. This ratio defines the CPU | 
| +   * utilization target for the group. The default is 0.8. Valid range is [0.0, | 
| +   * 1.0]. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.double maxUtilization; | 
| + | 
| +  Backend(); | 
| + | 
| +  Backend.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("balancingMode")) { | 
| +      balancingMode = _json["balancingMode"]; | 
| +    } | 
| +    if (_json.containsKey("capacityScaler")) { | 
| +      capacityScaler = _json["capacityScaler"]; | 
| +    } | 
| +    if (_json.containsKey("description")) { | 
| +      description = _json["description"]; | 
| +    } | 
| +    if (_json.containsKey("group")) { | 
| +      group = _json["group"]; | 
| +    } | 
| +    if (_json.containsKey("maxConnections")) { | 
| +      maxConnections = _json["maxConnections"]; | 
| +    } | 
| +    if (_json.containsKey("maxConnectionsPerInstance")) { | 
| +      maxConnectionsPerInstance = _json["maxConnectionsPerInstance"]; | 
| +    } | 
| +    if (_json.containsKey("maxRate")) { | 
| +      maxRate = _json["maxRate"]; | 
| +    } | 
| +    if (_json.containsKey("maxRatePerInstance")) { | 
| +      maxRatePerInstance = _json["maxRatePerInstance"]; | 
| +    } | 
| +    if (_json.containsKey("maxUtilization")) { | 
| +      maxUtilization = _json["maxUtilization"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (balancingMode != null) { | 
| +      _json["balancingMode"] = balancingMode; | 
| +    } | 
| +    if (capacityScaler != null) { | 
| +      _json["capacityScaler"] = capacityScaler; | 
| +    } | 
| +    if (description != null) { | 
| +      _json["description"] = description; | 
| +    } | 
| +    if (group != null) { | 
| +      _json["group"] = group; | 
| +    } | 
| +    if (maxConnections != null) { | 
| +      _json["maxConnections"] = maxConnections; | 
| +    } | 
| +    if (maxConnectionsPerInstance != null) { | 
| +      _json["maxConnectionsPerInstance"] = maxConnectionsPerInstance; | 
| +    } | 
| +    if (maxRate != null) { | 
| +      _json["maxRate"] = maxRate; | 
| +    } | 
| +    if (maxRatePerInstance != null) { | 
| +      _json["maxRatePerInstance"] = maxRatePerInstance; | 
| +    } | 
| +    if (maxUtilization != null) { | 
| +      _json["maxUtilization"] = maxUtilization; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** A BackendBucket resource. This resource defines a Cloud Storage bucket. */ | 
| +class BackendBucket { | 
| +  /** Cloud Storage bucket name. */ | 
| +  core.String bucketName; | 
| +  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| +  core.String creationTimestamp; | 
| +  /** | 
| +   * An optional textual description of the resource; provided by the client | 
| +   * when the resource is created. | 
| +   */ | 
| +  core.String description; | 
| +  /** If true, enable Cloud CDN for this BackendBucket. */ | 
| +  core.bool enableCdn; | 
| +  /** | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** Type of the resource. */ | 
| +  core.String kind; | 
| +  /** | 
| +   * Name of the resource. Provided by the client when the resource is created. | 
| +   * The name must be 1-63 characters long, and comply with RFC1035. | 
| +   * Specifically, the name must be 1-63 characters long and match the regular | 
| +   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| +   * be a lowercase letter, and all following characters must be a dash, | 
| +   * lowercase letter, or digit, except the last character, which cannot be a | 
| +   * dash. | 
| +   */ | 
| +  core.String name; | 
| +  /** [Output Only] Server-defined URL for the resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  BackendBucket(); | 
| + | 
| +  BackendBucket.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("bucketName")) { | 
| +      bucketName = _json["bucketName"]; | 
| +    } | 
| +    if (_json.containsKey("creationTimestamp")) { | 
| +      creationTimestamp = _json["creationTimestamp"]; | 
| +    } | 
| +    if (_json.containsKey("description")) { | 
| +      description = _json["description"]; | 
| +    } | 
| +    if (_json.containsKey("enableCdn")) { | 
| +      enableCdn = _json["enableCdn"]; | 
| +    } | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (bucketName != null) { | 
| +      _json["bucketName"] = bucketName; | 
| +    } | 
| +    if (creationTimestamp != null) { | 
| +      _json["creationTimestamp"] = creationTimestamp; | 
| +    } | 
| +    if (description != null) { | 
| +      _json["description"] = description; | 
| +    } | 
| +    if (enableCdn != null) { | 
| +      _json["enableCdn"] = enableCdn; | 
| +    } | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Contains a list of BackendBucket resources. */ | 
| +class BackendBucketList { | 
| +  /** | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** A list of BackendBucket resources. */ | 
| +  core.List<BackendBucket> items; | 
| +  /** Type of resource. */ | 
| +  core.String kind; | 
| +  /** [Output Only] A token used to continue a truncated list request. */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  BackendBucketList(); | 
| + | 
| +  BackendBucketList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("items")) { | 
| +      items = _json["items"].map((value) => new BackendBucket.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (items != null) { | 
| +      _json["items"] = items.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * A BackendService resource. This resource defines a group of backend virtual | 
| + * machines and their serving capacity. | 
| + */ | 
| +class BackendService { | 
| +  /** | 
| +   * Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If | 
| +   * set to 0, the cookie is non-persistent and lasts only until the end of the | 
| +   * browser session (or equivalent). The maximum allowed value for TTL is one | 
| +   * day. | 
| +   * | 
| +   * When the load balancing scheme is INTERNAL, this field is not used. | 
| +   */ | 
| +  core.int affinityCookieTtlSec; | 
| +  /** The list of backends that serve this BackendService. */ | 
| +  core.List<Backend> backends; | 
| +  /** Cloud CDN configuration for this BackendService. */ | 
| +  BackendServiceCdnPolicy cdnPolicy; | 
| +  ConnectionDraining connectionDraining; | 
| +  /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| +  core.String creationTimestamp; | 
| +  /** | 
| +   * An optional description of this resource. Provide this property when you | 
| +   * create the resource. | 
| +   */ | 
| +  core.String description; | 
| +  /** | 
| +   * If true, enable Cloud CDN for this BackendService. | 
| +   * | 
| +   * When the load balancing scheme is INTERNAL, this field is not used. | 
| +   */ | 
| +  core.bool enableCDN; | 
| +  /** | 
| +   * Fingerprint of this resource. A hash of the contents stored in this object. | 
| +   * This field is used in optimistic locking. This field will be ignored when | 
| +   * inserting a BackendService. An up-to-date fingerprint must be provided in | 
| +   * order to update the BackendService. | 
| +   */ | 
| +  core.String fingerprint; | 
| +  core.List<core.int> get fingerprintAsBytes { | 
| +    return convert.BASE64.decode(fingerprint); | 
| +  } | 
| + | 
| +  void set fingerprintAsBytes(core.List<core.int> _bytes) { | 
| +    fingerprint = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-"); | 
| +  } | 
| +  /** | 
| +   * The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for | 
| +   * health checking this BackendService. Currently at most one health check can | 
| +   * be specified, and a health check is required for GCE backend services. A | 
| +   * health check must not be specified for GAE app backend and Cloud Function | 
| +   * backend. | 
| +   * | 
| +   * For internal load balancing, a URL to a HealthCheck resource must be | 
| +   * specified instead. | 
| +   */ | 
| +  core.List<core.String> healthChecks; | 
| +  BackendServiceIAP iap; | 
| +  /** | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** | 
| +   * [Output Only] Type of resource. Always compute#backendService for backend | 
| +   * services. | 
| +   */ | 
| +  core.String kind; | 
| +  /** | 
| +   * | 
| +   * Possible string values are: | 
| +   * - "EXTERNAL" | 
| +   * - "INTERNAL" | 
| +   * - "INVALID_LOAD_BALANCING_SCHEME" | 
| +   */ | 
| +  core.String loadBalancingScheme; | 
| +  /** | 
| +   * Name of the resource. Provided by the client when the resource is created. | 
| +   * The name must be 1-63 characters long, and comply with RFC1035. | 
| +   * Specifically, the name must be 1-63 characters long and match the regular | 
| +   * expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must | 
| +   * be a lowercase letter, and all following characters must be a dash, | 
| +   * lowercase letter, or digit, except the last character, which cannot be a | 
| +   * dash. | 
| +   */ | 
| +  core.String name; | 
| +  /** | 
| +   * Deprecated in favor of portName. The TCP port to connect on the backend. | 
| +   * The default value is 80. | 
| +   * | 
| +   * This cannot be used for internal load balancing. | 
| +   */ | 
| +  core.int port; | 
| +  /** | 
| +   * Name of backend port. The same name should appear in the instance groups | 
| +   * referenced by this service. Required when the load balancing scheme is | 
| +   * EXTERNAL. | 
| +   * | 
| +   * When the load balancing scheme is INTERNAL, this field is not used. | 
| +   */ | 
| +  core.String portName; | 
| +  /** | 
| +   * The protocol this BackendService uses to communicate with backends. | 
| +   * | 
| +   * Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP. | 
| +   * | 
| +   * For internal load balancing, the possible values are TCP and UDP, and the | 
| +   * default is TCP. | 
| +   * Possible string values are: | 
| +   * - "HTTP" | 
| +   * - "HTTPS" | 
| +   * - "SSL" | 
| +   * - "TCP" | 
| +   * - "UDP" | 
| +   */ | 
| +  core.String protocol; | 
| +  /** | 
| +   * [Output Only] URL of the region where the regional backend service resides. | 
| +   * This field is not applicable to global backend services. | 
| +   */ | 
| +  core.String region; | 
| +  /** [Output Only] Server-defined URL for the resource. */ | 
| +  core.String selfLink; | 
| +  /** | 
| +   * Type of session affinity to use. The default is NONE. | 
| +   * | 
| +   * When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or | 
| +   * GENERATED_COOKIE. | 
| +   * | 
| +   * When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, | 
| +   * CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. | 
| +   * | 
| +   * When the protocol is UDP, this field is not used. | 
| +   * Possible string values are: | 
| +   * - "CLIENT_IP" | 
| +   * - "CLIENT_IP_PORT_PROTO" | 
| +   * - "CLIENT_IP_PROTO" | 
| +   * - "GENERATED_COOKIE" | 
| +   * - "NONE" | 
| +   */ | 
| +  core.String sessionAffinity; | 
| +  /** | 
| +   * How many seconds to wait for the backend before considering it a failed | 
| +   * request. Default is 30 seconds. | 
| +   */ | 
| +  core.int timeoutSec; | 
| + | 
| +  BackendService(); | 
| + | 
| +  BackendService.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("affinityCookieTtlSec")) { | 
| +      affinityCookieTtlSec = _json["affinityCookieTtlSec"]; | 
| +    } | 
| +    if (_json.containsKey("backends")) { | 
| +      backends = _json["backends"].map((value) => new Backend.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("cdnPolicy")) { | 
| +      cdnPolicy = new BackendServiceCdnPolicy.fromJson(_json["cdnPolicy"]); | 
| +    } | 
| +    if (_json.containsKey("connectionDraining")) { | 
| +      connectionDraining = new ConnectionDraining.fromJson(_json["connectionDraining"]); | 
| +    } | 
| +    if (_json.containsKey("creationTimestamp")) { | 
| +      creationTimestamp = _json["creationTimestamp"]; | 
| +    } | 
| +    if (_json.containsKey("description")) { | 
| +      description = _json["description"]; | 
| +    } | 
| +    if (_json.containsKey("enableCDN")) { | 
| +      enableCDN = _json["enableCDN"]; | 
| +    } | 
| +    if (_json.containsKey("fingerprint")) { | 
| +      fingerprint = _json["fingerprint"]; | 
| +    } | 
| +    if (_json.containsKey("healthChecks")) { | 
| +      healthChecks = _json["healthChecks"]; | 
| +    } | 
| +    if (_json.containsKey("iap")) { | 
| +      iap = new BackendServiceIAP.fromJson(_json["iap"]); | 
| +    } | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("loadBalancingScheme")) { | 
| +      loadBalancingScheme = _json["loadBalancingScheme"]; | 
| +    } | 
| +    if (_json.containsKey("name")) { | 
| +      name = _json["name"]; | 
| +    } | 
| +    if (_json.containsKey("port")) { | 
| +      port = _json["port"]; | 
| +    } | 
| +    if (_json.containsKey("portName")) { | 
| +      portName = _json["portName"]; | 
| +    } | 
| +    if (_json.containsKey("protocol")) { | 
| +      protocol = _json["protocol"]; | 
| +    } | 
| +    if (_json.containsKey("region")) { | 
| +      region = _json["region"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +    if (_json.containsKey("sessionAffinity")) { | 
| +      sessionAffinity = _json["sessionAffinity"]; | 
| +    } | 
| +    if (_json.containsKey("timeoutSec")) { | 
| +      timeoutSec = _json["timeoutSec"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (affinityCookieTtlSec != null) { | 
| +      _json["affinityCookieTtlSec"] = affinityCookieTtlSec; | 
| +    } | 
| +    if (backends != null) { | 
| +      _json["backends"] = backends.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (cdnPolicy != null) { | 
| +      _json["cdnPolicy"] = (cdnPolicy).toJson(); | 
| +    } | 
| +    if (connectionDraining != null) { | 
| +      _json["connectionDraining"] = (connectionDraining).toJson(); | 
| +    } | 
| +    if (creationTimestamp != null) { | 
| +      _json["creationTimestamp"] = creationTimestamp; | 
| +    } | 
| +    if (description != null) { | 
| +      _json["description"] = description; | 
| +    } | 
| +    if (enableCDN != null) { | 
| +      _json["enableCDN"] = enableCDN; | 
| +    } | 
| +    if (fingerprint != null) { | 
| +      _json["fingerprint"] = fingerprint; | 
| +    } | 
| +    if (healthChecks != null) { | 
| +      _json["healthChecks"] = healthChecks; | 
| +    } | 
| +    if (iap != null) { | 
| +      _json["iap"] = (iap).toJson(); | 
| +    } | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (loadBalancingScheme != null) { | 
| +      _json["loadBalancingScheme"] = loadBalancingScheme; | 
| +    } | 
| +    if (name != null) { | 
| +      _json["name"] = name; | 
| +    } | 
| +    if (port != null) { | 
| +      _json["port"] = port; | 
| +    } | 
| +    if (portName != null) { | 
| +      _json["portName"] = portName; | 
| +    } | 
| +    if (protocol != null) { | 
| +      _json["protocol"] = protocol; | 
| +    } | 
| +    if (region != null) { | 
| +      _json["region"] = region; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    if (sessionAffinity != null) { | 
| +      _json["sessionAffinity"] = sessionAffinity; | 
| +    } | 
| +    if (timeoutSec != null) { | 
| +      _json["timeoutSec"] = timeoutSec; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Contains a list of BackendServicesScopedList. */ | 
| +class BackendServiceAggregatedList { | 
| +  /** | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** A map of scoped BackendService lists. */ | 
| +  core.Map<core.String, BackendServicesScopedList> items; | 
| +  /** Type of resource. */ | 
| +  core.String kind; | 
| +  /** [Output Only] A token used to continue a truncated list request. */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  BackendServiceAggregatedList(); | 
| + | 
| +  BackendServiceAggregatedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("items")) { | 
| +      items = commons.mapMap<core.Map<core.String, core.Object>, BackendServicesScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new BackendServicesScopedList.fromJson(item)); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (items != null) { | 
| +      _json["items"] = commons.mapMap<BackendServicesScopedList, core.Map<core.String, core.Object>>(items, (BackendServicesScopedList item) => (item).toJson()); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Message containing Cloud CDN configuration for a backend service. */ | 
| +class BackendServiceCdnPolicy { | 
| +  /** The CacheKeyPolicy for this CdnPolicy. */ | 
| +  CacheKeyPolicy cacheKeyPolicy; | 
| + | 
| +  BackendServiceCdnPolicy(); | 
| + | 
| +  BackendServiceCdnPolicy.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("cacheKeyPolicy")) { | 
| +      cacheKeyPolicy = new CacheKeyPolicy.fromJson(_json["cacheKeyPolicy"]); | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (cacheKeyPolicy != null) { | 
| +      _json["cacheKeyPolicy"] = (cacheKeyPolicy).toJson(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class BackendServiceGroupHealth { | 
| +  core.List<HealthStatus> healthStatus; | 
| +  /** | 
| +   * [Output Only] Type of resource. Always compute#backendServiceGroupHealth | 
| +   * for the health of backend services. | 
| +   */ | 
| +  core.String kind; | 
| + | 
| +  BackendServiceGroupHealth(); | 
| + | 
| +  BackendServiceGroupHealth.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("healthStatus")) { | 
| +      healthStatus = _json["healthStatus"].map((value) => new HealthStatus.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (healthStatus != null) { | 
| +      _json["healthStatus"] = healthStatus.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Identity-Aware Proxy */ | 
| +class BackendServiceIAP { | 
| +  core.bool enabled; | 
| +  core.String oauth2ClientId; | 
| +  core.String oauth2ClientSecret; | 
| +  /** | 
| +   * [Output Only] SHA256 hash value for the field oauth2_client_secret above. | 
| +   */ | 
| +  core.String oauth2ClientSecretSha256; | 
| + | 
| +  BackendServiceIAP(); | 
| + | 
| +  BackendServiceIAP.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("enabled")) { | 
| +      enabled = _json["enabled"]; | 
| +    } | 
| +    if (_json.containsKey("oauth2ClientId")) { | 
| +      oauth2ClientId = _json["oauth2ClientId"]; | 
| +    } | 
| +    if (_json.containsKey("oauth2ClientSecret")) { | 
| +      oauth2ClientSecret = _json["oauth2ClientSecret"]; | 
| +    } | 
| +    if (_json.containsKey("oauth2ClientSecretSha256")) { | 
| +      oauth2ClientSecretSha256 = _json["oauth2ClientSecretSha256"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (enabled != null) { | 
| +      _json["enabled"] = enabled; | 
| +    } | 
| +    if (oauth2ClientId != null) { | 
| +      _json["oauth2ClientId"] = oauth2ClientId; | 
| +    } | 
| +    if (oauth2ClientSecret != null) { | 
| +      _json["oauth2ClientSecret"] = oauth2ClientSecret; | 
| +    } | 
| +    if (oauth2ClientSecretSha256 != null) { | 
| +      _json["oauth2ClientSecretSha256"] = oauth2ClientSecretSha256; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** Contains a list of BackendService resources. */ | 
| +class BackendServiceList { | 
| +  /** | 
| +   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   */ | 
| +  core.String id; | 
| +  /** A list of BackendService resources. */ | 
| +  core.List<BackendService> items; | 
| +  /** | 
| +   * [Output Only] Type of resource. Always compute#backendServiceList for lists | 
| +   * of backend services. | 
| +   */ | 
| +  core.String kind; | 
| +  /** | 
| +   * [Output Only] This token allows you to get the next page of results for | 
| +   * list requests. If the number of results is larger than maxResults, use the | 
| +   * nextPageToken as a value for the query parameter pageToken in the next list | 
| +   * request. Subsequent list requests will have their own nextPageToken to | 
| +   * continue paging through the results. | 
| +   */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
| + | 
| +  BackendServiceList(); | 
| + | 
| +  BackendServiceList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| +    } | 
| +    if (_json.containsKey("items")) { | 
| +      items = _json["items"].map((value) => new BackendService.fromJson(value)).toList(); | 
| +    } | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| +    } | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| +    } | 
| +    if (items != null) { | 
| +      _json["items"] = items.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| +    } | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class BackendServicesScopedListWarningData { | 
| +  /** | 
| +   * [Output Only] A key that provides more detail on the warning being | 
| +   * returned. For example, for warnings where there are no results in a list | 
| +   * request for a particular zone, this key might be scope and the key value | 
| +   * might be the zone name. Other examples might be a key indicating a | 
| +   * deprecated resource and a suggested replacement, or a warning about invalid | 
| +   * network settings (for example, if an instance attempts to perform IP | 
| +   * forwarding but is not enabled for IP forwarding). | 
| +   */ | 
| +  core.String key; | 
| +  /** [Output Only] A warning data value corresponding to the key. */ | 
| +  core.String value; | 
| + | 
| +  BackendServicesScopedListWarningData(); | 
| + | 
| +  BackendServicesScopedListWarningData.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("key")) { | 
| +      key = _json["key"]; | 
| +    } | 
| +    if (_json.containsKey("value")) { | 
| +      value = _json["value"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (key != null) { | 
| +      _json["key"] = key; | 
| +    } | 
| +    if (value != null) { | 
| +      _json["value"] = value; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +/** | 
| + * Informational warning which replaces the list of backend services when the | 
| + * list is empty. | 
| + */ | 
| +class BackendServicesScopedListWarning { | 
| +  /** | 
| +   * [Output Only] A warning code, if applicable. For example, Compute Engine | 
| +   * returns NO_RESULTS_ON_PAGE if there are no results in the response. | 
| +   * Possible string values are: | 
| +   * - "CLEANUP_FAILED" | 
| +   * - "DEPRECATED_RESOURCE_USED" | 
| +   * - "DISK_SIZE_LARGER_THAN_IMAGE_SIZE" | 
| +   * - "FIELD_VALUE_OVERRIDEN" | 
| +   * - "INJECTED_KERNELS_DEPRECATED" | 
| +   * - "NEXT_HOP_ADDRESS_NOT_ASSIGNED" | 
| +   * - "NEXT_HOP_CANNOT_IP_FORWARD" | 
| +   * - "NEXT_HOP_INSTANCE_NOT_FOUND" | 
| +   * - "NEXT_HOP_INSTANCE_NOT_ON_NETWORK" | 
| +   * - "NEXT_HOP_NOT_RUNNING" | 
| +   * - "NOT_CRITICAL_ERROR" | 
| +   * - "NO_RESULTS_ON_PAGE" | 
| +   * - "REQUIRED_TOS_AGREEMENT" | 
| +   * - "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING" | 
| +   * - "RESOURCE_NOT_DELETED" | 
| +   * - "SINGLE_INSTANCE_PROPERTY_TEMPLATE" | 
| +   * - "UNREACHABLE" | 
| +   */ | 
| +  core.String code; | 
| +  /** | 
| +   * [Output Only] Metadata about this warning in key: value format. For | 
| +   * example: | 
| +   * "data": [ { "key": "scope", "value": "zones/us-east1-d" } | 
| */ | 
| -  core.String name; | 
| -  /** [Output Only] Server-defined URL for the resource. */ | 
| -  core.String selfLink; | 
| +  core.List<BackendServicesScopedListWarningData> data; | 
| +  /** [Output Only] A human-readable description of the warning code. */ | 
| +  core.String message; | 
|  | 
| -  BackendBucket(); | 
| +  BackendServicesScopedListWarning(); | 
|  | 
| -  BackendBucket.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("bucketName")) { | 
| -      bucketName = _json["bucketName"]; | 
| +  BackendServicesScopedListWarning.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("code")) { | 
| +      code = _json["code"]; | 
| } | 
| -    if (_json.containsKey("creationTimestamp")) { | 
| -      creationTimestamp = _json["creationTimestamp"]; | 
| +    if (_json.containsKey("data")) { | 
| +      data = _json["data"].map((value) => new BackendServicesScopedListWarningData.fromJson(value)).toList(); | 
| } | 
| -    if (_json.containsKey("description")) { | 
| -      description = _json["description"]; | 
| +    if (_json.containsKey("message")) { | 
| +      message = _json["message"]; | 
| } | 
| -    if (_json.containsKey("enableCdn")) { | 
| -      enableCdn = _json["enableCdn"]; | 
| +  } | 
| + | 
| +  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 (_json.containsKey("id")) { | 
| -      id = _json["id"]; | 
| +    if (data != null) { | 
| +      _json["data"] = data.map((value) => (value).toJson()).toList(); | 
| } | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| +    if (message != null) { | 
| +      _json["message"] = message; | 
| } | 
| -    if (_json.containsKey("name")) { | 
| -      name = _json["name"]; | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class BackendServicesScopedList { | 
| +  /** List of BackendServices contained in this scope. */ | 
| +  core.List<BackendService> backendServices; | 
| +  /** | 
| +   * Informational warning which replaces the list of backend services when the | 
| +   * list is empty. | 
| +   */ | 
| +  BackendServicesScopedListWarning warning; | 
| + | 
| +  BackendServicesScopedList(); | 
| + | 
| +  BackendServicesScopedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("backendServices")) { | 
| +      backendServices = _json["backendServices"].map((value) => new BackendService.fromJson(value)).toList(); | 
| } | 
| -    if (_json.containsKey("selfLink")) { | 
| -      selfLink = _json["selfLink"]; | 
| +    if (_json.containsKey("warning")) { | 
| +      warning = new BackendServicesScopedListWarning.fromJson(_json["warning"]); | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (bucketName != null) { | 
| -      _json["bucketName"] = bucketName; | 
| -    } | 
| -    if (creationTimestamp != null) { | 
| -      _json["creationTimestamp"] = creationTimestamp; | 
| -    } | 
| -    if (description != null) { | 
| -      _json["description"] = description; | 
| +    if (backendServices != null) { | 
| +      _json["backendServices"] = backendServices.map((value) => (value).toJson()).toList(); | 
| } | 
| -    if (enableCdn != null) { | 
| -      _json["enableCdn"] = enableCdn; | 
| +    if (warning != null) { | 
| +      _json["warning"] = (warning).toJson(); | 
| } | 
| -    if (id != null) { | 
| -      _json["id"] = id; | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| +class CacheInvalidationRule { | 
| +  /** | 
| +   * If set, this invalidation rule will only apply to requests with a Host | 
| +   * header matching host. | 
| +   */ | 
| +  core.String host; | 
| +  core.String path; | 
| + | 
| +  CacheInvalidationRule(); | 
| + | 
| +  CacheInvalidationRule.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("host")) { | 
| +      host = _json["host"]; | 
| } | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| +    if (_json.containsKey("path")) { | 
| +      path = _json["path"]; | 
| } | 
| -    if (name != null) { | 
| -      _json["name"] = name; | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (host != null) { | 
| +      _json["host"] = host; | 
| } | 
| -    if (selfLink != null) { | 
| -      _json["selfLink"] = selfLink; | 
| +    if (path != null) { | 
| +      _json["path"] = path; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** Contains a list of BackendBucket resources. */ | 
| -class BackendBucketList { | 
| +/** | 
| + * Message containing what to include in the cache key for a request for Cloud | 
| + * CDN. | 
| + */ | 
| +class CacheKeyPolicy { | 
| +  /** If true, requests to different hosts will be cached separately. */ | 
| +  core.bool includeHost; | 
| +  /** If true, http and https requests will be cached separately. */ | 
| +  core.bool includeProtocol; | 
| /** | 
| -   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   * If true, include query string parameters in the cache key according to | 
| +   * query_string_whitelist and query_string_blacklist. If neither is set, the | 
| +   * entire query string will be included. If false, the query string will be | 
| +   * excluded from the cache key entirely. | 
| */ | 
| -  core.String id; | 
| -  /** A list of BackendBucket resources. */ | 
| -  core.List<BackendBucket> items; | 
| -  /** Type of resource. */ | 
| -  core.String kind; | 
| -  /** [Output Only] A token used to continue a truncated list request. */ | 
| -  core.String nextPageToken; | 
| -  /** [Output Only] Server-defined URL for this resource. */ | 
| -  core.String selfLink; | 
| +  core.bool includeQueryString; | 
| +  /** | 
| +   * Names of query string parameters to exclude in cache keys. All other | 
| +   * parameters will be included. Either specify query_string_whitelist or | 
| +   * query_string_blacklist, not both. '&' and '=' will be percent encoded and | 
| +   * not treated as delimiters. | 
| +   */ | 
| +  core.List<core.String> queryStringBlacklist; | 
| +  /** | 
| +   * Names of query string parameters to include in cache keys. All other | 
| +   * parameters will be excluded. Either specify query_string_whitelist or | 
| +   * query_string_blacklist, not both. '&' and '=' will be percent encoded and | 
| +   * not treated as delimiters. | 
| +   */ | 
| +  core.List<core.String> queryStringWhitelist; | 
|  | 
| -  BackendBucketList(); | 
| +  CacheKeyPolicy(); | 
|  | 
| -  BackendBucketList.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("id")) { | 
| -      id = _json["id"]; | 
| +  CacheKeyPolicy.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("includeHost")) { | 
| +      includeHost = _json["includeHost"]; | 
| } | 
| -    if (_json.containsKey("items")) { | 
| -      items = _json["items"].map((value) => new BackendBucket.fromJson(value)).toList(); | 
| +    if (_json.containsKey("includeProtocol")) { | 
| +      includeProtocol = _json["includeProtocol"]; | 
| } | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| +    if (_json.containsKey("includeQueryString")) { | 
| +      includeQueryString = _json["includeQueryString"]; | 
| } | 
| -    if (_json.containsKey("nextPageToken")) { | 
| -      nextPageToken = _json["nextPageToken"]; | 
| +    if (_json.containsKey("queryStringBlacklist")) { | 
| +      queryStringBlacklist = _json["queryStringBlacklist"]; | 
| } | 
| -    if (_json.containsKey("selfLink")) { | 
| -      selfLink = _json["selfLink"]; | 
| +    if (_json.containsKey("queryStringWhitelist")) { | 
| +      queryStringWhitelist = _json["queryStringWhitelist"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (id != null) { | 
| -      _json["id"] = id; | 
| +    if (includeHost != null) { | 
| +      _json["includeHost"] = includeHost; | 
| } | 
| -    if (items != null) { | 
| -      _json["items"] = items.map((value) => (value).toJson()).toList(); | 
| +    if (includeProtocol != null) { | 
| +      _json["includeProtocol"] = includeProtocol; | 
| } | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| +    if (includeQueryString != null) { | 
| +      _json["includeQueryString"] = includeQueryString; | 
| } | 
| -    if (nextPageToken != null) { | 
| -      _json["nextPageToken"] = nextPageToken; | 
| +    if (queryStringBlacklist != null) { | 
| +      _json["queryStringBlacklist"] = queryStringBlacklist; | 
| } | 
| -    if (selfLink != null) { | 
| -      _json["selfLink"] = selfLink; | 
| +    if (queryStringWhitelist != null) { | 
| +      _json["queryStringWhitelist"] = queryStringWhitelist; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| /** | 
| - * A BackendService resource. This resource defines a group of backend virtual | 
| - * machines and their serving capacity. | 
| + * Represents a Commitment resource. Creating a Commitment resource means that | 
| + * you are purchasing a committed use contract with an explicit start and end | 
| + * time. You can create commitments based on vCPUs and memory usage and receive | 
| + * discounted rates. For full details, read Signing Up for Committed Use | 
| + * Discounts. | 
| + * | 
| + * Committed use discounts are subject to Google Cloud Platform's Service | 
| + * Specific Terms. By purchasing a committed use discount, you agree to these | 
| + * terms. Committed use discounts will not renew, so you must purchase a new | 
| + * commitment to continue receiving discounts. | 
| */ | 
| -class BackendService { | 
| -  /** | 
| -   * Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If | 
| -   * set to 0, the cookie is non-persistent and lasts only until the end of the | 
| -   * browser session (or equivalent). The maximum allowed value for TTL is one | 
| -   * day. | 
| -   * | 
| -   * When the load balancing scheme is INTERNAL, this field is not used. | 
| -   */ | 
| -  core.int affinityCookieTtlSec; | 
| -  /** The list of backends that serve this BackendService. */ | 
| -  core.List<Backend> backends; | 
| -  /** Cloud CDN configuration for this BackendService. */ | 
| -  BackendServiceCdnPolicy cdnPolicy; | 
| -  ConnectionDraining connectionDraining; | 
| +class Commitment { | 
| /** [Output Only] Creation timestamp in RFC3339 text format. */ | 
| core.String creationTimestamp; | 
| /** | 
| @@ -20155,54 +22018,18 @@ class BackendService { | 
| * create the resource. | 
| */ | 
| core.String description; | 
| -  /** | 
| -   * If true, enable Cloud CDN for this BackendService. | 
| -   * | 
| -   * When the load balancing scheme is INTERNAL, this field is not used. | 
| -   */ | 
| -  core.bool enableCDN; | 
| -  /** | 
| -   * Fingerprint of this resource. A hash of the contents stored in this object. | 
| -   * This field is used in optimistic locking. This field will be ignored when | 
| -   * inserting a BackendService. An up-to-date fingerprint must be provided in | 
| -   * order to update the BackendService. | 
| -   */ | 
| -  core.String fingerprint; | 
| -  core.List<core.int> get fingerprintAsBytes { | 
| -    return convert.BASE64.decode(fingerprint); | 
| -  } | 
| - | 
| -  void set fingerprintAsBytes(core.List<core.int> _bytes) { | 
| -    fingerprint = convert.BASE64.encode(_bytes).replaceAll("/", "_").replaceAll("+", "-"); | 
| -  } | 
| -  /** | 
| -   * The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for | 
| -   * health checking this BackendService. Currently at most one health check can | 
| -   * be specified, and a health check is required. | 
| -   * | 
| -   * For internal load balancing, a URL to a HealthCheck resource must be | 
| -   * specified instead. | 
| -   */ | 
| -  core.List<core.String> healthChecks; | 
| -  BackendServiceIAP iap; | 
| +  /** [Output Only] Commitment end time in RFC3339 text format. */ | 
| +  core.String endTimestamp; | 
| /** | 
| * [Output Only] The unique identifier for the resource. This identifier is | 
| -   * defined by the server. | 
| -   */ | 
| -  core.String id; | 
| -  /** | 
| -   * [Output Only] Type of resource. Always compute#backendService for backend | 
| -   * services. | 
| -   */ | 
| -  core.String kind; | 
| -  /** | 
| -   * | 
| -   * Possible string values are: | 
| -   * - "EXTERNAL" | 
| -   * - "INTERNAL" | 
| -   * - "INVALID_LOAD_BALANCING_SCHEME" | 
| +   * defined by the server. | 
| */ | 
| -  core.String loadBalancingScheme; | 
| +  core.String id; | 
| +  /** | 
| +   * [Output Only] Type of the resource. Always compute#commitment for | 
| +   * commitments. | 
| +   */ | 
| +  core.String kind; | 
| /** | 
| * Name of the resource. Provided by the client when the resource is created. | 
| * The name must be 1-63 characters long, and comply with RFC1035. | 
| @@ -20214,98 +22041,51 @@ class BackendService { | 
| */ | 
| core.String name; | 
| /** | 
| -   * Deprecated in favor of portName. The TCP port to connect on the backend. | 
| -   * The default value is 80. | 
| -   * | 
| -   * This cannot be used for internal load balancing. | 
| -   */ | 
| -  core.int port; | 
| -  /** | 
| -   * Name of backend port. The same name should appear in the instance groups | 
| -   * referenced by this service. Required when the load balancing scheme is | 
| -   * EXTERNAL. | 
| -   * | 
| -   * When the load balancing scheme is INTERNAL, this field is not used. | 
| -   */ | 
| -  core.String portName; | 
| -  /** | 
| -   * The protocol this BackendService uses to communicate with backends. | 
| -   * | 
| -   * Possible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP. | 
| -   * | 
| -   * For internal load balancing, the possible values are TCP and UDP, and the | 
| -   * default is TCP. | 
| +   * The plan for this commitment, which determines duration and discount rate. | 
| +   * The currently supported plans are TWELVE_MONTH (1 year), and | 
| +   * THIRTY_SIX_MONTH (3 years). | 
| * Possible string values are: | 
| -   * - "HTTP" | 
| -   * - "HTTPS" | 
| -   * - "SSL" | 
| -   * - "TCP" | 
| -   * - "UDP" | 
| +   * - "INVALID" | 
| +   * - "THIRTY_SIX_MONTH" | 
| +   * - "TWELVE_MONTH" | 
| */ | 
| -  core.String protocol; | 
| +  core.String plan; | 
| +  /** [Output Only] URL of the region where this commitment may be used. */ | 
| +  core.String region; | 
| /** | 
| -   * [Output Only] URL of the region where the regional backend service resides. | 
| -   * This field is not applicable to global backend services. | 
| +   * List of commitment amounts for particular resources. Note that VCPU and | 
| +   * MEMORY resource commitments must occur together. | 
| */ | 
| -  core.String region; | 
| +  core.List<ResourceCommitment> resources; | 
| /** [Output Only] Server-defined URL for the resource. */ | 
| core.String selfLink; | 
| +  /** [Output Only] Commitment start time in RFC3339 text format. */ | 
| +  core.String startTimestamp; | 
| /** | 
| -   * Type of session affinity to use. The default is NONE. | 
| -   * | 
| -   * When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or | 
| -   * GENERATED_COOKIE. | 
| -   * | 
| -   * When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, | 
| -   * CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO. | 
| -   * | 
| -   * When the protocol is UDP, this field is not used. | 
| +   * [Output Only] Status of the commitment with regards to eventual expiration | 
| +   * (each commitment has an end date defined). One of the following values: | 
| +   * NOT_YET_ACTIVE, ACTIVE, EXPIRED. | 
| * Possible string values are: | 
| -   * - "CLIENT_IP" | 
| -   * - "CLIENT_IP_PORT_PROTO" | 
| -   * - "CLIENT_IP_PROTO" | 
| -   * - "GENERATED_COOKIE" | 
| -   * - "NONE" | 
| -   */ | 
| -  core.String sessionAffinity; | 
| -  /** | 
| -   * How many seconds to wait for the backend before considering it a failed | 
| -   * request. Default is 30 seconds. | 
| +   * - "ACTIVE" | 
| +   * - "CREATING" | 
| +   * - "EXPIRED" | 
| +   * - "NOT_YET_ACTIVE" | 
| */ | 
| -  core.int timeoutSec; | 
| +  core.String status; | 
| +  /** [Output Only] An optional, human-readable explanation of the status. */ | 
| +  core.String statusMessage; | 
|  | 
| -  BackendService(); | 
| +  Commitment(); | 
|  | 
| -  BackendService.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("affinityCookieTtlSec")) { | 
| -      affinityCookieTtlSec = _json["affinityCookieTtlSec"]; | 
| -    } | 
| -    if (_json.containsKey("backends")) { | 
| -      backends = _json["backends"].map((value) => new Backend.fromJson(value)).toList(); | 
| -    } | 
| -    if (_json.containsKey("cdnPolicy")) { | 
| -      cdnPolicy = new BackendServiceCdnPolicy.fromJson(_json["cdnPolicy"]); | 
| -    } | 
| -    if (_json.containsKey("connectionDraining")) { | 
| -      connectionDraining = new ConnectionDraining.fromJson(_json["connectionDraining"]); | 
| -    } | 
| +  Commitment.fromJson(core.Map _json) { | 
| if (_json.containsKey("creationTimestamp")) { | 
| creationTimestamp = _json["creationTimestamp"]; | 
| } | 
| if (_json.containsKey("description")) { | 
| description = _json["description"]; | 
| } | 
| -    if (_json.containsKey("enableCDN")) { | 
| -      enableCDN = _json["enableCDN"]; | 
| -    } | 
| -    if (_json.containsKey("fingerprint")) { | 
| -      fingerprint = _json["fingerprint"]; | 
| -    } | 
| -    if (_json.containsKey("healthChecks")) { | 
| -      healthChecks = _json["healthChecks"]; | 
| -    } | 
| -    if (_json.containsKey("iap")) { | 
| -      iap = new BackendServiceIAP.fromJson(_json["iap"]); | 
| +    if (_json.containsKey("endTimestamp")) { | 
| +      endTimestamp = _json["endTimestamp"]; | 
| } | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| @@ -20313,66 +22093,42 @@ class BackendService { | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| } | 
| -    if (_json.containsKey("loadBalancingScheme")) { | 
| -      loadBalancingScheme = _json["loadBalancingScheme"]; | 
| -    } | 
| if (_json.containsKey("name")) { | 
| name = _json["name"]; | 
| } | 
| -    if (_json.containsKey("port")) { | 
| -      port = _json["port"]; | 
| -    } | 
| -    if (_json.containsKey("portName")) { | 
| -      portName = _json["portName"]; | 
| -    } | 
| -    if (_json.containsKey("protocol")) { | 
| -      protocol = _json["protocol"]; | 
| +    if (_json.containsKey("plan")) { | 
| +      plan = _json["plan"]; | 
| } | 
| if (_json.containsKey("region")) { | 
| region = _json["region"]; | 
| } | 
| +    if (_json.containsKey("resources")) { | 
| +      resources = _json["resources"].map((value) => new ResourceCommitment.fromJson(value)).toList(); | 
| +    } | 
| if (_json.containsKey("selfLink")) { | 
| selfLink = _json["selfLink"]; | 
| } | 
| -    if (_json.containsKey("sessionAffinity")) { | 
| -      sessionAffinity = _json["sessionAffinity"]; | 
| +    if (_json.containsKey("startTimestamp")) { | 
| +      startTimestamp = _json["startTimestamp"]; | 
| } | 
| -    if (_json.containsKey("timeoutSec")) { | 
| -      timeoutSec = _json["timeoutSec"]; | 
| +    if (_json.containsKey("status")) { | 
| +      status = _json["status"]; | 
| +    } | 
| +    if (_json.containsKey("statusMessage")) { | 
| +      statusMessage = _json["statusMessage"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (affinityCookieTtlSec != null) { | 
| -      _json["affinityCookieTtlSec"] = affinityCookieTtlSec; | 
| -    } | 
| -    if (backends != null) { | 
| -      _json["backends"] = backends.map((value) => (value).toJson()).toList(); | 
| -    } | 
| -    if (cdnPolicy != null) { | 
| -      _json["cdnPolicy"] = (cdnPolicy).toJson(); | 
| -    } | 
| -    if (connectionDraining != null) { | 
| -      _json["connectionDraining"] = (connectionDraining).toJson(); | 
| -    } | 
| if (creationTimestamp != null) { | 
| _json["creationTimestamp"] = creationTimestamp; | 
| } | 
| if (description != null) { | 
| _json["description"] = description; | 
| } | 
| -    if (enableCDN != null) { | 
| -      _json["enableCDN"] = enableCDN; | 
| -    } | 
| -    if (fingerprint != null) { | 
| -      _json["fingerprint"] = fingerprint; | 
| -    } | 
| -    if (healthChecks != null) { | 
| -      _json["healthChecks"] = healthChecks; | 
| -    } | 
| -    if (iap != null) { | 
| -      _json["iap"] = (iap).toJson(); | 
| +    if (endTimestamp != null) { | 
| +      _json["endTimestamp"] = endTimestamp; | 
| } | 
| if (id != null) { | 
| _json["id"] = id; | 
| @@ -20380,202 +22136,111 @@ class BackendService { | 
| if (kind != null) { | 
| _json["kind"] = kind; | 
| } | 
| -    if (loadBalancingScheme != null) { | 
| -      _json["loadBalancingScheme"] = loadBalancingScheme; | 
| -    } | 
| if (name != null) { | 
| _json["name"] = name; | 
| } | 
| -    if (port != null) { | 
| -      _json["port"] = port; | 
| -    } | 
| -    if (portName != null) { | 
| -      _json["portName"] = portName; | 
| -    } | 
| -    if (protocol != null) { | 
| -      _json["protocol"] = protocol; | 
| +    if (plan != null) { | 
| +      _json["plan"] = plan; | 
| } | 
| if (region != null) { | 
| _json["region"] = region; | 
| } | 
| -    if (selfLink != null) { | 
| -      _json["selfLink"] = selfLink; | 
| -    } | 
| -    if (sessionAffinity != null) { | 
| -      _json["sessionAffinity"] = sessionAffinity; | 
| -    } | 
| -    if (timeoutSec != null) { | 
| -      _json["timeoutSec"] = timeoutSec; | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** Contains a list of BackendServicesScopedList. */ | 
| -class BackendServiceAggregatedList { | 
| -  /** | 
| -   * [Output Only] Unique identifier for the resource; defined by the server. | 
| -   */ | 
| -  core.String id; | 
| -  /** A map of scoped BackendService lists. */ | 
| -  core.Map<core.String, BackendServicesScopedList> items; | 
| -  /** Type of resource. */ | 
| -  core.String kind; | 
| -  /** [Output Only] A token used to continue a truncated list request. */ | 
| -  core.String nextPageToken; | 
| -  /** [Output Only] Server-defined URL for this resource. */ | 
| -  core.String selfLink; | 
| - | 
| -  BackendServiceAggregatedList(); | 
| - | 
| -  BackendServiceAggregatedList.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("id")) { | 
| -      id = _json["id"]; | 
| -    } | 
| -    if (_json.containsKey("items")) { | 
| -      items = commons.mapMap<core.Map<core.String, core.Object>, BackendServicesScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new BackendServicesScopedList.fromJson(item)); | 
| -    } | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| -    } | 
| -    if (_json.containsKey("nextPageToken")) { | 
| -      nextPageToken = _json["nextPageToken"]; | 
| -    } | 
| -    if (_json.containsKey("selfLink")) { | 
| -      selfLink = _json["selfLink"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (id != null) { | 
| -      _json["id"] = id; | 
| -    } | 
| -    if (items != null) { | 
| -      _json["items"] = commons.mapMap<BackendServicesScopedList, core.Map<core.String, core.Object>>(items, (BackendServicesScopedList item) => (item).toJson()); | 
| -    } | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| -    } | 
| -    if (nextPageToken != null) { | 
| -      _json["nextPageToken"] = nextPageToken; | 
| +    if (resources != null) { | 
| +      _json["resources"] = resources.map((value) => (value).toJson()).toList(); | 
| } | 
| if (selfLink != null) { | 
| _json["selfLink"] = selfLink; | 
| } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** Message containing Cloud CDN configuration for a backend service. */ | 
| -class BackendServiceCdnPolicy { | 
| -  /** The CacheKeyPolicy for this CdnPolicy. */ | 
| -  CacheKeyPolicy cacheKeyPolicy; | 
| - | 
| -  BackendServiceCdnPolicy(); | 
| - | 
| -  BackendServiceCdnPolicy.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("cacheKeyPolicy")) { | 
| -      cacheKeyPolicy = new CacheKeyPolicy.fromJson(_json["cacheKeyPolicy"]); | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (cacheKeyPolicy != null) { | 
| -      _json["cacheKeyPolicy"] = (cacheKeyPolicy).toJson(); | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -class BackendServiceGroupHealth { | 
| -  core.List<HealthStatus> healthStatus; | 
| -  /** | 
| -   * [Output Only] Type of resource. Always compute#backendServiceGroupHealth | 
| -   * for the health of backend services. | 
| -   */ | 
| -  core.String kind; | 
| - | 
| -  BackendServiceGroupHealth(); | 
| - | 
| -  BackendServiceGroupHealth.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("healthStatus")) { | 
| -      healthStatus = _json["healthStatus"].map((value) => new HealthStatus.fromJson(value)).toList(); | 
| -    } | 
| -    if (_json.containsKey("kind")) { | 
| -      kind = _json["kind"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (healthStatus != null) { | 
| -      _json["healthStatus"] = healthStatus.map((value) => (value).toJson()).toList(); | 
| +    if (startTimestamp != null) { | 
| +      _json["startTimestamp"] = startTimestamp; | 
| } | 
| -    if (kind != null) { | 
| -      _json["kind"] = kind; | 
| +    if (status != null) { | 
| +      _json["status"] = status; | 
| +    } | 
| +    if (statusMessage != null) { | 
| +      _json["statusMessage"] = statusMessage; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** Identity-Aware Proxy */ | 
| -class BackendServiceIAP { | 
| -  core.bool enabled; | 
| -  core.String oauth2ClientId; | 
| -  core.String oauth2ClientSecret; | 
| +class CommitmentAggregatedList { | 
| /** | 
| -   * [Output Only] SHA256 hash value for the field oauth2_client_secret above. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| -  core.String oauth2ClientSecretSha256; | 
| +  core.String id; | 
| +  /** Commitments by scope. */ | 
| +  core.Map<core.String, CommitmentsScopedList> items; | 
| +  /** | 
| +   * [Output Only] Type of resource. Always compute#commitmentAggregatedList for | 
| +   * aggregated lists of commitments. | 
| +   */ | 
| +  core.String kind; | 
| +  /** | 
| +   * [Output Only] This token allows you to get the next page of results for | 
| +   * list requests. If the number of results is larger than maxResults, use the | 
| +   * nextPageToken as a value for the query parameter pageToken in the next list | 
| +   * request. Subsequent list requests will have their own nextPageToken to | 
| +   * continue paging through the results. | 
| +   */ | 
| +  core.String nextPageToken; | 
| +  /** [Output Only] Server-defined URL for this resource. */ | 
| +  core.String selfLink; | 
|  | 
| -  BackendServiceIAP(); | 
| +  CommitmentAggregatedList(); | 
|  | 
| -  BackendServiceIAP.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("enabled")) { | 
| -      enabled = _json["enabled"]; | 
| +  CommitmentAggregatedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("id")) { | 
| +      id = _json["id"]; | 
| } | 
| -    if (_json.containsKey("oauth2ClientId")) { | 
| -      oauth2ClientId = _json["oauth2ClientId"]; | 
| +    if (_json.containsKey("items")) { | 
| +      items = commons.mapMap<core.Map<core.String, core.Object>, CommitmentsScopedList>(_json["items"], (core.Map<core.String, core.Object> item) => new CommitmentsScopedList.fromJson(item)); | 
| } | 
| -    if (_json.containsKey("oauth2ClientSecret")) { | 
| -      oauth2ClientSecret = _json["oauth2ClientSecret"]; | 
| +    if (_json.containsKey("kind")) { | 
| +      kind = _json["kind"]; | 
| } | 
| -    if (_json.containsKey("oauth2ClientSecretSha256")) { | 
| -      oauth2ClientSecretSha256 = _json["oauth2ClientSecretSha256"]; | 
| +    if (_json.containsKey("nextPageToken")) { | 
| +      nextPageToken = _json["nextPageToken"]; | 
| +    } | 
| +    if (_json.containsKey("selfLink")) { | 
| +      selfLink = _json["selfLink"]; | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (enabled != null) { | 
| -      _json["enabled"] = enabled; | 
| +    if (id != null) { | 
| +      _json["id"] = id; | 
| } | 
| -    if (oauth2ClientId != null) { | 
| -      _json["oauth2ClientId"] = oauth2ClientId; | 
| +    if (items != null) { | 
| +      _json["items"] = commons.mapMap<CommitmentsScopedList, core.Map<core.String, core.Object>>(items, (CommitmentsScopedList item) => (item).toJson()); | 
| } | 
| -    if (oauth2ClientSecret != null) { | 
| -      _json["oauth2ClientSecret"] = oauth2ClientSecret; | 
| +    if (kind != null) { | 
| +      _json["kind"] = kind; | 
| } | 
| -    if (oauth2ClientSecretSha256 != null) { | 
| -      _json["oauth2ClientSecretSha256"] = oauth2ClientSecretSha256; | 
| +    if (nextPageToken != null) { | 
| +      _json["nextPageToken"] = nextPageToken; | 
| +    } | 
| +    if (selfLink != null) { | 
| +      _json["selfLink"] = selfLink; | 
| } | 
| return _json; | 
| } | 
| } | 
|  | 
| -/** Contains a list of BackendService resources. */ | 
| -class BackendServiceList { | 
| +/** Contains a list of Commitment resources. */ | 
| +class CommitmentList { | 
| /** | 
| -   * [Output Only] Unique identifier for the resource; defined by the server. | 
| +   * [Output Only] The unique identifier for the resource. This identifier is | 
| +   * defined by the server. | 
| */ | 
| core.String id; | 
| -  /** A list of BackendService resources. */ | 
| -  core.List<BackendService> items; | 
| +  /** A list of Commitment resources. */ | 
| +  core.List<Commitment> items; | 
| /** | 
| -   * [Output Only] Type of resource. Always compute#backendServiceList for lists | 
| -   * of backend services. | 
| +   * [Output Only] Type of resource. Always compute#commitmentList for lists of | 
| +   * commitments. | 
| */ | 
| core.String kind; | 
| /** | 
| @@ -20589,14 +22254,14 @@ class BackendServiceList { | 
| /** [Output Only] Server-defined URL for this resource. */ | 
| core.String selfLink; | 
|  | 
| -  BackendServiceList(); | 
| +  CommitmentList(); | 
|  | 
| -  BackendServiceList.fromJson(core.Map _json) { | 
| +  CommitmentList.fromJson(core.Map _json) { | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| if (_json.containsKey("items")) { | 
| -      items = _json["items"].map((value) => new BackendService.fromJson(value)).toList(); | 
| +      items = _json["items"].map((value) => new Commitment.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("kind")) { | 
| kind = _json["kind"]; | 
| @@ -20630,7 +22295,7 @@ class BackendServiceList { | 
| } | 
| } | 
|  | 
| -class BackendServicesScopedListWarningData { | 
| +class CommitmentsScopedListWarningData { | 
| /** | 
| * [Output Only] A key that provides more detail on the warning being | 
| * returned. For example, for warnings where there are no results in a list | 
| @@ -20644,9 +22309,9 @@ class BackendServicesScopedListWarningData { | 
| /** [Output Only] A warning data value corresponding to the key. */ | 
| core.String value; | 
|  | 
| -  BackendServicesScopedListWarningData(); | 
| +  CommitmentsScopedListWarningData(); | 
|  | 
| -  BackendServicesScopedListWarningData.fromJson(core.Map _json) { | 
| +  CommitmentsScopedListWarningData.fromJson(core.Map _json) { | 
| if (_json.containsKey("key")) { | 
| key = _json["key"]; | 
| } | 
| @@ -20668,10 +22333,10 @@ class BackendServicesScopedListWarningData { | 
| } | 
|  | 
| /** | 
| - * Informational warning which replaces the list of backend services when the | 
| - * list is empty. | 
| + * [Output Only] Informational warning which replaces the list of commitments | 
| + * when the list is empty. | 
| */ | 
| -class BackendServicesScopedListWarning { | 
| +class CommitmentsScopedListWarning { | 
| /** | 
| * [Output Only] A warning code, if applicable. For example, Compute Engine | 
| * returns NO_RESULTS_ON_PAGE if there are no results in the response. | 
| @@ -20700,18 +22365,18 @@ class BackendServicesScopedListWarning { | 
| * example: | 
| * "data": [ { "key": "scope", "value": "zones/us-east1-d" } | 
| */ | 
| -  core.List<BackendServicesScopedListWarningData> data; | 
| +  core.List<CommitmentsScopedListWarningData> data; | 
| /** [Output Only] A human-readable description of the warning code. */ | 
| core.String message; | 
|  | 
| -  BackendServicesScopedListWarning(); | 
| +  CommitmentsScopedListWarning(); | 
|  | 
| -  BackendServicesScopedListWarning.fromJson(core.Map _json) { | 
| +  CommitmentsScopedListWarning.fromJson(core.Map _json) { | 
| if (_json.containsKey("code")) { | 
| code = _json["code"]; | 
| } | 
| if (_json.containsKey("data")) { | 
| -      data = _json["data"].map((value) => new BackendServicesScopedListWarningData.fromJson(value)).toList(); | 
| +      data = _json["data"].map((value) => new CommitmentsScopedListWarningData.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("message")) { | 
| message = _json["message"]; | 
| @@ -20733,30 +22398,30 @@ class BackendServicesScopedListWarning { | 
| } | 
| } | 
|  | 
| -class BackendServicesScopedList { | 
| -  /** List of BackendServices contained in this scope. */ | 
| -  core.List<BackendService> backendServices; | 
| +class CommitmentsScopedList { | 
| +  /** [Output Only] List of commitments contained in this scope. */ | 
| +  core.List<Commitment> commitments; | 
| /** | 
| -   * Informational warning which replaces the list of backend services when the | 
| -   * list is empty. | 
| +   * [Output Only] Informational warning which replaces the list of commitments | 
| +   * when the list is empty. | 
| */ | 
| -  BackendServicesScopedListWarning warning; | 
| +  CommitmentsScopedListWarning warning; | 
|  | 
| -  BackendServicesScopedList(); | 
| +  CommitmentsScopedList(); | 
|  | 
| -  BackendServicesScopedList.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("backendServices")) { | 
| -      backendServices = _json["backendServices"].map((value) => new BackendService.fromJson(value)).toList(); | 
| +  CommitmentsScopedList.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("commitments")) { | 
| +      commitments = _json["commitments"].map((value) => new Commitment.fromJson(value)).toList(); | 
| } | 
| if (_json.containsKey("warning")) { | 
| -      warning = new BackendServicesScopedListWarning.fromJson(_json["warning"]); | 
| +      warning = new CommitmentsScopedListWarning.fromJson(_json["warning"]); | 
| } | 
| } | 
|  | 
| core.Map<core.String, core.Object> toJson() { | 
| final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (backendServices != null) { | 
| -      _json["backendServices"] = backendServices.map((value) => (value).toJson()).toList(); | 
| +    if (commitments != null) { | 
| +      _json["commitments"] = commitments.map((value) => (value).toJson()).toList(); | 
| } | 
| if (warning != null) { | 
| _json["warning"] = (warning).toJson(); | 
| @@ -20765,109 +22430,6 @@ class BackendServicesScopedList { | 
| } | 
| } | 
|  | 
| -class CacheInvalidationRule { | 
| -  /** | 
| -   * If set, this invalidation rule will only apply to requests with a Host | 
| -   * header matching host. | 
| -   */ | 
| -  core.String host; | 
| -  core.String path; | 
| - | 
| -  CacheInvalidationRule(); | 
| - | 
| -  CacheInvalidationRule.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("host")) { | 
| -      host = _json["host"]; | 
| -    } | 
| -    if (_json.containsKey("path")) { | 
| -      path = _json["path"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (host != null) { | 
| -      _json["host"] = host; | 
| -    } | 
| -    if (path != null) { | 
| -      _json["path"] = path; | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| -/** | 
| - * Message containing what to include in the cache key for a request for Cloud | 
| - * CDN. | 
| - */ | 
| -class CacheKeyPolicy { | 
| -  /** If true, requests to different hosts will be cached separately. */ | 
| -  core.bool includeHost; | 
| -  /** If true, http and https requests will be cached separately. */ | 
| -  core.bool includeProtocol; | 
| -  /** | 
| -   * If true, include query string parameters in the cache key according to | 
| -   * query_string_whitelist and query_string_blacklist. If neither is set, the | 
| -   * entire query string will be included. If false, the query string will be | 
| -   * excluded from the cache key entirely. | 
| -   */ | 
| -  core.bool includeQueryString; | 
| -  /** | 
| -   * Names of query string parameters to exclude in cache keys. All other | 
| -   * parameters will be included. Either specify query_string_whitelist or | 
| -   * query_string_blacklist, not both. '&' and '=' will be percent encoded and | 
| -   * not treated as delimiters. | 
| -   */ | 
| -  core.List<core.String> queryStringBlacklist; | 
| -  /** | 
| -   * Names of query string parameters to include in cache keys. All other | 
| -   * parameters will be excluded. Either specify query_string_whitelist or | 
| -   * query_string_blacklist, not both. '&' and '=' will be percent encoded and | 
| -   * not treated as delimiters. | 
| -   */ | 
| -  core.List<core.String> queryStringWhitelist; | 
| - | 
| -  CacheKeyPolicy(); | 
| - | 
| -  CacheKeyPolicy.fromJson(core.Map _json) { | 
| -    if (_json.containsKey("includeHost")) { | 
| -      includeHost = _json["includeHost"]; | 
| -    } | 
| -    if (_json.containsKey("includeProtocol")) { | 
| -      includeProtocol = _json["includeProtocol"]; | 
| -    } | 
| -    if (_json.containsKey("includeQueryString")) { | 
| -      includeQueryString = _json["includeQueryString"]; | 
| -    } | 
| -    if (_json.containsKey("queryStringBlacklist")) { | 
| -      queryStringBlacklist = _json["queryStringBlacklist"]; | 
| -    } | 
| -    if (_json.containsKey("queryStringWhitelist")) { | 
| -      queryStringWhitelist = _json["queryStringWhitelist"]; | 
| -    } | 
| -  } | 
| - | 
| -  core.Map<core.String, core.Object> toJson() { | 
| -    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| -    if (includeHost != null) { | 
| -      _json["includeHost"] = includeHost; | 
| -    } | 
| -    if (includeProtocol != null) { | 
| -      _json["includeProtocol"] = includeProtocol; | 
| -    } | 
| -    if (includeQueryString != null) { | 
| -      _json["includeQueryString"] = includeQueryString; | 
| -    } | 
| -    if (queryStringBlacklist != null) { | 
| -      _json["queryStringBlacklist"] = queryStringBlacklist; | 
| -    } | 
| -    if (queryStringWhitelist != null) { | 
| -      _json["queryStringWhitelist"] = queryStringWhitelist; | 
| -    } | 
| -    return _json; | 
| -  } | 
| -} | 
| - | 
| /** Message containing connection draining configuration. */ | 
| class ConnectionDraining { | 
| /** | 
| @@ -22906,7 +24468,7 @@ class GlobalSetLabelsRequest { | 
| /** Guest OS features. */ | 
| class GuestOsFeature { | 
| /** | 
| -   * The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is | 
| +   * The type of supported feature. Currently only VIRTIO_SCSI_MULTIQUEUE is | 
| * supported. For newer Windows images, the server might also populate this | 
| * property with the value WINDOWS to indicate that this is a Windows image. | 
| * This value is purely informational and does not enable or disable any | 
| @@ -24293,6 +25855,10 @@ class Instance { | 
| * created before you can assign them. | 
| */ | 
| core.List<AttachedDisk> disks; | 
| +  /** | 
| +   * List of the type and count of accelerator cards attached to the instance. | 
| +   */ | 
| +  core.List<AcceleratorConfig> guestAccelerators; | 
| /** | 
| * [Output Only] The unique identifier for the resource. This identifier is | 
| * defined by the server. | 
| @@ -24430,6 +25996,9 @@ class Instance { | 
| if (_json.containsKey("disks")) { | 
| disks = _json["disks"].map((value) => new AttachedDisk.fromJson(value)).toList(); | 
| } | 
| +    if (_json.containsKey("guestAccelerators")) { | 
| +      guestAccelerators = _json["guestAccelerators"].map((value) => new AcceleratorConfig.fromJson(value)).toList(); | 
| +    } | 
| if (_json.containsKey("id")) { | 
| id = _json["id"]; | 
| } | 
| @@ -24497,6 +26066,9 @@ class Instance { | 
| if (disks != null) { | 
| _json["disks"] = disks.map((value) => (value).toJson()).toList(); | 
| } | 
| +    if (guestAccelerators != null) { | 
| +      _json["guestAccelerators"] = guestAccelerators.map((value) => (value).toJson()).toList(); | 
| +    } | 
| if (id != null) { | 
| _json["id"] = id; | 
| } | 
| @@ -26117,6 +27689,11 @@ class InstanceProperties { | 
| * from this template. | 
| */ | 
| core.List<AttachedDisk> disks; | 
| +  /** | 
| +   * A list of guest accelerator cards' type and count to use for instances | 
| +   * created from the instance template. | 
| +   */ | 
| +  core.List<AcceleratorConfig> guestAccelerators; | 
| /** Labels to apply to instances that are created from this template. */ | 
| core.Map<core.String, core.String> labels; | 
| /** | 
| @@ -26163,6 +27740,9 @@ class InstanceProperties { | 
| if (_json.containsKey("disks")) { | 
| disks = _json["disks"].map((value) => new AttachedDisk.fromJson(value)).toList(); | 
| } | 
| +    if (_json.containsKey("guestAccelerators")) { | 
| +      guestAccelerators = _json["guestAccelerators"].map((value) => new AcceleratorConfig.fromJson(value)).toList(); | 
| +    } | 
| if (_json.containsKey("labels")) { | 
| labels = _json["labels"]; | 
| } | 
| @@ -26197,6 +27777,9 @@ class InstanceProperties { | 
| if (disks != null) { | 
| _json["disks"] = disks.map((value) => (value).toJson()).toList(); | 
| } | 
| +    if (guestAccelerators != null) { | 
| +      _json["guestAccelerators"] = guestAccelerators.map((value) => (value).toJson()).toList(); | 
| +    } | 
| if (labels != null) { | 
| _json["labels"] = labels; | 
| } | 
| @@ -26627,6 +28210,29 @@ class InstancesSetLabelsRequest { | 
| } | 
| } | 
|  | 
| +class InstancesSetMachineResourcesRequest { | 
| +  /** | 
| +   * List of the type and count of accelerator cards attached to the instance. | 
| +   */ | 
| +  core.List<AcceleratorConfig> guestAccelerators; | 
| + | 
| +  InstancesSetMachineResourcesRequest(); | 
| + | 
| +  InstancesSetMachineResourcesRequest.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("guestAccelerators")) { | 
| +      guestAccelerators = _json["guestAccelerators"].map((value) => new AcceleratorConfig.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 (guestAccelerators != null) { | 
| +      _json["guestAccelerators"] = guestAccelerators.map((value) => (value).toJson()).toList(); | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| class InstancesSetMachineTypeRequest { | 
| /** | 
| * Full or partial URL of the machine type resource. See Machine Types for a | 
| @@ -29037,6 +30643,7 @@ class Quota { | 
| * - "AUTOSCALERS" | 
| * - "BACKEND_BUCKETS" | 
| * - "BACKEND_SERVICES" | 
| +   * - "COMMITMENTS" | 
| * - "CPUS" | 
| * - "CPUS_ALL_REGIONS" | 
| * - "DISKS_TOTAL_GB" | 
| @@ -29769,6 +31376,51 @@ class RegionList { | 
| } | 
| } | 
|  | 
| +/** | 
| + * Commitment for a particular resource (a Commitment is composed of one or more | 
| + * of these). | 
| + */ | 
| +class ResourceCommitment { | 
| +  /** | 
| +   * The amount of the resource purchased (in a type-dependent unit, such as | 
| +   * bytes). For vCPUs, this can just be an integer. For memory, this must be | 
| +   * provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of | 
| +   * memory per every vCPU. | 
| +   */ | 
| +  core.String amount; | 
| +  /** | 
| +   * Type of resource for which this commitment applies. Possible values are | 
| +   * VCPU and MEMORY | 
| +   * Possible string values are: | 
| +   * - "MEMORY" | 
| +   * - "UNSPECIFIED" | 
| +   * - "VCPU" | 
| +   */ | 
| +  core.String type; | 
| + | 
| +  ResourceCommitment(); | 
| + | 
| +  ResourceCommitment.fromJson(core.Map _json) { | 
| +    if (_json.containsKey("amount")) { | 
| +      amount = _json["amount"]; | 
| +    } | 
| +    if (_json.containsKey("type")) { | 
| +      type = _json["type"]; | 
| +    } | 
| +  } | 
| + | 
| +  core.Map<core.String, core.Object> toJson() { | 
| +    final core.Map<core.String, core.Object> _json = new core.Map<core.String, core.Object>(); | 
| +    if (amount != null) { | 
| +      _json["amount"] = amount; | 
| +    } | 
| +    if (type != null) { | 
| +      _json["type"] = type; | 
| +    } | 
| +    return _json; | 
| +  } | 
| +} | 
| + | 
| class ResourceGroupReference { | 
| /** | 
| * A URI referencing one of the instance groups listed in the backend service. | 
|  |