all: autogenerated update (2019-06-01)

Update:
- accesscontextmanager/v1
- accesscontextmanager/v1beta
- adexchangebuyer2/v2beta1
- alertcenter/v1beta1
- cloudidentity/v1
- cloudidentity/v1beta1
- cloudsearch/v1
- commentanalyzer/v1alpha1
- compute/v0.alpha
- compute/v0.beta
- compute/v1
- container/v1beta1
- containeranalysis/v1alpha1
- containeranalysis/v1beta1
- content/v2
- content/v2.1
- dlp/v2
- docs/v1
- doubleclickbidmanager/v1
- healthcare/v1alpha2
- healthcare/v1beta1
- logging/v2
- ml/v1
- monitoring/v3
- redis/v1
- redis/v1beta1
- securitycenter/v1
- securitycenter/v1beta1
- serviceconsumermanagement/v1
- servicenetworking/v1
- servicenetworking/v1beta
- serviceusage/v1
- serviceusage/v1beta1
- speech/v1p1beta1
- streetviewpublish/v1
- testing/v1
- toolresults/v1beta3
- vision/v1
- vision/v1p1beta1
- vision/v1p2beta1
diff --git a/accesscontextmanager/v1/accesscontextmanager-api.json b/accesscontextmanager/v1/accesscontextmanager-api.json
index 212d412..4494e2b 100644
--- a/accesscontextmanager/v1/accesscontextmanager-api.json
+++ b/accesscontextmanager/v1/accesscontextmanager-api.json
@@ -692,7 +692,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190529",
   "rootUrl": "https://accesscontextmanager.googleapis.com/",
   "schemas": {
     "AccessLevel": {
@@ -1116,7 +1116,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/accesscontextmanager/v1/accesscontextmanager-gen.go b/accesscontextmanager/v1/accesscontextmanager-gen.go
index 2c5099a..b0f8a74 100644
--- a/accesscontextmanager/v1/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1/accesscontextmanager-gen.go
@@ -967,81 +967,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-api.json b/accesscontextmanager/v1beta/accesscontextmanager-api.json
index 624ab40..345fcb7 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-api.json
+++ b/accesscontextmanager/v1beta/accesscontextmanager-api.json
@@ -598,7 +598,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190529",
   "rootUrl": "https://accesscontextmanager.googleapis.com/",
   "schemas": {
     "AccessLevel": {
@@ -999,7 +999,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/accesscontextmanager/v1beta/accesscontextmanager-gen.go b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
index ce483d7..ab24798 100644
--- a/accesscontextmanager/v1beta/accesscontextmanager-gen.go
+++ b/accesscontextmanager/v1beta/accesscontextmanager-gen.go
@@ -916,81 +916,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
index c0bd128..3a12a4c 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json
@@ -2485,7 +2485,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190530",
   "rootUrl": "https://adexchangebuyer.googleapis.com/",
   "schemas": {
     "AbsoluteDateRange": {
@@ -2550,6 +2550,25 @@
       },
       "type": "object"
     },
+    "AdTechnologyProviders": {
+      "description": "Detected ad technology provider information.",
+      "id": "AdTechnologyProviders",
+      "properties": {
+        "detectedProviderIds": {
+          "description": "The detected ad technology provider IDs for this creative.\nSee https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv for\nmapping of provider ID to provided name, a privacy policy URL, and a list\nof domains which can be attributed to the provider.\n\nIf the creative contains provider IDs that are outside of those listed in\nthe `BidRequest.adslot.consented_providers_settings.consented_providers`\nfield on the (Google bid\nprotocol)[https://developers.google.com/authorized-buyers/rtb/downloads/realtime-bidding-proto]\nand the\n`BidRequest.user.ext.consented_providers_settings.consented_providers`\nfield on the (OpenRTB\nprotocol)[https://developers.google.com/authorized-buyers/rtb/downloads/openrtb-adx-proto],\nand a bid is submitted with that creative for an impression that will\nserve to an EEA user, the bid will be filtered before the auction.",
+          "items": {
+            "format": "int64",
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "hasUnidentifiedProvider": {
+          "description": "Whether the creative contains an unidentified ad technology provider.\n\nIf true for a given creative, any bid submitted with that creative for an\nimpression that will serve to an EEA user will be filtered before the\nauction.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "AddDealAssociationRequest": {
       "description": "A request for associating a deal and a creative.",
       "id": "AddDealAssociationRequest",
@@ -2944,6 +2963,10 @@
           "description": "The link to AdChoices destination page.",
           "type": "string"
         },
+        "adTechnologyProviders": {
+          "$ref": "AdTechnologyProviders",
+          "description": "Output only. The detected ad technology providers."
+        },
         "advertiserName": {
           "description": "The name of the company being advertised in the creative.",
           "type": "string"
diff --git a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
index 3bd2112..2bed5a5 100644
--- a/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
+++ b/adexchangebuyer2/v2beta1/adexchangebuyer2-gen.go
@@ -656,6 +656,72 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// AdTechnologyProviders: Detected ad technology provider information.
+type AdTechnologyProviders struct {
+	// DetectedProviderIds: The detected ad technology provider IDs for this
+	// creative.
+	// See https://storage.googleapis.com/adx-rtb-dictionaries/providers.csv
+	// for
+	// mapping of provider ID to provided name, a privacy policy URL, and a
+	// list
+	// of domains which can be attributed to the provider.
+	//
+	// If the creative contains provider IDs that are outside of those
+	// listed in
+	// the
+	// `BidRequest.adslot.consented_providers_settings.consented_providers`
+	// f
+	// ield on the (Google
+	// bid
+	// protocol)[https://developers.google.com/authorized-buyers/rtb/down
+	// loads/realtime-bidding-proto]
+	// and
+	// the
+	// `BidRequest.user.ext.consented_providers_settings.consented_provid
+	// ers`
+	// field on the
+	// (OpenRTB
+	// protocol)[https://developers.google.com/authorized-buyers/rtb
+	// /downloads/openrtb-adx-proto],
+	// and a bid is submitted with that creative for an impression that
+	// will
+	// serve to an EEA user, the bid will be filtered before the auction.
+	DetectedProviderIds googleapi.Int64s `json:"detectedProviderIds,omitempty"`
+
+	// HasUnidentifiedProvider: Whether the creative contains an
+	// unidentified ad technology provider.
+	//
+	// If true for a given creative, any bid submitted with that creative
+	// for an
+	// impression that will serve to an EEA user will be filtered before
+	// the
+	// auction.
+	HasUnidentifiedProvider bool `json:"hasUnidentifiedProvider,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DetectedProviderIds")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "DetectedProviderIds") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *AdTechnologyProviders) MarshalJSON() ([]byte, error) {
+	type NoMethod AdTechnologyProviders
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // AddDealAssociationRequest: A request for associating a deal and a
 // creative.
 type AddDealAssociationRequest struct {
@@ -1358,6 +1424,10 @@
 	// AdChoicesDestinationUrl: The link to AdChoices destination page.
 	AdChoicesDestinationUrl string `json:"adChoicesDestinationUrl,omitempty"`
 
+	// AdTechnologyProviders: Output only. The detected ad technology
+	// providers.
+	AdTechnologyProviders *AdTechnologyProviders `json:"adTechnologyProviders,omitempty"`
+
 	// AdvertiserName: The name of the company being advertised in the
 	// creative.
 	AdvertiserName string `json:"advertiserName,omitempty"`
diff --git a/alertcenter/v1beta1/alertcenter-api.json b/alertcenter/v1beta1/alertcenter-api.json
index fb785cd..a6b72ed 100644
--- a/alertcenter/v1beta1/alertcenter-api.json
+++ b/alertcenter/v1beta1/alertcenter-api.json
@@ -357,7 +357,7 @@
       }
     }
   },
-  "revision": "20190418",
+  "revision": "20190526",
   "rootUrl": "https://alertcenter.googleapis.com/",
   "schemas": {
     "AccountWarning": {
@@ -869,6 +869,10 @@
       "description": "Entity whose actions triggered a Gmail phishing alert.",
       "id": "MaliciousEntity",
       "properties": {
+        "displayName": {
+          "description": "The header from display name.",
+          "type": "string"
+        },
         "fromHeader": {
           "description": "The sender email address.",
           "type": "string"
diff --git a/alertcenter/v1beta1/alertcenter-gen.go b/alertcenter/v1beta1/alertcenter-gen.go
index 274c8a5..a849570 100644
--- a/alertcenter/v1beta1/alertcenter-gen.go
+++ b/alertcenter/v1beta1/alertcenter-gen.go
@@ -1024,10 +1024,13 @@
 // MaliciousEntity: Entity whose actions triggered a Gmail phishing
 // alert.
 type MaliciousEntity struct {
+	// DisplayName: The header from display name.
+	DisplayName string `json:"displayName,omitempty"`
+
 	// FromHeader: The sender email address.
 	FromHeader string `json:"fromHeader,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "FromHeader") to
+	// ForceSendFields is a list of field names (e.g. "DisplayName") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1035,10 +1038,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "FromHeader") to include in
-	// API requests with the JSON null value. By default, fields with empty
-	// values are omitted from API requests. However, any field with an
-	// empty value appearing in NullFields will be sent to the server as
+	// NullFields is a list of field names (e.g. "DisplayName") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
 	// This may be used to include null fields in Patch requests.
 	NullFields []string `json:"-"`
diff --git a/cloudidentity/v1/cloudidentity-api.json b/cloudidentity/v1/cloudidentity-api.json
index 9f132de..7c649b8 100644
--- a/cloudidentity/v1/cloudidentity-api.json
+++ b/cloudidentity/v1/cloudidentity-api.json
@@ -496,7 +496,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190529",
   "rootUrl": "https://cloudidentity.googleapis.com/",
   "schemas": {
     "EntityKey": {
@@ -709,7 +709,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudidentity/v1/cloudidentity-gen.go b/cloudidentity/v1/cloudidentity-gen.go
index a980396..7e49b55 100644
--- a/cloudidentity/v1/cloudidentity-gen.go
+++ b/cloudidentity/v1/cloudidentity-gen.go
@@ -640,81 +640,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/cloudidentity/v1beta1/cloudidentity-api.json b/cloudidentity/v1beta1/cloudidentity-api.json
index e68e16b..7f6bd98 100644
--- a/cloudidentity/v1beta1/cloudidentity-api.json
+++ b/cloudidentity/v1beta1/cloudidentity-api.json
@@ -451,7 +451,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190529",
   "rootUrl": "https://cloudidentity.googleapis.com/",
   "schemas": {
     "EntityKey": {
@@ -653,7 +653,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/cloudidentity/v1beta1/cloudidentity-gen.go b/cloudidentity/v1beta1/cloudidentity-gen.go
index 211bab2..bce5aac 100644
--- a/cloudidentity/v1beta1/cloudidentity-gen.go
+++ b/cloudidentity/v1beta1/cloudidentity-gen.go
@@ -608,81 +608,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/cloudsearch/v1/cloudsearch-api.json b/cloudsearch/v1/cloudsearch-api.json
index 0f3906d..f63e3f9 100644
--- a/cloudsearch/v1/cloudsearch-api.json
+++ b/cloudsearch/v1/cloudsearch-api.json
@@ -1429,7 +1429,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190522",
   "rootUrl": "https://cloudsearch.googleapis.com/",
   "schemas": {
     "BooleanOperatorOptions": {
@@ -3309,6 +3309,10 @@
           "description": "Indicates that the property can be used for sorting. Cannot be true for\nproperties that are repeatable. Cannot be true for properties whose type\nis object or user identifier. IsReturnable must be true to set this option.\nOnly supported for Boolean, Date, Double, Integer, and Timestamp\nproperties.",
           "type": "boolean"
         },
+        "isWildcardSearchable": {
+          "description": "Indicates that users can perform wildcard search for this\nproperty. Only supported for Text properties. IsReturnable must be true to\nset this option. In a given datasource maximum of 5 properties can be\nmarked as is_wildcard_searchable.\n\nNote: This is an alpha feature and is enabled for whitelisted users only.",
+          "type": "boolean"
+        },
         "name": {
           "description": "The name of the property. Item indexing requests sent to the Indexing API\nshould set the property name\nequal to this value. For example, if name is *subject_line*, then indexing\nrequests for document items with subject fields should set the\nname for that field equal to\n*subject_line*. Use the name as the identifier for the object property.\nOnce registered as a property for an object, you cannot re-use this name\nfor another property within that object.\nThe name must start with a letter and can only contain letters (A-Z, a-z)\nor numbers (0-9).\nThe maximum length is 256 characters.",
           "type": "string"
diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go
index 1e46fec..680eb5e 100644
--- a/cloudsearch/v1/cloudsearch-gen.go
+++ b/cloudsearch/v1/cloudsearch-gen.go
@@ -4168,6 +4168,18 @@
 	// properties.
 	IsSortable bool `json:"isSortable,omitempty"`
 
+	// IsWildcardSearchable: Indicates that users can perform wildcard
+	// search for this
+	// property. Only supported for Text properties. IsReturnable must be
+	// true to
+	// set this option. In a given datasource maximum of 5 properties can
+	// be
+	// marked as is_wildcard_searchable.
+	//
+	// Note: This is an alpha feature and is enabled for whitelisted users
+	// only.
+	IsWildcardSearchable bool `json:"isWildcardSearchable,omitempty"`
+
 	// Name: The name of the property. Item indexing requests sent to the
 	// Indexing API
 	// should set the property name
diff --git a/commentanalyzer/v1alpha1/commentanalyzer-api.json b/commentanalyzer/v1alpha1/commentanalyzer-api.json
index 2daaab0..0a7b031 100644
--- a/commentanalyzer/v1alpha1/commentanalyzer-api.json
+++ b/commentanalyzer/v1alpha1/commentanalyzer-api.json
@@ -144,7 +144,7 @@
       }
     }
   },
-  "revision": "20190414",
+  "revision": "20190526",
   "rootUrl": "https://commentanalyzer.googleapis.com/",
   "schemas": {
     "AnalyzeCommentRequest": {
@@ -212,14 +212,14 @@
           "type": "string"
         },
         "detectedLanguages": {
-          "description": "Contains the language as detected from the text content.  If no language\nwas specified in the request, the first (the most likely) language is used\nto select an appropriate model.  Sorted in order of likelihood.",
+          "description": "Contains the languages detected from the text content, sorted in order of\nlikelihood.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "languages": {
-          "description": "The language(s) requested by the client, as specified in the request. If\nthe request did not specify any language, this will be empty and the\ndetected_languages field will be populated.",
+          "description": "The language(s) used by CommentAnalyzer service to choose which Model to\nuse when analyzing the comment. Might better be called\n\"effective_languages\". The logic used to make the choice is as follows:\n  if Request.languages.empty()\n    effective_languages = detected_languages\n  else\n    effective_languages = Request.languages",
           "items": {
             "type": "string"
           },
diff --git a/commentanalyzer/v1alpha1/commentanalyzer-gen.go b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
index 9b94867..1963314 100644
--- a/commentanalyzer/v1alpha1/commentanalyzer-gen.go
+++ b/commentanalyzer/v1alpha1/commentanalyzer-gen.go
@@ -249,18 +249,21 @@
 	// ClientToken: Same token from the original AnalyzeCommentRequest.
 	ClientToken string `json:"clientToken,omitempty"`
 
-	// DetectedLanguages: Contains the language as detected from the text
-	// content.  If no language
-	// was specified in the request, the first (the most likely) language is
-	// used
-	// to select an appropriate model.  Sorted in order of likelihood.
+	// DetectedLanguages: Contains the languages detected from the text
+	// content, sorted in order of
+	// likelihood.
 	DetectedLanguages []string `json:"detectedLanguages,omitempty"`
 
-	// Languages: The language(s) requested by the client, as specified in
-	// the request. If
-	// the request did not specify any language, this will be empty and
-	// the
-	// detected_languages field will be populated.
+	// Languages: The language(s) used by CommentAnalyzer service to choose
+	// which Model to
+	// use when analyzing the comment. Might better be
+	// called
+	// "effective_languages". The logic used to make the choice is as
+	// follows:
+	//   if Request.languages.empty()
+	//     effective_languages = detected_languages
+	//   else
+	//     effective_languages = Request.languages
 	Languages []string `json:"languages,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
diff --git a/compute/v0.alpha/compute-api.json b/compute/v0.alpha/compute-api.json
index 2c7b19d..f286714 100644
--- a/compute/v0.alpha/compute-api.json
+++ b/compute/v0.alpha/compute-api.json
@@ -29,7 +29,7 @@
   "description": "Creates and runs virtual machines on Google Cloud Platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/aKSq_aUPuAn1vDfZ4ilQirFUTJ4\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/CGOuQXfe0oClVxpR-J11Xr1lOIU\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -2136,6 +2136,7 @@
               "type": "string"
             },
             "guestFlush": {
+              "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
               "location": "query",
               "type": "boolean"
             },
@@ -10282,6 +10283,11 @@
               "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
               "location": "query",
               "type": "string"
+            },
+            "validateOnly": {
+              "description": "If true, the request will not be committed.",
+              "location": "query",
+              "type": "boolean"
             }
           },
           "path": "{project}/regions/{region}/interconnectAttachments",
@@ -16278,6 +16284,7 @@
               "type": "string"
             },
             "guestFlush": {
+              "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
               "location": "query",
               "type": "boolean"
             },
@@ -27685,7 +27692,7 @@
       }
     }
   },
-  "revision": "20190403",
+  "revision": "20190528",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -29987,7 +29994,7 @@
             "INVALID_LB_POLICY",
             "LEAST_REQUEST",
             "MAGLEV",
-            "ORINGINAL_DESTINATION",
+            "ORIGINAL_DESTINATION",
             "RANDOM",
             "RING_HASH",
             "ROUND_ROBIN"
@@ -31495,7 +31502,7 @@
         },
         "diskEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
+          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
         },
         "guestOsFeatures": {
           "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read  Enabling guest operating system features to see a list of available options.",
@@ -31662,11 +31669,11 @@
           "type": "string"
         },
         "type": {
-          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project/zones/zone/diskTypes/pd-standard or pd-ssd",
           "type": "string"
         },
         "users": {
-          "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+          "description": "[Output Only] Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
           "items": {
             "type": "string"
           },
@@ -35261,6 +35268,10 @@
           "$ref": "HttpRouteAction",
           "description": "In response to a matching matchRule, the load balancer performs advanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend. If  routeAction specifies any  weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any  weightedBackendServices.\nOnly one of routeAction or urlRedirect must be set."
         },
+        "service": {
+          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is additionally specified, advanced routing actions like URL Rewrites, etc. take effect prior to sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendService s. Conversely, if routeAction specifies any  weightedBackendServices, service must not be specified.\nOnly one of urlRedirect, service or routeAction.weightedBackendService must be set.",
+          "type": "string"
+        },
         "urlRedirect": {
           "$ref": "HttpRedirectAction",
           "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect.\nIf urlRedirect is specified, service or routeAction must not be set."
@@ -35597,7 +35608,7 @@
               "type": "string"
             },
             "sha1Checksum": {
-              "description": "An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
+              "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
               "pattern": "[a-f0-9]{40}",
               "type": "string"
             },
@@ -35954,7 +35965,7 @@
         },
         "reservationAffinity": {
           "$ref": "ReservationAffinity",
-          "description": "The configuration of desired allocations which this Instance could consume capacity from."
+          "description": "The configuration of desired reservations from which this Instance can consume capacity from."
         },
         "resourcePolicies": {
           "description": "Resource policies applied to this instance.",
@@ -36941,6 +36952,10 @@
           "description": "[Output Only] A bit indicating whether the managed instance group is in a stable state. A stable state means that: none of the instances in the managed instance group is currently undergoing any type of change (for example, creation, restart, or deletion); no future changes are scheduled for instances in the managed instance group; and the managed instance group itself is not being modified.",
           "type": "boolean"
         },
+        "stateful": {
+          "$ref": "InstanceGroupManagerStatusStateful",
+          "description": "[Output Only] Stateful status of the given Instance Group Manager."
+        },
         "versionTarget": {
           "$ref": "InstanceGroupManagerStatusVersionTarget",
           "description": "[Output Only] A status of consistency of Instances' versions with their target version specified by version field on Instance Group Manager."
@@ -36948,6 +36963,16 @@
       },
       "type": "object"
     },
+    "InstanceGroupManagerStatusStateful": {
+      "id": "InstanceGroupManagerStatusStateful",
+      "properties": {
+        "isStateful": {
+          "description": "[Output Only] A bit indicating whether the managed instance group is stateful, i.e. has any disks in Stateful Policy or at least one per-instance config. This is determined based on the user intent, the group may be reported as not stateful even when there is still some preserved state on managed instances.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "InstanceGroupManagerStatusVersionTarget": {
       "id": "InstanceGroupManagerStatusVersionTarget",
       "properties": {
@@ -38624,7 +38649,7 @@
           "type": "array"
         },
         "interconnectType": {
-          "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
+          "description": "Type of interconnect, which can take one of the following values: \n- PARTNER: A partner-managed interconnection shared between customers though a partner. \n- DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
           "enum": [
             "DEDICATED",
             "IT_PRIVATE",
@@ -38655,7 +38680,7 @@
           "type": "object"
         },
         "linkType": {
-          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
+          "description": "Type of link requested, which can take one of the following values: \n- LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics \n- LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_100G_LR",
             "LINK_TYPE_ETHERNET_10G_LR"
@@ -38685,7 +38710,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current status of this Interconnect's functionality, which can take one of the following values: \n- OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. \n- OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. \n- OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -38719,7 +38744,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current state of Interconnect functionality, which can take one of the following values: \n- ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. \n- UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. \n- UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "ACTIVE",
             "UNPROVISIONED"
@@ -38742,16 +38767,18 @@
           "type": "boolean"
         },
         "bandwidth": {
-          "description": "Provisioned bandwidth capacity for the interconnectAttachment. Can be set by the partner to update the customer's provisioned bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED.",
+          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: \n- BPS_50M: 50 Mbit/s \n- BPS_100M: 100 Mbit/s \n- BPS_200M: 200 Mbit/s \n- BPS_300M: 300 Mbit/s \n- BPS_400M: 400 Mbit/s \n- BPS_500M: 500 Mbit/s \n- BPS_1G: 1 Gbit/s \n- BPS_2G: 2 Gbit/s \n- BPS_5G: 5 Gbit/s \n- BPS_10G: 10 Gbit/s",
           "enum": [
             "BPS_100M",
             "BPS_10G",
             "BPS_1G",
             "BPS_200M",
+            "BPS_20G",
             "BPS_2G",
             "BPS_300M",
             "BPS_400M",
             "BPS_500M",
+            "BPS_50G",
             "BPS_50M",
             "BPS_5G"
           ],
@@ -38765,6 +38792,8 @@
             "",
             "",
             "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -38793,7 +38822,7 @@
           "type": "string"
         },
         "edgeAvailabilityDomain": {
-          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time. For improved reliability, customers should configure a pair of attachments with one per availability domain. The selected availability domain will be provided to the Partner via the pairing key so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
+          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: \n- AVAILABILITY_DOMAIN_ANY \n- AVAILABILITY_DOMAIN_1 \n- AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
           "enum": [
             "AVAILABILITY_DOMAIN_1",
             "AVAILABILITY_DOMAIN_2",
@@ -38842,7 +38871,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional, which can take one of the following values: \n- OS_ACTIVE: The attachment has been turned up and is ready to use. \n- OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -38858,7 +38887,7 @@
           "type": "string"
         },
         "partnerAsn": {
-          "description": "Optional BGP ASN for the router that should be supplied by a layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
+          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
           "format": "int64",
           "type": "string"
         },
@@ -38887,7 +38916,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of this attachment's functionality.",
+          "description": "[Output Only] The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: \n- ACTIVE: The attachment has been turned up and is ready to use. \n- UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. \n- PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. \n- PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. \n- PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. \n- DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted.",
           "enum": [
             "ACTIVE",
             "DEFUNCT",
@@ -38909,6 +38938,7 @@
           "type": "string"
         },
         "type": {
+          "description": "The type of interconnect attachment this is, which can take one of the following values: \n- DEDICATED: an attachment to a Dedicated Interconnect. \n- PARTNER: an attachment to a Partner Interconnect, created by the customer. \n- PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner.",
           "enum": [
             "DEDICATED",
             "PARTNER",
@@ -39166,7 +39196,7 @@
           "type": "string"
         },
         "portalUrl": {
-          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep-link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
+          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
           "type": "string"
         }
       },
@@ -39349,6 +39379,7 @@
           "type": "string"
         },
         "state": {
+          "description": "The state of a LACP link, which can take one of the following values: \n- ACTIVE: The link is configured and active within the bundle. \n- DETACHED: The link is not configured within the bundle. This means that the rest of the object should be empty.",
           "enum": [
             "ACTIVE",
             "DETACHED"
@@ -39552,7 +39583,7 @@
           "type": "string"
         },
         "continent": {
-          "description": "[Output Only] Continent for this location.",
+          "description": "[Output Only] Continent for this location, which can take one of the following values: \n- AFRICA \n- ASIA_PAC \n- EUROPE \n- NORTH_AMERICA \n- SOUTH_AMERICA",
           "enum": [
             "AFRICA",
             "ASIA_PAC",
@@ -39629,7 +39660,7 @@
           "type": "string"
         },
         "status": {
-          "description": "[Output Only] The status of this InterconnectLocation. If the status is AVAILABLE, new Interconnects may be provisioned in this InterconnectLocation. Otherwise, no new Interconnects may be provisioned.",
+          "description": "[Output Only] The status of this InterconnectLocation, which can take one of the following values: \n- CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. \n- AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.",
           "enum": [
             "AVAILABLE",
             "CLOSED"
@@ -39808,7 +39839,7 @@
           "type": "string"
         },
         "issueType": {
-          "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "Form this outage is expected to take, which can take one of the following values: \n- OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. \n- PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "IT_OUTAGE",
             "IT_PARTIAL_OUTAGE",
@@ -39828,7 +39859,7 @@
           "type": "string"
         },
         "source": {
-          "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
+          "description": "The party that generated this notification, which can take the following value: \n- GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.",
           "enum": [
             "GOOGLE",
             "NSRC_GOOGLE"
@@ -39845,7 +39876,7 @@
           "type": "string"
         },
         "state": {
-          "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "State of this notification, which can take one of the following values: \n- ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. \n- CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "ACTIVE",
             "CANCELLED",
@@ -40556,7 +40587,7 @@
       "id": "LogConfigDataAccessOptions",
       "properties": {
         "logMode": {
-          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.\n\nNOTE: Logging to Gin in a fail-closed manner is currently unsupported while work is being done to satisfy the requirements of go/345. Currently, setting LOG_FAIL_CLOSED mode will have no effect, but still exists because there is active work being done to support it (b/115874152).",
+          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
           "enum": [
             "LOG_FAIL_CLOSED",
             "LOG_MODE_UNSPECIFIED"
@@ -40594,7 +40625,7 @@
         },
         "machineImageEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encryption key to protect the machine image."
+          "description": "Encrypts the machine image using a customer-supplied encryption key.\n\nAfter you encrypt a machine image using a customer-supplied key, you must provide the same key if you use the machine image later. For example, you must provide the encryption key when you create an instance from the encrypted machine image in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the machine image.\n\nIf you do not provide an encryption key when creating the machine image, then the machine image will be encrypted using an automatically generated key and you do not need to provide a key to use the machine image later."
         },
         "name": {
           "annotations": {
@@ -40620,10 +40651,10 @@
         },
         "sourceInstanceProperties": {
           "$ref": "SourceInstanceProperties",
-          "description": "Properties of source instance."
+          "description": "[Output Only] Properties of source instance."
         },
         "status": {
-          "description": "[Output Only] The status of disk creation.",
+          "description": "[Output Only] The status of the machine image. One of the following values: INVALID, CREATING, READY, DELETING, and UPLOADING.",
           "enum": [
             "CREATING",
             "DELETING",
@@ -40641,7 +40672,7 @@
           "type": "string"
         },
         "storageLocations": {
-          "description": "GCS bucket storage location of the snapshot (regional or multi-regional).",
+          "description": "GCS bucket storage location of the machine image (regional or multi-regional).",
           "items": {
             "type": "string"
           },
@@ -41627,6 +41658,11 @@
           ],
           "type": "string"
         },
+        "mtu": {
+          "description": "Maximum Transmission Unit in bytes. The minimum value for this field is 1460 and the maximum value is 1600 bytes.",
+          "format": "int32",
+          "type": "integer"
+        },
         "multicastMode": {
           "description": "The multicast mode for this network. If set to ZONAL, multicast is allowed within a zone. If set to DISABLED, multicast is disabled for this network. The default is DISABLED.",
           "enum": [
@@ -42533,6 +42569,11 @@
           "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.",
           "type": "string"
         },
+        "peerMtu": {
+          "description": "Maximum Transmission Unit in bytes.",
+          "format": "int32",
+          "type": "integer"
+        },
         "state": {
           "description": "[Output Only] State for the peering.",
           "enum": [
@@ -45164,10 +45205,12 @@
           "description": "These stateful disks will never be deleted during autohealing, update, instance recreate operations. This flag is used to configure if the disk should be deleted after it is no longer used by the group, e.g. when the given instance or the whole MIG is deleted. Note: disks attached in READ_ONLY mode cannot be auto-deleted.",
           "enum": [
             "NEVER",
+            "ON_PERMANENT_INSTANCE_DELETION",
             "WHEN_NOT_IN_USE"
           ],
           "enumDescriptions": [
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -46952,6 +46995,7 @@
       "id": "ReservationAffinity",
       "properties": {
         "consumeReservationType": {
+          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See  Consuming reserved instances for examples.",
           "enum": [
             "ANY_RESERVATION",
             "NO_RESERVATION",
@@ -48321,7 +48365,7 @@
           "description": "BGP information specific to this router."
         },
         "bgpPeers": {
-          "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
+          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
           "items": {
             "$ref": "RouterBgpPeer"
           },
@@ -48341,7 +48385,7 @@
           "type": "string"
         },
         "interfaces": {
-          "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
+          "description": "Router interfaces. Each interface requires either one linked resource, (for example, linkedVpnTunnel), or IP address and IP address range (for example, ipRange), or both.",
           "items": {
             "$ref": "RouterInterface"
           },
@@ -48363,7 +48407,7 @@
           "type": "string"
         },
         "nats": {
-          "description": "A list of Nat services created in this router.",
+          "description": "A list of NAT services created in this router.",
           "items": {
             "$ref": "RouterNat"
           },
@@ -48525,7 +48569,7 @@
       "id": "RouterBgp",
       "properties": {
         "advertiseMode": {
-          "description": "User-specified flag to indicate which mode to use for advertisement.",
+          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
           "enum": [
             "CUSTOM",
             "DEFAULT"
@@ -48589,7 +48633,7 @@
           "type": "string"
         },
         "advertisedGroups": {
-          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+          "description": "User-specified list of prefix groups to advertise in custom mode, which can take one of the following options: \n- ALL_SUBNETS: Advertises all available subnets, including peer VPC subnets. \n- ALL_VPC_SUBNETS: Advertises the router's own VPC subnets. \n- ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC network. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
           "items": {
             "enum": [
               "ALL_PEER_VPC_SUBNETS",
@@ -48606,14 +48650,14 @@
           "type": "array"
         },
         "advertisedIpRanges": {
-          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
           "items": {
             "$ref": "RouterAdvertisedIpRange"
           },
           "type": "array"
         },
         "advertisedRoutePriority": {
-          "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
+          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win.",
           "format": "uint32",
           "type": "integer"
         },
@@ -48642,7 +48686,7 @@
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this BGP peer. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this BGP peer. \n- MANAGED_BY_USER is the default value and can be managed by you or other users \n- MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -48659,12 +48703,12 @@
           "type": "string"
         },
         "peerAsn": {
-          "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
+          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value.",
           "format": "uint32",
           "type": "integer"
         },
         "peerIpAddress": {
-          "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported.",
+          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported.",
           "type": "string"
         }
       },
@@ -48714,6 +48758,20 @@
           ],
           "type": "string"
         },
+        "sessionInitializationMode": {
+          "description": "The BFD session initialization mode for this BGP peer. If set to ACTIVE, the Cloud Router will initiate the BFD session for this BGP peer. If set to PASSIVE, the Cloud Router will wait for the peer router to initiate the BFD session for this BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The default is PASSIVE.",
+          "enum": [
+            "ACTIVE",
+            "DISABLED",
+            "PASSIVE"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
         "slowTimerInterval": {
           "description": "The minimum interval, in milliseconds, between BFD control packets transmitted to and received from the peer router when BFD echo mode is enabled on both routers. The actual transmit and receive intervals are negotiated between the two routers and are equal to the greater of this value and the corresponding interval on the other router. If set, this value must be between 1000 and 30000. The default is 5000.",
           "format": "uint32",
@@ -48726,19 +48784,19 @@
       "id": "RouterInterface",
       "properties": {
         "ipRange": {
-          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
+          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
           "type": "string"
         },
         "linkedInterconnectAttachment": {
-          "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be either be a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "linkedVpnTunnel": {
-          "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be either a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this interface. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this interface. \n- MANAGED_BY_USER is the default value and can be managed directly by users. \n- MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -48890,7 +48948,7 @@
           "description": "Configure logging on this NAT."
         },
         "minPortsPerVm": {
-          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This gets rounded up to the nearest power of 2. Eg. if the value of this field is 50, at least 64 ports will be allocated to a VM.",
+          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM.",
           "format": "int32",
           "type": "integer"
         },
@@ -48900,7 +48958,7 @@
           "type": "string"
         },
         "natIpAllocateOption": {
-          "description": "Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should be empty.",
+          "description": "Specify the NatIpAllocateOption, which can take one of the following values: \n- MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. \n- AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty.",
           "enum": [
             "AUTO_ONLY",
             "MANUAL_ONLY"
@@ -48912,14 +48970,14 @@
           "type": "string"
         },
         "natIps": {
-          "description": "A list of URLs of the IP resources used for this Nat service. These IPs must be valid static external IP addresses assigned to the project. max_length is subject to change post alpha.",
+          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "sourceSubnetworkIpRangesToNat": {
-          "description": "Specify the Nat option. If this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
+          "description": "Specify the Nat option, which can take one of the following values: \n- ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. \n- ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. \n- LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
           "enum": [
             "ALL_SUBNETWORKS_ALL_IP_RANGES",
             "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
@@ -48987,7 +49045,7 @@
       "id": "RouterNatSubnetworkToNat",
       "properties": {
         "name": {
-          "description": "URL for the subnetwork resource to use NAT.",
+          "description": "URL for the subnetwork resource that will use NAT.",
           "type": "string"
         },
         "secondaryIpRangeNames": {
@@ -48998,7 +49056,7 @@
           "type": "array"
         },
         "sourceIpRangesToNat": {
-          "description": "Specify the options for NAT ranges in the Subnetwork. All usages of single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
+          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
           "items": {
             "enum": [
               "ALL_IP_RANGES",
@@ -49415,15 +49473,15 @@
           "type": "boolean"
         },
         "deviceName": {
-          "description": "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.\n\nIf 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.",
+          "description": "Specifies the name of the disk attached to the source instance.",
           "type": "string"
         },
         "diskEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf 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.\n\nIf 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.\n\nIf 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.\n\nMachine Images do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
+          "description": "The encryption key for the disk."
         },
         "diskSizeGb": {
-          "description": "The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.",
+          "description": "The size of the disk in base-2 GB.",
           "format": "int64",
           "type": "string"
         },
@@ -49435,16 +49493,12 @@
           "type": "array"
         },
         "index": {
-          "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
+          "description": "Specifies zero-based index of the disk that is attached to the source instance.",
           "format": "int32",
           "type": "integer"
         },
-        "initializeParams": {
-          "$ref": "AttachedDiskInitializeParams",
-          "description": "[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.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
-        },
         "interface": {
-          "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.",
+          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME.",
           "enum": [
             "NVDIMM",
             "NVME",
@@ -49470,7 +49524,7 @@
           "type": "array"
         },
         "mode": {
-          "description": "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.",
+          "description": "The mode in which this disk is attached to the source instance, either READ_WRITE or READ_ONLY.",
           "enum": [
             "READ_ONLY",
             "READ_WRITE"
@@ -49481,24 +49535,12 @@
           ],
           "type": "string"
         },
-        "savedState": {
-          "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED if the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
-          "enum": [
-            "DISK_SAVED_STATE_UNSPECIFIED",
-            "PRESERVED"
-          ],
-          "enumDescriptions": [
-            "",
-            ""
-          ],
-          "type": "string"
-        },
         "source": {
-          "description": "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 except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for sourceMachineImage, specify the disk name, not the URL for the disk.",
+          "description": "Specifies a URL of the disk attached to the source instance.",
           "type": "string"
         },
         "storageBytes": {
-          "description": "[Output Only] A size of the storage used by the disk's snapshot.",
+          "description": "[Output Only] A size of the storage used by the disk's snapshot by this machine image.",
           "format": "int64",
           "type": "string"
         },
@@ -49515,7 +49557,7 @@
           "type": "string"
         },
         "type": {
-          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
+          "description": "Specifies the type of the attached disk, either SCRATCH or PERSISTENT.",
           "enum": [
             "PERSISTENT",
             "SCRATCH"
@@ -50408,7 +50450,7 @@
         },
         "snapshotEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
+          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the snapshot.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
         },
         "sourceDisk": {
           "description": "[Output Only] The source disk used to create this snapshot.",
@@ -50602,7 +50644,7 @@
           "type": "boolean"
         },
         "deletionProtection": {
-          "description": "Whether the instance created from the machine image should be protected against deletion.",
+          "description": "Whether the instance created from this machine image should be protected against deletion.",
           "type": "boolean"
         },
         "description": {
@@ -50617,7 +50659,7 @@
           "type": "array"
         },
         "guestAccelerators": {
-          "description": "A list of guest accelerator cards' type and count to use for instances created from the machine image.",
+          "description": "A list of guest accelerator cards' type and count to use for instances created from this machine image.",
           "items": {
             "$ref": "AcceleratorConfig"
           },
@@ -50631,11 +50673,6 @@
           "type": "object"
         },
         "machineType": {
-          "annotations": {
-            "required": [
-              "compute.machineImages.insert"
-            ]
-          },
           "description": "The machine type to use for instances that are created from this machine image.",
           "type": "string"
         },
@@ -50644,7 +50681,7 @@
           "description": "The metadata key/value pairs to assign to instances that are created from this machine image. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
         },
         "minCpuPlatform": {
-          "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform.",
+          "description": "Minimum cpu/platform to be used by instances created from this machine image. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform.",
           "type": "string"
         },
         "networkInterfaces": {
@@ -51512,10 +51549,12 @@
           "description": "These stateful disks will never be deleted during autohealing, update or VM instance recreate operations. This flag is used to configure if the disk should be deleted after it is no longer used by the group, e.g. when the given instance or the whole group is deleted. Note: disks attached in READ_ONLY mode cannot be auto-deleted.",
           "enum": [
             "NEVER",
+            "ON_PERMANENT_INSTANCE_DELETION",
             "WHEN_NOT_IN_USE"
           ],
           "enumDescriptions": [
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -51528,7 +51567,7 @@
       "id": "Subnetwork",
       "properties": {
         "aggregationInterval": {
-          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Toggles the aggregation interval for collecting flow logs. Increasing the interval time will reduce the amount of generated flow logs for long lasting connections. Default is an interval of 5 seconds per connection.",
+          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Sets the aggregation interval for collecting flow logs. Increasing the interval time reduces the amount of generated flow logs for long-lasting connections. Default is an interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC, INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN, INTERVAL_15_MIN.",
           "enum": [
             "INTERVAL_10_MIN",
             "INTERVAL_15_MIN",
@@ -51573,7 +51612,7 @@
           "type": "string"
         },
         "flowSampling": {
-          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 which means half of all collected logs are reported.",
+          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5, which means half of all collected logs are reported.",
           "format": "float",
           "type": "number"
         },
@@ -51601,7 +51640,7 @@
         },
         "logConfig": {
           "$ref": "SubnetworkLogConfig",
-          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
+          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Stackdriver."
         },
         "metadata": {
           "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. Configures whether metadata fields should be added to the reported VPC flow logs. Default is INCLUDE_ALL_METADATA.",
@@ -51967,7 +52006,7 @@
           "type": "boolean"
         },
         "flowSampling": {
-          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 which means half of all collected logs are reported.",
+          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5, which means half of all collected logs are reported.",
           "format": "float",
           "type": "number"
         },
diff --git a/compute/v0.alpha/compute-gen.go b/compute/v0.alpha/compute-gen.go
index 8c336ed..187a2f0 100644
--- a/compute/v0.alpha/compute-gen.go
+++ b/compute/v0.alpha/compute-gen.go
@@ -4553,7 +4553,7 @@
 	//   "INVALID_LB_POLICY"
 	//   "LEAST_REQUEST"
 	//   "MAGLEV"
-	//   "ORINGINAL_DESTINATION"
+	//   "ORIGINAL_DESTINATION"
 	//   "RANDOM"
 	//   "RING_HASH"
 	//   "ROUND_ROBIN"
@@ -6859,8 +6859,8 @@
 	//
 	// After you encrypt a disk with a customer-supplied key, you must
 	// provide the same key if you use the disk later (e.g. to create a disk
-	// snapshot or an image, or to attach the disk to a virtual
-	// machine).
+	// snapshot, to create a disk image, to create a machine image, or to
+	// attach the disk to a virtual machine).
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
 	// of the disk.
@@ -7068,11 +7068,11 @@
 
 	// Type: URL of the disk type resource describing which disk type to use
 	// to create the disk. Provide this when creating the disk. For example:
-	// project/zones/zone/diskTypes/pd-standard or pd-ssd
+	// projects/project/zones/zone/diskTypes/pd-standard or pd-ssd
 	Type string `json:"type,omitempty"`
 
 	// Users: [Output Only] Links to the users of the disk (attached
-	// instances) in form: project/zones/zone/instances/instance
+	// instances) in form: projects/project/zones/zone/instances/instance
 	Users []string `json:"users,omitempty"`
 
 	// Zone: [Output Only] URL of the zone where the disk resides. You must
@@ -12627,6 +12627,17 @@
 	// Only one of routeAction or urlRedirect must be set.
 	RouteAction *HttpRouteAction `json:"routeAction,omitempty"`
 
+	// Service: The full or partial URL of the backend service resource to
+	// which traffic is directed if this rule is matched. If routeAction is
+	// additionally specified, advanced routing actions like URL Rewrites,
+	// etc. take effect prior to sending the request to the backend.
+	// However, if service is specified, routeAction cannot contain any
+	// weightedBackendService s. Conversely, if routeAction specifies any
+	// weightedBackendServices, service must not be specified.
+	// Only one of urlRedirect, service or
+	// routeAction.weightedBackendService must be set.
+	Service string `json:"service,omitempty"`
+
 	// UrlRedirect: When this rule is matched, the request is redirected to
 	// a URL specified by urlRedirect.
 	// If urlRedirect is specified, service or routeAction must not be set.
@@ -13212,8 +13223,9 @@
 	//   "TAR"
 	ContainerType string `json:"containerType,omitempty"`
 
-	// Sha1Checksum: An optional SHA1 checksum of the disk image before
-	// unpackaging provided by the client when the disk image is created.
+	// Sha1Checksum: [Deprecated] This field is deprecated. An optional SHA1
+	// checksum of the disk image before unpackaging provided by the client
+	// when the disk image is created.
 	Sha1Checksum string `json:"sha1Checksum,omitempty"`
 
 	// Source: The full Google Cloud Storage URL where the disk image is
@@ -13570,8 +13582,8 @@
 	// instances. Read-only in the api.
 	PreservedStateSizeGb int64 `json:"preservedStateSizeGb,omitempty,string"`
 
-	// ReservationAffinity: The configuration of desired allocations which
-	// this Instance could consume capacity from.
+	// ReservationAffinity: The configuration of desired reservations from
+	// which this Instance can consume capacity from.
 	ReservationAffinity *ReservationAffinity `json:"reservationAffinity,omitempty"`
 
 	// ResourcePolicies: Resource policies applied to this instance.
@@ -14911,6 +14923,10 @@
 	// group; and the managed instance group itself is not being modified.
 	IsStable bool `json:"isStable,omitempty"`
 
+	// Stateful: [Output Only] Stateful status of the given Instance Group
+	// Manager.
+	Stateful *InstanceGroupManagerStatusStateful `json:"stateful,omitempty"`
+
 	// VersionTarget: [Output Only] A status of consistency of Instances'
 	// versions with their target version specified by version field on
 	// Instance Group Manager.
@@ -14939,6 +14955,37 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type InstanceGroupManagerStatusStateful struct {
+	// IsStateful: [Output Only] A bit indicating whether the managed
+	// instance group is stateful, i.e. has any disks in Stateful Policy or
+	// at least one per-instance config. This is determined based on the
+	// user intent, the group may be reported as not stateful even when
+	// there is still some preserved state on managed instances.
+	IsStateful bool `json:"isStateful,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "IsStateful") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "IsStateful") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *InstanceGroupManagerStatusStateful) MarshalJSON() ([]byte, error) {
+	type NoMethod InstanceGroupManagerStatusStateful
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type InstanceGroupManagerStatusVersionTarget struct {
 	// IsReached: [Output Only] A bit indicating whether version target has
 	// been reached in this managed instance group, i.e. all instances are
@@ -17617,8 +17664,13 @@
 	// InterconnectAttachments configured to use this Interconnect.
 	InterconnectAttachments []string `json:"interconnectAttachments,omitempty"`
 
-	// InterconnectType: Type of interconnect. Note that "IT_PRIVATE" has
-	// been deprecated in favor of "DEDICATED"
+	// InterconnectType: Type of interconnect, which can take one of the
+	// following values:
+	// - PARTNER: A partner-managed interconnection shared between customers
+	// though a partner.
+	// - DEDICATED: A dedicated physical interconnection with the customer.
+	// Note that a value IT_PRIVATE has been deprecated in favor of
+	// DEDICATED.
 	//
 	// Possible values:
 	//   "DEDICATED"
@@ -17647,8 +17699,12 @@
 	// comply with RFC1035. Label values may be empty.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// LinkType: Type of link requested. This field indicates speed of each
-	// of the links in the bundle, not the entire bundle.
+	// LinkType: Type of link requested, which can take one of the following
+	// values:
+	// - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics
+	// - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note
+	// that this field indicates the speed of each of the links in the
+	// bundle, not the speed of the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_100G_LR"
@@ -17675,8 +17731,16 @@
 	// Notifications.
 	NocContactEmail string `json:"nocContactEmail,omitempty"`
 
-	// OperationalStatus: [Output Only] The current status of whether or not
-	// this Interconnect is functional.
+	// OperationalStatus: [Output Only] The current status of this
+	// Interconnect's functionality, which can take one of the following
+	// values:
+	// - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to
+	// use. Attachments may be provisioned on this Interconnect.
+	// - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -17704,8 +17768,15 @@
 	// with the resource id.
 	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
 
-	// State: [Output Only] The current state of whether or not this
-	// Interconnect is functional.
+	// State: [Output Only] The current state of Interconnect functionality,
+	// which can take one of the following values:
+	// - ACTIVE: The Interconnect is valid, turned up and ready to use.
+	// Attachments may be provisioned on this Interconnect.
+	// - UNPROVISIONED: The Interconnect has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - UNDER_MAINTENANCE: The Interconnect is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -17748,20 +17819,34 @@
 	// Not present for PARTNER_PROVIDER.
 	AdminEnabled bool `json:"adminEnabled,omitempty"`
 
-	// Bandwidth: Provisioned bandwidth capacity for the
-	// interconnectAttachment. Can be set by the partner to update the
-	// customer's provisioned bandwidth. Output only for PARTNER type,
-	// mutable for PARTNER_PROVIDER and DEDICATED.
+	// Bandwidth: Provisioned bandwidth capacity for the interconnect
+	// attachment. For attachments of type DEDICATED, the user can set the
+	// bandwidth. For attachments of type PARTNER, the Google Partner that
+	// is operating the interconnect must set the bandwidth. Output only for
+	// PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can
+	// take one of the following values:
+	// - BPS_50M: 50 Mbit/s
+	// - BPS_100M: 100 Mbit/s
+	// - BPS_200M: 200 Mbit/s
+	// - BPS_300M: 300 Mbit/s
+	// - BPS_400M: 400 Mbit/s
+	// - BPS_500M: 500 Mbit/s
+	// - BPS_1G: 1 Gbit/s
+	// - BPS_2G: 2 Gbit/s
+	// - BPS_5G: 5 Gbit/s
+	// - BPS_10G: 10 Gbit/s
 	//
 	// Possible values:
 	//   "BPS_100M"
 	//   "BPS_10G"
 	//   "BPS_1G"
 	//   "BPS_200M"
+	//   "BPS_20G"
 	//   "BPS_2G"
 	//   "BPS_300M"
 	//   "BPS_400M"
 	//   "BPS_500M"
+	//   "BPS_50G"
 	//   "BPS_50M"
 	//   "BPS_5G"
 	Bandwidth string `json:"bandwidth,omitempty"`
@@ -17794,12 +17879,16 @@
 	Description string `json:"description,omitempty"`
 
 	// EdgeAvailabilityDomain: Desired availability domain for the
-	// attachment. Only available for type PARTNER, at creation time. For
-	// improved reliability, customers should configure a pair of
-	// attachments with one per availability domain. The selected
-	// availability domain will be provided to the Partner via the pairing
-	// key so that the provisioned circuit will lie in the specified domain.
-	// If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
+	// attachment. Only available for type PARTNER, at creation time, and
+	// can take one of the following values:
+	// - AVAILABILITY_DOMAIN_ANY
+	// - AVAILABILITY_DOMAIN_1
+	// - AVAILABILITY_DOMAIN_2 For improved reliability, customers should
+	// configure a pair of attachments, one per availability domain. The
+	// selected availability domain will be provided to the Partner via the
+	// pairing key, so that the provisioned circuit will lie in the
+	// specified domain. If not specified, the value will default to
+	// AVAILABILITY_DOMAIN_ANY.
 	//
 	// Possible values:
 	//   "AVAILABILITY_DOMAIN_1"
@@ -17851,7 +17940,12 @@
 	Name string `json:"name,omitempty"`
 
 	// OperationalStatus: [Output Only] The current status of whether or not
-	// this interconnect attachment is functional.
+	// this interconnect attachment is functional, which can take one of the
+	// following values:
+	// - OS_ACTIVE: The attachment has been turned up and is ready to use.
+	//
+	// - OS_UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -17864,10 +17958,10 @@
 	// selected partner. Of the form "XXXXX/region/domain"
 	PairingKey string `json:"pairingKey,omitempty"`
 
-	// PartnerAsn: Optional BGP ASN for the router that should be supplied
-	// by a layer 3 Partner if they configured BGP on behalf of the
-	// customer. Output only for PARTNER type, input only for
-	// PARTNER_PROVIDER, not available for DEDICATED.
+	// PartnerAsn: Optional BGP ASN for the router supplied by a Layer 3
+	// Partner if they configured BGP on behalf of the customer. Output only
+	// for PARTNER type, input only for PARTNER_PROVIDER, not available for
+	// DEDICATED.
 	PartnerAsn int64 `json:"partnerAsn,omitempty,string"`
 
 	// PartnerMetadata: Informational metadata about Partner attachments
@@ -17900,7 +17994,26 @@
 	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
 
 	// State: [Output Only] The current state of this attachment's
-	// functionality.
+	// functionality. Enum values ACTIVE and UNPROVISIONED are shared by
+	// DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect
+	// attachments, while enum values PENDING_PARTNER,
+	// PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only
+	// PARTNER and PARTNER_PROVIDER interconnect attachments. This state can
+	// take one of the following values:
+	// - ACTIVE: The attachment has been turned up and is ready to use.
+	// - UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
+	// - PENDING_PARTNER: A newly-created PARTNER attachment that has not
+	// yet been configured on the Partner side.
+	// - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of
+	// provisioning after a PARTNER_PROVIDER attachment was created that
+	// references it.
+	// - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is
+	// waiting for a customer to activate it.
+	// - DEFUNCT: The attachment was deleted externally and is no longer
+	// functional. This could be because the associated Interconnect was
+	// removed, or because the other side of a Partner attachment was
+	// deleted.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -17912,6 +18025,14 @@
 	//   "UNPROVISIONED"
 	State string `json:"state,omitempty"`
 
+	// Type: The type of interconnect attachment this is, which can take one
+	// of the following values:
+	// - DEDICATED: an attachment to a Dedicated Interconnect.
+	// - PARTNER: an attachment to a Partner Interconnect, created by the
+	// customer.
+	// - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created
+	// by the partner.
+	//
 	// Possible values:
 	//   "DEDICATED"
 	//   "PARTNER"
@@ -18280,7 +18401,7 @@
 	PartnerName string `json:"partnerName,omitempty"`
 
 	// PortalUrl: URL of the Partner?s portal for this Attachment. Partners
-	// may customise this to be a deep-link to the specific resource on the
+	// may customise this to be a deep link to the specific resource on the
 	// Partner portal. This value may be validated to match approved Partner
 	// values.
 	PortalUrl string `json:"portalUrl,omitempty"`
@@ -18596,6 +18717,12 @@
 	// LACP exchange.
 	NeighborSystemId string `json:"neighborSystemId,omitempty"`
 
+	// State: The state of a LACP link, which can take one of the following
+	// values:
+	// - ACTIVE: The link is configured and active within the bundle.
+	// - DETACHED: The link is not configured within the bundle. This means
+	// that the rest of the object should be empty.
+	//
 	// Possible values:
 	//   "ACTIVE"
 	//   "DETACHED"
@@ -18914,7 +19041,13 @@
 	// "Amsterdam, Netherlands".
 	City string `json:"city,omitempty"`
 
-	// Continent: [Output Only] Continent for this location.
+	// Continent: [Output Only] Continent for this location, which can take
+	// one of the following values:
+	// - AFRICA
+	// - ASIA_PAC
+	// - EUROPE
+	// - NORTH_AMERICA
+	// - SOUTH_AMERICA
 	//
 	// Possible values:
 	//   "AFRICA"
@@ -18971,10 +19104,12 @@
 	// with the resource id.
 	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
 
-	// Status: [Output Only] The status of this InterconnectLocation. If the
-	// status is AVAILABLE, new Interconnects may be provisioned in this
-	// InterconnectLocation. Otherwise, no new Interconnects may be
-	// provisioned.
+	// Status: [Output Only] The status of this InterconnectLocation, which
+	// can take one of the following values:
+	// - CLOSED: The InterconnectLocation is closed and is unavailable for
+	// provisioning new Interconnects.
+	// - AVAILABLE: The InterconnectLocation is available for provisioning
+	// new Interconnects.
 	//
 	// Possible values:
 	//   "AVAILABLE"
@@ -19222,9 +19357,14 @@
 	// epoch).
 	EndTime int64 `json:"endTime,omitempty,string"`
 
-	// IssueType: Form this outage is expected to take. Note that the "IT_"
-	// versions of this enum have been deprecated in favor of the unprefixed
-	// values.
+	// IssueType: Form this outage is expected to take, which can take one
+	// of the following values:
+	// - OUTAGE: The Interconnect may be completely out of service for some
+	// or all of the specified window.
+	// - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a
+	// whole should remain up, but with reduced bandwidth. Note that the
+	// versions of this enum prefixed with "IT_" have been deprecated in
+	// favor of the unprefixed values.
 	//
 	// Possible values:
 	//   "IT_OUTAGE"
@@ -19236,8 +19376,10 @@
 	// Name: Unique identifier for this outage notification.
 	Name string `json:"name,omitempty"`
 
-	// Source: The party that generated this notification. Note that
-	// "NSRC_GOOGLE" has been deprecated in favor of "GOOGLE"
+	// Source: The party that generated this notification, which can take
+	// the following value:
+	// - GOOGLE: this notification as generated by Google. Note that the
+	// value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.
 	//
 	// Possible values:
 	//   "GOOGLE"
@@ -19248,8 +19390,15 @@
 	// Unix epoch).
 	StartTime int64 `json:"startTime,omitempty,string"`
 
-	// State: State of this notification. Note that the "NS_" versions of
-	// this enum have been deprecated in favor of the unprefixed values.
+	// State: State of this notification, which can take one of the
+	// following values:
+	// - ACTIVE: This outage notification is active. The event could be in
+	// the past, present, or future. See start_time and end_time for
+	// scheduling.
+	// - CANCELLED: The outage associated with this notification was
+	// cancelled before the outage was due to start. Note that the versions
+	// of this enum prefixed with "NS_" have been deprecated in favor of the
+	// unprefixed values.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -20332,12 +20481,6 @@
 	// the caller. This is relevant only in the LocalIAM implementation, for
 	// now.
 	//
-	// NOTE: Logging to Gin in a fail-closed manner is currently unsupported
-	// while work is being done to satisfy the requirements of go/345.
-	// Currently, setting LOG_FAIL_CLOSED mode will have no effect, but
-	// still exists because there is active work being done to support it
-	// (b/115874152).
-	//
 	// Possible values:
 	//   "LOG_FAIL_CLOSED"
 	//   "LOG_MODE_UNSPECIFIED"
@@ -20384,8 +20527,22 @@
 	// compute#machineImage for machine image.
 	Kind string `json:"kind,omitempty"`
 
-	// MachineImageEncryptionKey: Encryption key to protect the machine
-	// image.
+	// MachineImageEncryptionKey: Encrypts the machine image using a
+	// customer-supplied encryption key.
+	//
+	// After you encrypt a machine image using a customer-supplied key, you
+	// must provide the same key if you use the machine image later. For
+	// example, you must provide the encryption key when you create an
+	// instance from the encrypted machine image in a future
+	// request.
+	//
+	// Customer-supplied encryption keys do not protect access to metadata
+	// of the machine image.
+	//
+	// If you do not provide an encryption key when creating the machine
+	// image, then the machine image will be encrypted using an
+	// automatically generated key and you do not need to provide a key to
+	// use the machine image later.
 	MachineImageEncryptionKey *CustomerEncryptionKey `json:"machineImageEncryptionKey,omitempty"`
 
 	// Name: Name of the resource; provided by the client when the resource
@@ -20413,10 +20570,12 @@
 	// - projects/project/zones/zone/instances/instance
 	SourceInstance string `json:"sourceInstance,omitempty"`
 
-	// SourceInstanceProperties: Properties of source instance.
+	// SourceInstanceProperties: [Output Only] Properties of source
+	// instance.
 	SourceInstanceProperties *SourceInstanceProperties `json:"sourceInstanceProperties,omitempty"`
 
-	// Status: [Output Only] The status of disk creation.
+	// Status: [Output Only] The status of the machine image. One of the
+	// following values: INVALID, CREATING, READY, DELETING, and UPLOADING.
 	//
 	// Possible values:
 	//   "CREATING"
@@ -20426,7 +20585,7 @@
 	//   "UPLOADING"
 	Status string `json:"status,omitempty"`
 
-	// StorageLocations: GCS bucket storage location of the snapshot
+	// StorageLocations: GCS bucket storage location of the machine image
 	// (regional or multi-regional).
 	StorageLocations []string `json:"storageLocations,omitempty"`
 
@@ -21889,6 +22048,10 @@
 	//   "UNENCRYPTED"
 	LoadBalancerVmEncryption string `json:"loadBalancerVmEncryption,omitempty"`
 
+	// Mtu: Maximum Transmission Unit in bytes. The minimum value for this
+	// field is 1460 and the maximum value is 1600 bytes.
+	Mtu int64 `json:"mtu,omitempty"`
+
 	// MulticastMode: The multicast mode for this network. If set to ZONAL,
 	// multicast is allowed within a zone. If set to DISABLED, multicast is
 	// disabled for this network. The default is DISABLED.
@@ -23218,6 +23381,9 @@
 	// network is in the same project as the current network.
 	Network string `json:"network,omitempty"`
 
+	// PeerMtu: Maximum Transmission Unit in bytes.
+	PeerMtu int64 `json:"peerMtu,omitempty"`
+
 	// State: [Output Only] State for the peering.
 	//
 	// Possible values:
@@ -27120,6 +27286,7 @@
 	//
 	// Possible values:
 	//   "NEVER"
+	//   "ON_PERMANENT_INSTANCE_DELETION"
 	//   "WHEN_NOT_IN_USE"
 	AutoDelete string `json:"autoDelete,omitempty"`
 
@@ -29695,6 +29862,11 @@
 // ReservationAffinity: AllocationAffinity is the configuration of
 // desired allocation which this instance could take capacity from.
 type ReservationAffinity struct {
+	// ConsumeReservationType: Specifies the type of reservation from which
+	// this instance can consume resources: ANY_RESERVATION (default),
+	// SPECIFIC_RESERVATION, or NO_RESERVATION. See  Consuming reserved
+	// instances for examples.
+	//
 	// Possible values:
 	//   "ANY_RESERVATION"
 	//   "NO_RESERVATION"
@@ -31635,9 +31807,10 @@
 	// Bgp: BGP information specific to this router.
 	Bgp *RouterBgp `json:"bgp,omitempty"`
 
-	// BgpPeers: BGP information that needs to be configured into the
-	// routing stack to establish the BGP peering. It must specify peer ASN
-	// and either interface name, IP, or peer IP. Please refer to RFC4273.
+	// BgpPeers: BGP information that must be configured into the routing
+	// stack to establish BGP peering. This information must specify the
+	// peer ASN and either the interface name, IP address, or peer IP
+	// address. Please refer to RFC4273.
 	BgpPeers []*RouterBgpPeer `json:"bgpPeers,omitempty"`
 
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
@@ -31653,8 +31826,8 @@
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Interfaces: Router interfaces. Each interface requires either one
-	// linked resource (e.g. linkedVpnTunnel), or IP address and IP address
-	// range (e.g. ipRange), or both.
+	// linked resource, (for example, linkedVpnTunnel), or IP address and IP
+	// address range (for example, ipRange), or both.
 	Interfaces []*RouterInterface `json:"interfaces,omitempty"`
 
 	// Kind: [Output Only] Type of resource. Always compute#router for
@@ -31670,7 +31843,7 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Nats: A list of Nat services created in this router.
+	// Nats: A list of NAT services created in this router.
 	Nats []*RouterNat `json:"nats,omitempty"`
 
 	// Network: URI of the network to which this router belongs.
@@ -31905,7 +32078,7 @@
 
 type RouterBgp struct {
 	// AdvertiseMode: User-specified flag to indicate which mode to use for
-	// advertisement.
+	// advertisement. The options are DEFAULT or CUSTOM.
 	//
 	// Possible values:
 	//   "CUSTOM"
@@ -31981,11 +32154,15 @@
 	AdvertiseMode string `json:"advertiseMode,omitempty"`
 
 	// AdvertisedGroups: User-specified list of prefix groups to advertise
-	// in custom mode. This field can only be populated if advertise_mode is
-	// CUSTOM and overrides the list defined for the router (in Bgp
-	// message). These groups will be advertised in addition to any
-	// specified prefixes. Leave this field blank to advertise no custom
-	// groups.
+	// in custom mode, which can take one of the following options:
+	// - ALL_SUBNETS: Advertises all available subnets, including peer VPC
+	// subnets.
+	// - ALL_VPC_SUBNETS: Advertises the router's own VPC subnets.
+	// - ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC
+	// network. Note that this field can only be populated if advertise_mode
+	// is CUSTOM and overrides the list defined for the router (in the "bgp"
+	// message). These groups are advertised in addition to any specified
+	// prefixes. Leave this field blank to advertise no custom groups.
 	//
 	// Possible values:
 	//   "ALL_PEER_VPC_SUBNETS"
@@ -31996,14 +32173,14 @@
 	// AdvertisedIpRanges: User-specified list of individual IP ranges to
 	// advertise in custom mode. This field can only be populated if
 	// advertise_mode is CUSTOM and overrides the list defined for the
-	// router (in Bgp message). These IP ranges will be advertised in
+	// router (in the "bgp" message). These IP ranges are advertised in
 	// addition to any specified groups. Leave this field blank to advertise
 	// no custom IP ranges.
 	AdvertisedIpRanges []*RouterAdvertisedIpRange `json:"advertisedIpRanges,omitempty"`
 
 	// AdvertisedRoutePriority: The priority of routes advertised to this
-	// BGP peer. In the case where there is more than one matching route of
-	// maximum length, the routes with lowest priority value win.
+	// BGP peer. Where there is more than one matching route of maximum
+	// length, the routes with the lowest priority value win.
 	AdvertisedRoutePriority int64 `json:"advertisedRoutePriority,omitempty"`
 
 	// Bfd: BFD configuration for the BGP peering.
@@ -32027,12 +32204,14 @@
 	IpAddress string `json:"ipAddress,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this BGP peer. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer
-	// that is configured and managed by Cloud Interconnect, specifically by
-	// an InterconnectAttachment of type PARTNER. Google will automatically
-	// create, update, and delete this type of BGP peer when the PARTNER
-	// InterconnectAttachment is created, updated, or deleted.
+	// manages this BGP peer.
+	// - MANAGED_BY_USER is the default value and can be managed by you or
+	// other users
+	// - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed
+	// by Cloud Interconnect, specifically by an InterconnectAttachment of
+	// type PARTNER. Google automatically creates, updates, and deletes this
+	// type of BGP peer when the PARTNER InterconnectAttachment is created,
+	// updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -32043,12 +32222,12 @@
 	// and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// PeerAsn: Peer BGP Autonomous System Number (ASN). For VPN use case,
-	// this value can be different for every tunnel.
+	// PeerAsn: Peer BGP Autonomous System Number (ASN). Each BGP interface
+	// may use a different value.
 	PeerAsn int64 `json:"peerAsn,omitempty"`
 
-	// PeerIpAddress: IP address of the BGP interface outside Google cloud.
-	// Only IPv4 is supported.
+	// PeerIpAddress: IP address of the BGP interface outside Google Cloud
+	// Platform. Only IPv4 is supported.
 	PeerIpAddress string `json:"peerIpAddress,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AdvertiseMode") to
@@ -32129,6 +32308,19 @@
 	//   "CONTROL_ONLY"
 	PacketMode string `json:"packetMode,omitempty"`
 
+	// SessionInitializationMode: The BFD session initialization mode for
+	// this BGP peer. If set to ACTIVE, the Cloud Router will initiate the
+	// BFD session for this BGP peer. If set to PASSIVE, the Cloud Router
+	// will wait for the peer router to initiate the BFD session for this
+	// BGP peer. If set to DISABLED, BFD is disabled for this BGP peer. The
+	// default is PASSIVE.
+	//
+	// Possible values:
+	//   "ACTIVE"
+	//   "DISABLED"
+	//   "PASSIVE"
+	SessionInitializationMode string `json:"sessionInitializationMode,omitempty"`
+
 	// SlowTimerInterval: The minimum interval, in milliseconds, between BFD
 	// control packets transmitted to and received from the peer router when
 	// BFD echo mode is enabled on both routers. The actual transmit and
@@ -32164,32 +32356,33 @@
 
 type RouterInterface struct {
 	// IpRange: IP address and range of the interface. The IP range must be
-	// in the RFC3927 link-local IP space. The value must be a
+	// in the RFC3927 link-local IP address space. The value must be a
 	// CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not
 	// truncate the address as it represents the IP address of the
 	// interface.
 	IpRange string `json:"ipRange,omitempty"`
 
-	// LinkedInterconnectAttachment: URI of the linked interconnect
+	// LinkedInterconnectAttachment: URI of the linked Interconnect
 	// attachment. It must be in the same region as the router. Each
-	// interface can have at most one linked resource and it could either be
-	// a VPN Tunnel or an interconnect attachment.
+	// interface can have one linked resource, which can be either be a VPN
+	// tunnel or an Interconnect attachment.
 	LinkedInterconnectAttachment string `json:"linkedInterconnectAttachment,omitempty"`
 
-	// LinkedVpnTunnel: URI of the linked VPN tunnel. It must be in the same
-	// region as the router. Each interface can have at most one linked
-	// resource and it could either be a VPN Tunnel or an interconnect
+	// LinkedVpnTunnel: URI of the linked VPN tunnel, which must be in the
+	// same region as the router. Each interface can have one linked
+	// resource, which can be either a VPN tunnel or an Interconnect
 	// attachment.
 	LinkedVpnTunnel string `json:"linkedVpnTunnel,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this interface. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is an
-	// interface that is configured and managed by Cloud Interconnect,
-	// specifically by an InterconnectAttachment of type PARTNER. Google
-	// will automatically create, update, and delete this type of interface
-	// when the PARTNER InterconnectAttachment is created, updated, or
-	// deleted.
+	// manages this interface.
+	// - MANAGED_BY_USER is the default value and can be managed directly by
+	// users.
+	// - MANAGED_BY_ATTACHMENT is an interface that is configured and
+	// managed by Cloud Interconnect, specifically, by an
+	// InterconnectAttachment of type PARTNER. Google automatically creates,
+	// updates, and deletes this type of interface when the PARTNER
+	// InterconnectAttachment is created, updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -32399,16 +32592,22 @@
 
 	// MinPortsPerVm: Minimum number of ports allocated to a VM from this
 	// NAT config. If not set, a default number of ports is allocated to a
-	// VM. This gets rounded up to the nearest power of 2. Eg. if the value
-	// of this field is 50, at least 64 ports will be allocated to a VM.
+	// VM. This is rounded up to the nearest power of 2. For example, if the
+	// value of this field is 50, at least 64 ports are allocated to a VM.
 	MinPortsPerVm int64 `json:"minPortsPerVm,omitempty"`
 
 	// Name: Unique name of this Nat service. The name must be 1-63
 	// characters long and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// NatIpAllocateOption: Specify the NatIpAllocateOption. If it is
-	// AUTO_ONLY, then nat_ip should be empty.
+	// NatIpAllocateOption: Specify the NatIpAllocateOption, which can take
+	// one of the following values:
+	// - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When
+	// there are not enough specified Nat IPs, the Nat service fails for new
+	// VMs.
+	// - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform;
+	// customers can't specify any Nat IPs. When choosing AUTO_ONLY, then
+	// nat_ip should be empty.
 	//
 	// Possible values:
 	//   "AUTO_ONLY"
@@ -32416,12 +32615,20 @@
 	NatIpAllocateOption string `json:"natIpAllocateOption,omitempty"`
 
 	// NatIps: A list of URLs of the IP resources used for this Nat service.
-	// These IPs must be valid static external IP addresses assigned to the
-	// project. max_length is subject to change post alpha.
+	// These IP addresses must be valid static external IP addresses
+	// assigned to the project.
 	NatIps []string `json:"natIps,omitempty"`
 
-	// SourceSubnetworkIpRangesToNat: Specify the Nat option. If this field
-	// contains ALL_SUBNETWORKS_ALL_IP_RANGES or
+	// SourceSubnetworkIpRangesToNat: Specify the Nat option, which can take
+	// one of the following values:
+	// - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every
+	// Subnetwork are allowed to Nat.
+	// - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges
+	// in every Subnetwork are allowed to Nat.
+	// - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat
+	// (specified in the field subnetwork below) The default is
+	// SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this
+	// field contains ALL_SUBNETWORKS_ALL_IP_RANGES or
 	// ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any
 	// other Router.Nat section in any Router for this network in this
 	// region.
@@ -32514,7 +32721,7 @@
 // RouterNatSubnetworkToNat: Defines the IP ranges that want to use NAT
 // for a subnetwork.
 type RouterNatSubnetworkToNat struct {
-	// Name: URL for the subnetwork resource to use NAT.
+	// Name: URL for the subnetwork resource that will use NAT.
 	Name string `json:"name,omitempty"`
 
 	// SecondaryIpRangeNames: A list of the secondary ranges of the
@@ -32524,7 +32731,7 @@
 	SecondaryIpRangeNames []string `json:"secondaryIpRangeNames,omitempty"`
 
 	// SourceIpRangesToNat: Specify the options for NAT ranges in the
-	// Subnetwork. All usages of single value are valid except
+	// Subnetwork. All options of a single value are valid except
 	// NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple
 	// values is: ["PRIMARY_IP_RANGE", "LIST_OF_SECONDARY_IP_RANGES"]
 	// Default: [ALL_IP_RANGES]
@@ -33064,43 +33271,14 @@
 	// use the first partition of the disk for its root filesystem.
 	Boot bool `json:"boot,omitempty"`
 
-	// DeviceName: 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.
+	// DeviceName: Specifies the name of the disk attached to the source
+	// instance.
 	DeviceName string `json:"deviceName,omitempty"`
 
-	// DiskEncryptionKey: 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.
-	//
-	// Machine Images do not store customer-supplied encryption keys, so you
-	// cannot use your own keys to encrypt disks in a managed instance
-	// group.
+	// DiskEncryptionKey: The encryption key for the disk.
 	DiskEncryptionKey *CustomerEncryptionKey `json:"diskEncryptionKey,omitempty"`
 
-	// DiskSizeGb: The size of the disk in base-2 GB. This supersedes
-	// disk_size_gb in InitializeParams.
+	// DiskSizeGb: The size of the disk in base-2 GB.
 	DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
 
 	// GuestOsFeatures: A list of features to enable on the guest operating
@@ -33108,26 +33286,12 @@
 	// operating system features to see a list of available options.
 	GuestOsFeatures []*GuestOsFeature `json:"guestOsFeatures,omitempty"`
 
-	// Index: [Output Only] A zero-based index to this disk, where 0 is
-	// reserved for the boot disk. If you have many disks attached to an
-	// instance, each disk would have a unique index number.
+	// Index: Specifies zero-based index of the disk that is attached to the
+	// source instance.
 	Index int64 `json:"index,omitempty"`
 
-	// InitializeParams: [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.
-	InitializeParams *AttachedDiskInitializeParams `json:"initializeParams,omitempty"`
-
 	// Interface: 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.
+	// disk, which is either SCSI or NVME.
 	//
 	// Possible values:
 	//   "NVDIMM"
@@ -33142,40 +33306,19 @@
 	// Licenses: [Output Only] Any valid publicly visible licenses.
 	Licenses []string `json:"licenses,omitempty"`
 
-	// Mode: 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.
+	// Mode: The mode in which this disk is attached to the source instance,
+	// either READ_WRITE or READ_ONLY.
 	//
 	// Possible values:
 	//   "READ_ONLY"
 	//   "READ_WRITE"
 	Mode string `json:"mode,omitempty"`
 
-	// SavedState: For LocalSSD disks on VM Instances in STOPPED or
-	// SUSPENDED state, this field is set to PRESERVED if the LocalSSD data
-	// has been saved to a persistent location by customer request. (see the
-	// discard_local_ssd option on Stop/Suspend). Read-only in the api.
-	//
-	// Possible values:
-	//   "DISK_SAVED_STATE_UNSPECIFIED"
-	//   "PRESERVED"
-	SavedState string `json:"savedState,omitempty"`
-
-	// Source: 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 except for
-	// local SSD.
-	//
-	// 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 sourceMachineImage, specify the disk name, not the URL
-	// for the disk.
+	// Source: Specifies a URL of the disk attached to the source instance.
 	Source string `json:"source,omitempty"`
 
 	// StorageBytes: [Output Only] A size of the storage used by the disk's
-	// snapshot.
+	// snapshot by this machine image.
 	StorageBytes int64 `json:"storageBytes,omitempty,string"`
 
 	// StorageBytesStatus: [Output Only] An indicator whether storageBytes
@@ -33189,8 +33332,8 @@
 	//   "UP_TO_DATE"
 	StorageBytesStatus string `json:"storageBytesStatus,omitempty"`
 
-	// Type: Specifies the type of the disk, either SCRATCH or PERSISTENT.
-	// If not specified, the default is PERSISTENT.
+	// Type: Specifies the type of the attached disk, either SCRATCH or
+	// PERSISTENT.
 	//
 	// Possible values:
 	//   "PERSISTENT"
@@ -34690,12 +34833,12 @@
 	// customer-supplied encryption key.
 	//
 	// After you encrypt a snapshot using a customer-supplied key, you must
-	// provide the same key if you use the image later For example, you must
-	// provide the encryption key when you create a disk from the encrypted
-	// snapshot in a future request.
+	// provide the same key if you use the snapshot later. For example, you
+	// must provide the encryption key when you create a disk from the
+	// encrypted snapshot in a future request.
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
-	// of the disk.
+	// of the snapshot.
 	//
 	// If you do not provide an encryption key when creating the snapshot,
 	// then the snapshot will be encrypted using an automatically generated
@@ -34972,7 +35115,7 @@
 	// information.
 	CanIpForward bool `json:"canIpForward,omitempty"`
 
-	// DeletionProtection: Whether the instance created from the machine
+	// DeletionProtection: Whether the instance created from this machine
 	// image should be protected against deletion.
 	DeletionProtection bool `json:"deletionProtection,omitempty"`
 
@@ -34985,7 +35128,7 @@
 	Disks []*SavedAttachedDisk `json:"disks,omitempty"`
 
 	// GuestAccelerators: A list of guest accelerator cards' type and count
-	// to use for instances created from the machine image.
+	// to use for instances created from this machine image.
 	GuestAccelerators []*AcceleratorConfig `json:"guestAccelerators,omitempty"`
 
 	// Labels: Labels to apply to instances that are created from this
@@ -35002,12 +35145,12 @@
 	// for more information.
 	Metadata *Metadata `json:"metadata,omitempty"`
 
-	// MinCpuPlatform: Minimum cpu/platform to be used by this instance. The
-	// instance may be scheduled on the specified or newer cpu/platform.
-	// Applicable values are the friendly names of CPU platforms, such as
-	// minCpuPlatform: "Intel Haswell" or minCpuPlatform: "Intel Sandy
-	// Bridge". For more information, read Specifying a Minimum CPU
-	// Platform.
+	// MinCpuPlatform: Minimum cpu/platform to be used by instances created
+	// from this machine image. The instance may be scheduled on the
+	// specified or newer cpu/platform. Applicable values are the friendly
+	// names of CPU platforms, such as minCpuPlatform: "Intel Haswell" or
+	// minCpuPlatform: "Intel Sandy Bridge". For more information, read
+	// Specifying a Minimum CPU Platform.
 	MinCpuPlatform string `json:"minCpuPlatform,omitempty"`
 
 	// NetworkInterfaces: An array of network access configurations for this
@@ -36237,6 +36380,7 @@
 	//
 	// Possible values:
 	//   "NEVER"
+	//   "ON_PERMANENT_INSTANCE_DELETION"
 	//   "WHEN_NOT_IN_USE"
 	AutoDelete string `json:"autoDelete,omitempty"`
 
@@ -36267,10 +36411,12 @@
 // ==) (== resource_for v1.subnetworks ==)
 type Subnetwork struct {
 	// AggregationInterval: Can only be specified if VPC flow logging for
-	// this subnetwork is enabled. Toggles the aggregation interval for
-	// collecting flow logs. Increasing the interval time will reduce the
-	// amount of generated flow logs for long lasting connections. Default
-	// is an interval of 5 seconds per connection.
+	// this subnetwork is enabled. Sets the aggregation interval for
+	// collecting flow logs. Increasing the interval time reduces the amount
+	// of generated flow logs for long-lasting connections. Default is an
+	// interval of 5 seconds per connection. Valid values: INTERVAL_5_SEC,
+	// INTERVAL_30_SEC, INTERVAL_1_MIN, INTERVAL_5_MIN, INTERVAL_10_MIN,
+	// INTERVAL_15_MIN.
 	//
 	// Possible values:
 	//   "INTERVAL_10_MIN"
@@ -36332,7 +36478,7 @@
 	// subnetwork is enabled. The value of the field must be in [0, 1]. Set
 	// the sampling rate of VPC flow logs within the subnetwork where 1.0
 	// means all collected logs are reported and 0.0 means no logs are
-	// reported. Default is 0.5 which means half of all collected logs are
+	// reported. Default is 0.5, which means half of all collected logs are
 	// reported.
 	FlowSampling float64 `json:"flowSampling,omitempty"`
 
@@ -36359,9 +36505,8 @@
 	// for Subnetwork resources.
 	Kind string `json:"kind,omitempty"`
 
-	// LogConfig: This field denotes the logging options for the load
-	// balancer traffic served by this backend service. If logging is
-	// enabled, logs will be exported to Stackdriver.
+	// LogConfig: This field denotes the VPC flow logging options for this
+	// subnetwork. If logging is enabled, logs are exported to Stackdriver.
 	LogConfig *SubnetworkLogConfig `json:"logConfig,omitempty"`
 
 	// Metadata: Can only be specified if VPC flow logging for this
@@ -36851,7 +36996,7 @@
 	// subnetwork is enabled. The value of the field must be in [0, 1]. Set
 	// the sampling rate of VPC flow logs within the subnetwork where 1.0
 	// means all collected logs are reported and 0.0 means no logs are
-	// reported. Default is 0.5 which means half of all collected logs are
+	// reported. Default is 0.5, which means half of all collected logs are
 	// reported.
 	FlowSampling float64 `json:"flowSampling,omitempty"`
 
@@ -53307,7 +53452,10 @@
 	return c
 }
 
-// GuestFlush sets the optional parameter "guestFlush":
+// GuestFlush sets the optional parameter "guestFlush": [Input Only]
+// Specifies to create an application consistent snapshot by informing
+// the OS to prepare for the snapshot process. Currently only supported
+// on Windows instances using the Volume Shadow Copy Service (VSS).
 func (c *DisksCreateSnapshotCall) GuestFlush(guestFlush bool) *DisksCreateSnapshotCall {
 	c.urlParams_.Set("guestFlush", fmt.Sprint(guestFlush))
 	return c
@@ -53441,6 +53589,7 @@
 	//       "type": "string"
 	//     },
 	//     "guestFlush": {
+	//       "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
@@ -87335,6 +87484,13 @@
 	return c
 }
 
+// ValidateOnly sets the optional parameter "validateOnly": If true, the
+// request will not be committed.
+func (c *InterconnectAttachmentsInsertCall) ValidateOnly(validateOnly bool) *InterconnectAttachmentsInsertCall {
+	c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly))
+	return c
+}
+
 // Fields allows partial responses to be retrieved. See
 // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
 // for more information.
@@ -87452,6 +87608,11 @@
 	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
 	//       "location": "query",
 	//       "type": "string"
+	//     },
+	//     "validateOnly": {
+	//       "description": "If true, the request will not be committed.",
+	//       "location": "query",
+	//       "type": "boolean"
 	//     }
 	//   },
 	//   "path": "{project}/regions/{region}/interconnectAttachments",
@@ -113351,7 +113512,10 @@
 	return c
 }
 
-// GuestFlush sets the optional parameter "guestFlush":
+// GuestFlush sets the optional parameter "guestFlush": [Input Only]
+// Specifies to create an application consistent snapshot by informing
+// the OS to prepare for the snapshot process. Currently only supported
+// on Windows instances using the Volume Shadow Copy Service (VSS).
 func (c *RegionDisksCreateSnapshotCall) GuestFlush(guestFlush bool) *RegionDisksCreateSnapshotCall {
 	c.urlParams_.Set("guestFlush", fmt.Sprint(guestFlush))
 	return c
@@ -113485,6 +113649,7 @@
 	//       "type": "string"
 	//     },
 	//     "guestFlush": {
+	//       "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
diff --git a/compute/v0.beta/compute-api.json b/compute/v0.beta/compute-api.json
index d8ab327..5d69c19 100644
--- a/compute/v0.beta/compute-api.json
+++ b/compute/v0.beta/compute-api.json
@@ -29,7 +29,7 @@
   "description": "Creates and runs virtual machines on Google Cloud Platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/FcIdq7K0sVtzHMLqHzM5hbg05bw\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/_AHzCpq0AAQFZQWJBiL19RSPIkQ\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -2029,6 +2029,7 @@
               "type": "string"
             },
             "guestFlush": {
+              "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
               "location": "query",
               "type": "boolean"
             },
@@ -4185,6 +4186,55 @@
     },
     "healthChecks": {
       "methods": {
+        "aggregatedList": {
+          "description": "Retrieves the list of all HealthCheck resources, regional and global, available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.healthChecks.aggregatedList",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Name of the project scoping this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/aggregated/healthChecks",
+          "response": {
+            "$ref": "HealthChecksAggregatedList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified HealthCheck resource.",
           "httpMethod": "DELETE",
@@ -14344,6 +14394,294 @@
         }
       }
     },
+    "regionHealthChecks": {
+      "methods": {
+        "delete": {
+          "description": "Deletes the specified HealthCheck resource.",
+          "httpMethod": "DELETE",
+          "id": "compute.regionHealthChecks.delete",
+          "parameterOrder": [
+            "project",
+            "region",
+            "healthCheck"
+          ],
+          "parameters": {
+            "healthCheck": {
+              "description": "Name of the HealthCheck resource to delete.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "get": {
+          "description": "Returns the specified HealthCheck resource. Gets a list of available health checks by making a list() request.",
+          "httpMethod": "GET",
+          "id": "compute.regionHealthChecks.get",
+          "parameterOrder": [
+            "project",
+            "region",
+            "healthCheck"
+          ],
+          "parameters": {
+            "healthCheck": {
+              "description": "Name of the HealthCheck resource to return.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+          "response": {
+            "$ref": "HealthCheck"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "insert": {
+          "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
+          "httpMethod": "POST",
+          "id": "compute.regionHealthChecks.insert",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks",
+          "request": {
+            "$ref": "HealthCheck"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "list": {
+          "description": "Retrieves the list of HealthCheck resources available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.regionHealthChecks.list",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks",
+          "response": {
+            "$ref": "HealthCheckList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "patch": {
+          "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+          "httpMethod": "PATCH",
+          "id": "compute.regionHealthChecks.patch",
+          "parameterOrder": [
+            "project",
+            "region",
+            "healthCheck"
+          ],
+          "parameters": {
+            "healthCheck": {
+              "description": "Name of the HealthCheck resource to patch.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+          "request": {
+            "$ref": "HealthCheck"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "update": {
+          "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
+          "httpMethod": "PUT",
+          "id": "compute.regionHealthChecks.update",
+          "parameterOrder": [
+            "project",
+            "region",
+            "healthCheck"
+          ],
+          "parameters": {
+            "healthCheck": {
+              "description": "Name of the HealthCheck resource to update.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+          "request": {
+            "$ref": "HealthCheck"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        }
+      }
+    },
     "regionInstanceGroupManagers": {
       "methods": {
         "abandonInstances": {
@@ -15506,6 +15844,1104 @@
         }
       }
     },
+    "regionSslCertificates": {
+      "methods": {
+        "delete": {
+          "description": "Deletes the specified SslCertificate resource in the region.",
+          "httpMethod": "DELETE",
+          "id": "compute.regionSslCertificates.delete",
+          "parameterOrder": [
+            "project",
+            "region",
+            "sslCertificate"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "sslCertificate": {
+              "description": "Name of the SslCertificate resource to delete.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/sslCertificates/{sslCertificate}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "get": {
+          "description": "Returns the specified SslCertificate resource in the specified region. Get a list of available SSL certificates by making a list() request.",
+          "httpMethod": "GET",
+          "id": "compute.regionSslCertificates.get",
+          "parameterOrder": [
+            "project",
+            "region",
+            "sslCertificate"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "sslCertificate": {
+              "description": "Name of the SslCertificate resource to return.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/sslCertificates/{sslCertificate}",
+          "response": {
+            "$ref": "SslCertificate"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "insert": {
+          "description": "Creates a SslCertificate resource in the specified project and region using the data included in the request",
+          "httpMethod": "POST",
+          "id": "compute.regionSslCertificates.insert",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/sslCertificates",
+          "request": {
+            "$ref": "SslCertificate"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "list": {
+          "description": "Retrieves the list of SslCertificate resources available to the specified project in the specified region.",
+          "httpMethod": "GET",
+          "id": "compute.regionSslCertificates.list",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/sslCertificates",
+          "response": {
+            "$ref": "SslCertificateList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        }
+      }
+    },
+    "regionTargetHttpProxies": {
+      "methods": {
+        "delete": {
+          "description": "Deletes the specified TargetHttpProxy resource.",
+          "httpMethod": "DELETE",
+          "id": "compute.regionTargetHttpProxies.delete",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "targetHttpProxy": {
+              "description": "Name of the TargetHttpProxy resource to delete.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "get": {
+          "description": "Returns the specified TargetHttpProxy resource in the specified region. Gets a list of available target HTTP proxies by making a list() request.",
+          "httpMethod": "GET",
+          "id": "compute.regionTargetHttpProxies.get",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "targetHttpProxy": {
+              "description": "Name of the TargetHttpProxy resource to return.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}",
+          "response": {
+            "$ref": "TargetHttpProxy"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "insert": {
+          "description": "Creates a TargetHttpProxy resource in the specified project and region using the data included in the request.",
+          "httpMethod": "POST",
+          "id": "compute.regionTargetHttpProxies.insert",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpProxies",
+          "request": {
+            "$ref": "TargetHttpProxy"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "list": {
+          "description": "Retrieves the list of TargetHttpProxy resources available to the specified project in the specified region.",
+          "httpMethod": "GET",
+          "id": "compute.regionTargetHttpProxies.list",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpProxies",
+          "response": {
+            "$ref": "TargetHttpProxyList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "setUrlMap": {
+          "description": "Changes the URL map for TargetHttpProxy.",
+          "httpMethod": "POST",
+          "id": "compute.regionTargetHttpProxies.setUrlMap",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "targetHttpProxy": {
+              "description": "Name of the TargetHttpProxy to set a URL map for.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
+          "request": {
+            "$ref": "UrlMapReference"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        }
+      }
+    },
+    "regionTargetHttpsProxies": {
+      "methods": {
+        "delete": {
+          "description": "Deletes the specified TargetHttpsProxy resource.",
+          "httpMethod": "DELETE",
+          "id": "compute.regionTargetHttpsProxies.delete",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpsProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "targetHttpsProxy": {
+              "description": "Name of the TargetHttpsProxy resource to delete.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "get": {
+          "description": "Returns the specified TargetHttpsProxy resource in the specified region. Gets a list of available target HTTP proxies by making a list() request.",
+          "httpMethod": "GET",
+          "id": "compute.regionTargetHttpsProxies.get",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpsProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "targetHttpsProxy": {
+              "description": "Name of the TargetHttpsProxy resource to return.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}",
+          "response": {
+            "$ref": "TargetHttpsProxy"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "insert": {
+          "description": "Creates a TargetHttpsProxy resource in the specified project and region using the data included in the request.",
+          "httpMethod": "POST",
+          "id": "compute.regionTargetHttpsProxies.insert",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies",
+          "request": {
+            "$ref": "TargetHttpsProxy"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "list": {
+          "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project in the specified region.",
+          "httpMethod": "GET",
+          "id": "compute.regionTargetHttpsProxies.list",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies",
+          "response": {
+            "$ref": "TargetHttpsProxyList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "setSslCertificates": {
+          "description": "Replaces SslCertificates for TargetHttpsProxy.",
+          "httpMethod": "POST",
+          "id": "compute.regionTargetHttpsProxies.setSslCertificates",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpsProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "targetHttpsProxy": {
+              "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
+          "request": {
+            "$ref": "RegionTargetHttpsProxiesSetSslCertificatesRequest"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "setUrlMap": {
+          "description": "Changes the URL map for TargetHttpsProxy.",
+          "httpMethod": "POST",
+          "id": "compute.regionTargetHttpsProxies.setUrlMap",
+          "parameterOrder": [
+            "project",
+            "region",
+            "targetHttpsProxy"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+              "location": "query",
+              "type": "string"
+            },
+            "targetHttpsProxy": {
+              "description": "Name of the TargetHttpsProxy to set a URL map for.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
+          "request": {
+            "$ref": "UrlMapReference"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        }
+      }
+    },
+    "regionUrlMaps": {
+      "methods": {
+        "delete": {
+          "description": "Deletes the specified UrlMap resource.",
+          "httpMethod": "DELETE",
+          "id": "compute.regionUrlMaps.delete",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+              "location": "query",
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap resource to delete.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "get": {
+          "description": "Returns the specified UrlMap resource. Gets a list of available URL maps by making a list() request.",
+          "httpMethod": "GET",
+          "id": "compute.regionUrlMaps.get",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap resource to return.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+          "response": {
+            "$ref": "UrlMap"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "insert": {
+          "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
+          "httpMethod": "POST",
+          "id": "compute.regionUrlMaps.insert",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+              "location": "query",
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps",
+          "request": {
+            "$ref": "UrlMap"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "invalidateCache": {
+          "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
+          "httpMethod": "POST",
+          "id": "compute.regionUrlMaps.invalidateCache",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+              "location": "query",
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}/invalidateCache",
+          "request": {
+            "$ref": "CacheInvalidationRule"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "list": {
+          "description": "Retrieves the list of UrlMap resources available to the specified project in the specified region.",
+          "httpMethod": "GET",
+          "id": "compute.regionUrlMaps.list",
+          "parameterOrder": [
+            "project",
+            "region"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps",
+          "response": {
+            "$ref": "UrlMapList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
+        "patch": {
+          "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
+          "httpMethod": "PATCH",
+          "id": "compute.regionUrlMaps.patch",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+              "location": "query",
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap resource to patch.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+          "request": {
+            "$ref": "UrlMap"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "update": {
+          "description": "Updates the specified UrlMap resource with the data included in the request.",
+          "httpMethod": "PUT",
+          "id": "compute.regionUrlMaps.update",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "requestId": {
+              "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+              "location": "query",
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap resource to update.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+          "request": {
+            "$ref": "UrlMap"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
+        "validate": {
+          "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+          "httpMethod": "POST",
+          "id": "compute.regionUrlMaps.validate",
+          "parameterOrder": [
+            "project",
+            "region",
+            "urlMap"
+          ],
+          "parameters": {
+            "project": {
+              "description": "Project ID for this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            },
+            "region": {
+              "description": "Name of the region scoping this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "urlMap": {
+              "description": "Name of the UrlMap resource to be validated as.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/regions/{region}/urlMaps/{urlMap}/validate",
+          "request": {
+            "$ref": "RegionUrlMapsValidateRequest"
+          },
+          "response": {
+            "$ref": "UrlMapsValidateResponse"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        }
+      }
+    },
     "regions": {
       "methods": {
         "get": {
@@ -17787,6 +19223,55 @@
     },
     "sslCertificates": {
       "methods": {
+        "aggregatedList": {
+          "description": "Retrieves the list of all SslCertificate resources, regional and global, available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.sslCertificates.aggregatedList",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Name of the project scoping this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/aggregated/sslCertificates",
+          "response": {
+            "$ref": "SslCertificateAggregatedList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified SslCertificate resource.",
           "httpMethod": "DELETE",
@@ -18649,6 +20134,12 @@
             "subnetwork"
           ],
           "parameters": {
+            "drainTimeoutSeconds": {
+              "description": "The drain timeout specifies the upper bound in seconds on the amount of time allowed to drain connections from the current ACTIVE subnetwork to the current BACKUP subnetwork. The drain timeout is only applicable when the following conditions are true: - the subnetwork being patched has purpose = INTERNAL_HTTPS_LOAD_BALANCER - the subnetwork being patched has role = BACKUP - the patch request is setting the role to ACTIVE. Note that after this patch operation the roles of the ACTIVE and BACKUP subnetworks will be swapped.",
+              "format": "int32",
+              "location": "query",
+              "type": "integer"
+            },
             "project": {
               "description": "Project ID for this request.",
               "location": "path",
@@ -18830,6 +20321,55 @@
     },
     "targetHttpProxies": {
       "methods": {
+        "aggregatedList": {
+          "description": "Retrieves the list of all TargetHttpProxy resources, regional and global, available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.targetHttpProxies.aggregatedList",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Name of the project scoping this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/aggregated/targetHttpProxies",
+          "response": {
+            "$ref": "TargetHttpProxyAggregatedList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified TargetHttpProxy resource.",
           "httpMethod": "DELETE",
@@ -19066,6 +20606,55 @@
     },
     "targetHttpsProxies": {
       "methods": {
+        "aggregatedList": {
+          "description": "Retrieves the list of all TargetHttpsProxy resources, regional and global, available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.targetHttpsProxies.aggregatedList",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Name of the project scoping this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/aggregated/targetHttpsProxies",
+          "response": {
+            "$ref": "TargetHttpsProxyAggregatedList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified TargetHttpsProxy resource.",
           "httpMethod": "DELETE",
@@ -21218,6 +22807,55 @@
     },
     "urlMaps": {
       "methods": {
+        "aggregatedList": {
+          "description": "Retrieves the list of all UrlMap resources, regional and global, available to the specified project.",
+          "httpMethod": "GET",
+          "id": "compute.urlMaps.aggregatedList",
+          "parameterOrder": [
+            "project"
+          ],
+          "parameters": {
+            "filter": {
+              "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+              "location": "query",
+              "type": "string"
+            },
+            "maxResults": {
+              "default": "500",
+              "description": "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)",
+              "format": "uint32",
+              "location": "query",
+              "minimum": "0",
+              "type": "integer"
+            },
+            "orderBy": {
+              "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+              "location": "query",
+              "type": "string"
+            },
+            "pageToken": {
+              "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+              "location": "query",
+              "type": "string"
+            },
+            "project": {
+              "description": "Name of the project scoping this request.",
+              "location": "path",
+              "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])?))",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/aggregated/urlMaps",
+          "response": {
+            "$ref": "UrlMapsAggregatedList"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified UrlMap resource.",
           "httpMethod": "DELETE",
@@ -22462,7 +24100,7 @@
       }
     }
   },
-  "revision": "20190403",
+  "revision": "20190528",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -24498,9 +26136,17 @@
           "$ref": "BackendServiceCdnPolicy",
           "description": "Cloud CDN configuration for this BackendService."
         },
+        "circuitBreakers": {
+          "$ref": "CircuitBreakers",
+          "description": "Settings controlling the volume of connections to a backend service.\n\nThis field is applicable to either:  \n- A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. \n- A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
+        },
         "connectionDraining": {
           "$ref": "ConnectionDraining"
         },
+        "consistentHash": {
+          "$ref": "ConsistentHashLoadBalancerSettings",
+          "description": "Consistent Hash-based load balancing can be used to provide soft session affinity based on HTTP headers, cookies or other properties. This load balancing policy is applicable only for HTTP connections. The affinity to a particular destination host will be lost when one or more hosts are added/removed from the destination service. This field specifies parameters that control consistent hashing. This field is only applicable when localityLbPolicy is set to MAGLEV or RING_HASH.\n\nThis field is applicable to either:  \n- A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. \n- A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
+        },
         "creationTimestamp": {
           "description": "[Output Only] Creation timestamp in RFC3339 text format.",
           "type": "string"
@@ -24553,6 +26199,7 @@
           "enum": [
             "EXTERNAL",
             "INTERNAL",
+            "INTERNAL_MANAGED",
             "INTERNAL_SELF_MANAGED",
             "INVALID_LOAD_BALANCING_SCHEME"
           ],
@@ -24560,6 +26207,29 @@
             "",
             "",
             "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
+        "localityLbPolicy": {
+          "description": "The load balancing algorithm used within the scope of the locality. The possible values are:  \n- ROUND_ROBIN: This is a simple policy in which each healthy backend is selected in round robin order. This is the default. \n- LEAST_REQUEST: An O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests. \n- RING_HASH: The ring/modulo hash load balancer implements consistent hashing to backends. The algorithm has the property that the addition/removal of a host from a set of N hosts only affects 1/N of the requests. \n- RANDOM: The load balancer selects a random healthy host. \n- ORIGINAL_DESTINATION: Backend host is selected based on the client connection metadata, i.e., connections are opened to the same address as the destination address of the incoming connection before the connection was redirected to the load balancer. \n- MAGLEV: used as a drop in replacement for the ring hash load balancer. Maglev is not as stable as ring hash but has faster table lookup build times and host selection times. For more information about Maglev, refer to https://ai.google/research/pubs/pub44824 \n\nThis field is applicable to either:  \n- A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. \n- A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED.",
+          "enum": [
+            "INVALID_LB_POLICY",
+            "LEAST_REQUEST",
+            "MAGLEV",
+            "ORIGINAL_DESTINATION",
+            "RANDOM",
+            "RING_HASH",
+            "ROUND_ROBIN"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -24573,6 +26243,10 @@
           "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
           "type": "string"
         },
+        "outlierDetection": {
+          "$ref": "OutlierDetection",
+          "description": "Settings controlling eviction of unhealthy hosts from the load balancing pool. This field is applicable to either:  \n- A regional backend service with the service_protocol set to HTTP, HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED. \n- A global backend service with the load_balancing_scheme set to INTERNAL_SELF_MANAGED."
+        },
         "port": {
           "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
           "format": "int32",
@@ -24621,6 +26295,8 @@
             "CLIENT_IP_PORT_PROTO",
             "CLIENT_IP_PROTO",
             "GENERATED_COOKIE",
+            "HEADER_FIELD",
+            "HTTP_COOKIE",
             "NONE"
           ],
           "enumDescriptions": [
@@ -24628,6 +26304,8 @@
             "",
             "",
             "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -25132,6 +26810,42 @@
       },
       "type": "object"
     },
+    "CircuitBreakers": {
+      "description": "Settings controlling the volume of connections to a backend service.",
+      "id": "CircuitBreakers",
+      "properties": {
+        "connectTimeout": {
+          "$ref": "Duration",
+          "description": "The timeout for new network connections to hosts."
+        },
+        "maxConnections": {
+          "description": "The maximum number of connections to the backend cluster. If not specified, the default is 1024.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxPendingRequests": {
+          "description": "The maximum number of pending requests allowed to the backend cluster. If not specified, the default is 1024.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxRequests": {
+          "description": "The maximum number of parallel requests that allowed to the backend cluster. If not specified, the default is 1024.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxRequestsPerConnection": {
+          "description": "Maximum requests for a single backend connection. This parameter is respected by both the HTTP/1.1 and HTTP/2 implementations. If not specified, there is no limit. Setting this parameter to 1 will effectively disable keep alive.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "maxRetries": {
+          "description": "The maximum number of parallel retries allowed to the backend cluster. If not specified, the default is 3.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "Commitment": {
       "description": "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.\n\nCommitted 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. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
       "id": "Commitment",
@@ -25634,6 +27348,100 @@
       },
       "type": "object"
     },
+    "ConsistentHashLoadBalancerSettings": {
+      "description": "This message defines settings for a consistent hash style load balancer.",
+      "id": "ConsistentHashLoadBalancerSettings",
+      "properties": {
+        "httpCookie": {
+          "$ref": "ConsistentHashLoadBalancerSettingsHttpCookie",
+          "description": "Hash is based on HTTP Cookie. This field describes a HTTP cookie that will be used as the hash key for the consistent hash load balancer. If the cookie is not present, it will be generated. This field is applicable if the sessionAffinity is set to HTTP_COOKIE."
+        },
+        "httpHeaderName": {
+          "description": "The hash based on the value of the specified header field. This field is applicable if the sessionAffinity is set to HEADER_FIELD.",
+          "type": "string"
+        },
+        "minimumRingSize": {
+          "description": "The minimum number of virtual nodes to use for the hash ring. Defaults to 1024. Larger ring sizes result in more granular load distributions. If the number of hosts in the load balancing pool is larger than the ring size, each host will be assigned a single virtual node.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "ConsistentHashLoadBalancerSettingsHttpCookie": {
+      "description": "The information about the HTTP Cookie on which the hash function is based for load balancing policies that use a consistent hash.",
+      "id": "ConsistentHashLoadBalancerSettingsHttpCookie",
+      "properties": {
+        "name": {
+          "description": "Name of the cookie.",
+          "type": "string"
+        },
+        "path": {
+          "description": "Path to set for the cookie.",
+          "type": "string"
+        },
+        "ttl": {
+          "$ref": "Duration",
+          "description": "Lifetime of the cookie."
+        }
+      },
+      "type": "object"
+    },
+    "CorsPolicy": {
+      "description": "The specification for allowing client side cross-origin requests. Please see W3C Recommendation for Cross Origin Resource Sharing",
+      "id": "CorsPolicy",
+      "properties": {
+        "allowCredentials": {
+          "description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This translates to the Access-Control-Allow-Credentials header.\nDefault is false.",
+          "type": "boolean"
+        },
+        "allowHeaders": {
+          "description": "Specifies the content for the Access-Control-Allow-Headers header.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "allowMethods": {
+          "description": "Specifies the content for the Access-Control-Allow-Methods header.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "allowOriginRegexes": {
+          "description": "Specifies the regualar expression patterns that match allowed origins. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript \nAn origin is allowed if it matches either allow_origins or allow_origin_regex.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "allowOrigins": {
+          "description": "Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either allow_origins or allow_origin_regex.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "disabled": {
+          "description": "If true, specifies the CORS policy is disabled. The default value of false, which indicates that the CORS policy is in effect.",
+          "type": "boolean"
+        },
+        "exposeHeaders": {
+          "description": "Specifies the content for the Access-Control-Expose-Headers header.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "maxAge": {
+          "description": "Specifies how long the results of a preflight request can be cached. This translates to the content for the Access-Control-Max-Age header.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "CustomerEncryptionKey": {
       "description": "Represents a customer-supplied encryption key",
       "id": "CustomerEncryptionKey",
@@ -25724,7 +27532,7 @@
         },
         "diskEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
+          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
         },
         "guestOsFeatures": {
           "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read  Enabling guest operating system features to see a list of available options.",
@@ -25879,11 +27687,11 @@
           "type": "string"
         },
         "type": {
-          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project/zones/zone/diskTypes/pd-standard or pd-ssd",
           "type": "string"
         },
         "users": {
-          "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+          "description": "[Output Only] Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
           "items": {
             "type": "string"
           },
@@ -26719,6 +28527,23 @@
       },
       "type": "object"
     },
+    "Duration": {
+      "description": "A Duration represents a fixed-length span of time represented as a count of seconds and fractions of seconds at nanosecond resolution. It is independent of any calendar and concepts like \"day\" or \"month\". Range is approximately 10,000 years.",
+      "id": "Duration",
+      "properties": {
+        "nanos": {
+          "description": "Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented with a 0 `seconds` field and a positive `nanos` field. Must be from 0 to 999,999,999 inclusive.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "seconds": {
+          "description": "Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "ExchangedPeeringRoute": {
       "id": "ExchangedPeeringRoute",
       "properties": {
@@ -27487,6 +29312,7 @@
           "enum": [
             "EXTERNAL",
             "INTERNAL",
+            "INTERNAL_MANAGED",
             "INTERNAL_SELF_MANAGED",
             "INVALID"
           ],
@@ -27494,10 +29320,18 @@
             "",
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
         },
+        "metadataFilters": {
+          "description": "Opaque filter criteria used by Loadbalancer to restrict routing configuration to a limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS clients present node metadata. If a match takes place, the relevant routing configuration is made available to those proxies.\nFor each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels in the provided metadata.\nmetadataFilters specified here can be overridden by those specified in the UrlMap that this ForwardingRule references.\nmetadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
+          "items": {
+            "$ref": "MetadataFilter"
+          },
+          "type": "array"
+        },
         "name": {
           "description": "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.",
           "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
@@ -28221,6 +30055,10 @@
           "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
           "type": "string"
         },
+        "region": {
+          "description": "[Output Only] Region where the health check resides. Not applicable to global health checks.",
+          "type": "string"
+        },
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
@@ -28386,6 +30224,212 @@
       },
       "type": "object"
     },
+    "HealthChecksAggregatedList": {
+      "id": "HealthChecksAggregatedList",
+      "properties": {
+        "id": {
+          "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+          "type": "string"
+        },
+        "items": {
+          "additionalProperties": {
+            "$ref": "HealthChecksScopedList",
+            "description": "Name of the scope containing this set of HealthChecks."
+          },
+          "description": "A list of HealthChecksScopedList resources.",
+          "type": "object"
+        },
+        "kind": {
+          "default": "compute#healthChecksAggregatedList",
+          "description": "Type of resource.",
+          "type": "string"
+        },
+        "nextPageToken": {
+          "description": "[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.",
+          "type": "string"
+        },
+        "selfLink": {
+          "description": "[Output Only] Server-defined URL for this resource.",
+          "type": "string"
+        },
+        "warning": {
+          "description": "[Output Only] Informational warning message.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "HealthChecksScopedList": {
+      "id": "HealthChecksScopedList",
+      "properties": {
+        "healthChecks": {
+          "description": "A list of HealthChecks contained in this scope.",
+          "items": {
+            "$ref": "HealthCheck"
+          },
+          "type": "array"
+        },
+        "warning": {
+          "description": "Informational warning which replaces the list of backend services when the list is empty.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "HealthStatus": {
       "id": "HealthStatus",
       "properties": {
@@ -28473,6 +30517,147 @@
       },
       "type": "object"
     },
+    "HttpFaultAbort": {
+      "description": "Specification for how requests are aborted as part of fault injection.",
+      "id": "HttpFaultAbort",
+      "properties": {
+        "httpStatus": {
+          "description": "The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.",
+          "format": "uint32",
+          "type": "integer"
+        },
+        "percentage": {
+          "description": "The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.",
+          "format": "double",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
+    "HttpFaultDelay": {
+      "description": "Specifies the delay introduced by Loadbalancer before forwarding the request to the backend service as part of fault injection.",
+      "id": "HttpFaultDelay",
+      "properties": {
+        "fixedDelay": {
+          "$ref": "Duration",
+          "description": "Specifies the value of the fixed delay interval."
+        },
+        "percentage": {
+          "description": "The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.",
+          "format": "double",
+          "type": "number"
+        }
+      },
+      "type": "object"
+    },
+    "HttpFaultInjection": {
+      "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the Loadbalancer for a percentage of requests.",
+      "id": "HttpFaultInjection",
+      "properties": {
+        "abort": {
+          "$ref": "HttpFaultAbort",
+          "description": "The specification for how client requests are aborted as part of fault injection."
+        },
+        "delay": {
+          "$ref": "HttpFaultDelay",
+          "description": "The specification for how client requests are delayed as part of fault injection, before being sent to a backend service."
+        }
+      },
+      "type": "object"
+    },
+    "HttpHeaderAction": {
+      "description": "The request and response header transformations that take effect before the request is passed along to the selected backendService.",
+      "id": "HttpHeaderAction",
+      "properties": {
+        "requestHeadersToAdd": {
+          "description": "Headers to add to a matching request prior to forwarding the request to the backendService.",
+          "items": {
+            "$ref": "HttpHeaderOption"
+          },
+          "type": "array"
+        },
+        "requestHeadersToRemove": {
+          "description": "A list of header names for headers that need to be removed from the request prior to forwarding the request to the backendService.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "responseHeadersToAdd": {
+          "description": "Headers to add the response prior to sending the response back to the client.",
+          "items": {
+            "$ref": "HttpHeaderOption"
+          },
+          "type": "array"
+        },
+        "responseHeadersToRemove": {
+          "description": "A list of header names for headers that need to be removed from the response prior to sending the response back to the client.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "HttpHeaderMatch": {
+      "description": "matchRule criteria for request header matches.",
+      "id": "HttpHeaderMatch",
+      "properties": {
+        "exactMatch": {
+          "description": "The value should exactly match contents of exactMatch.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.",
+          "type": "string"
+        },
+        "headerName": {
+          "description": "The name of the HTTP header to match.\nFor matching against the HTTP request's authority, use a headerMatch with the header name \":authority\".\nFor matching a request's method, use the headerName \":method\".",
+          "type": "string"
+        },
+        "invertMatch": {
+          "description": "If set to false, the headerMatch is considered a match if the match criteria above are met. If set to true, the headerMatch is considered a match if the match criteria above are NOT met.\nThe default setting is false.",
+          "type": "boolean"
+        },
+        "prefixMatch": {
+          "description": "The value of the header must start with the contents of prefixMatch.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.",
+          "type": "string"
+        },
+        "presentMatch": {
+          "description": "A header with the contents of headerName must exist. The match takes place whether or not the request's header has a value or not.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.",
+          "type": "boolean"
+        },
+        "rangeMatch": {
+          "$ref": "Int64RangeMatch",
+          "description": "The header value must be an integer and its value must be in the range specified in rangeMatch. If the header does not contain an integer, number or is empty, the match fails.\nFor example for a range [-5, 0]  \n- -3 will match. \n- 0 will not match. \n- 0.25 will not match. \n- -3someString will not match.  \nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set."
+        },
+        "regexMatch": {
+          "description": "The value of the header must match the regualar expression specified in regexMatch. For regular expression grammar, please see:  en.cppreference.com/w/cpp/regex/ecmascript \nFor matching against a port specified in the HTTP request, use a headerMatch with headerName set to PORT and a regular expression that satisfies the RFC2616 Host header's port specifier.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.",
+          "type": "string"
+        },
+        "suffixMatch": {
+          "description": "The value of the header must end with the contents of suffixMatch.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "HttpHeaderOption": {
+      "description": "Specification determining how headers are added to requests or responses.",
+      "id": "HttpHeaderOption",
+      "properties": {
+        "headerName": {
+          "description": "The name of the header.",
+          "type": "string"
+        },
+        "headerValue": {
+          "description": "The value of the header to add.",
+          "type": "string"
+        },
+        "replace": {
+          "description": "If false, headerValue is appended to any values that already exist for the header. If true, headerValue is set for the header, discarding any values that were set for that header.\nThe default value is false.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
     "HttpHealthCheck": {
       "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
       "id": "HttpHealthCheck",
@@ -28652,6 +30837,207 @@
       },
       "type": "object"
     },
+    "HttpQueryParameterMatch": {
+      "description": "HttpRouteRuleMatch criteria for a request's query parameter.",
+      "id": "HttpQueryParameterMatch",
+      "properties": {
+        "exactMatch": {
+          "description": "The queryParameterMatch matches if the value of the parameter exactly matches the contents of exactMatch.\nOnly one of presentMatch, exactMatch and regexMatch must be set.",
+          "type": "string"
+        },
+        "name": {
+          "description": "The name of the query parameter to match. The query parameter must exist in the request, in the absence of which the request match fails.",
+          "type": "string"
+        },
+        "presentMatch": {
+          "description": "Specifies that the queryParameterMatch matches if the request contains the query parameter, irrespective of whether the parameter has a value or not.\nOnly one of presentMatch, exactMatch and regexMatch must be set.",
+          "type": "boolean"
+        },
+        "regexMatch": {
+          "description": "The queryParameterMatch matches if the value of the parameter matches the regular expression specified by regexMatch. For the regular expression grammar, please see en.cppreference.com/w/cpp/regex/ecmascript \nOnly one of presentMatch, exactMatch and regexMatch must be set.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "HttpRedirectAction": {
+      "description": "Specifies settings for an HTTP redirect.",
+      "id": "HttpRedirectAction",
+      "properties": {
+        "hostRedirect": {
+          "description": "The host that will be used in the redirect response instead of the one that was supplied in the request.\nThe value must be between 1 and 255 characters.",
+          "type": "string"
+        },
+        "httpsRedirect": {
+          "description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request.\nThis must only be set for UrlMaps used in TargetHttpProxys. Setting this true for TargetHttpsProxy is not permitted.\nThe default is set to false.",
+          "type": "boolean"
+        },
+        "pathRedirect": {
+          "description": "The path that will be used in the redirect response instead of the one that was supplied in the request.\nOnly one of pathRedirect or prefixRedirect must be specified.\nThe value must be between 1 and 1024 characters.",
+          "type": "string"
+        },
+        "prefixRedirect": {
+          "description": "The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch, retaining the remaining portion of the URL before redirecting the request.",
+          "type": "string"
+        },
+        "redirectResponseCode": {
+          "description": "The HTTP Status code to use for this RedirectAction.\nSupported values are:  \n- MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301. \n- FOUND, which corresponds to 302. \n- SEE_OTHER which corresponds to 303. \n- TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method will be retained. \n- PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method will be retained.",
+          "enum": [
+            "FOUND",
+            "MOVED_PERMANENTLY_DEFAULT",
+            "PERMANENT_REDIRECT",
+            "SEE_OTHER",
+            "TEMPORARY_REDIRECT"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
+        "stripQuery": {
+          "description": "If set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained.\nThe default is set to false.",
+          "type": "boolean"
+        }
+      },
+      "type": "object"
+    },
+    "HttpRetryPolicy": {
+      "description": "The retry policy associates with HttpRouteRule",
+      "id": "HttpRetryPolicy",
+      "properties": {
+        "numRetries": {
+          "description": "Specifies the allowed number retries. This number must be \u003e 0.",
+          "format": "uint32",
+          "type": "integer"
+        },
+        "perTryTimeout": {
+          "$ref": "Duration",
+          "description": "Specifies a non-zero timeout per retry attempt."
+        },
+        "retryConditions": {
+          "description": "Specfies one or more conditions when this retry rule applies. Valid values are:  \n- 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code, or if the backend service does not respond at all, example: disconnects, reset, read timeout, connection failure, and refused streams. \n- gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n- \n- connect-failure: Loadbalancer will retry on failures connecting to backend services, for example due to connection timeouts. \n- retriable-4xx: Loadbalancer will retry for retriable 4xx response codes. Currently the only retriable error supported is 409. \n- refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. \n- cancelledLoadbalancer will retry if the gRPC status code in the response header is set to cancelled \n- deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded \n- resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted \n- unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "HttpRouteAction": {
+      "id": "HttpRouteAction",
+      "properties": {
+        "corsPolicy": {
+          "$ref": "CorsPolicy",
+          "description": "The specification for allowing client side cross-origin requests. Please see W3C Recommendation for Cross Origin Resource Sharing"
+        },
+        "faultInjectionPolicy": {
+          "$ref": "HttpFaultInjection",
+          "description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a percentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted by the Loadbalancer for a percentage of requests.\ntimeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy."
+        },
+        "requestMirrorPolicy": {
+          "$ref": "RequestMirrorPolicy",
+          "description": "Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow."
+        },
+        "retryPolicy": {
+          "$ref": "HttpRetryPolicy",
+          "description": "Specifies the retry policy associated with this route."
+        },
+        "timeout": {
+          "$ref": "Duration",
+          "description": "Specifies the timeout for the selected route. Timeout is computed from the time the request is has been fully processed (i.e. end-of-stream) up until the response has been completely processed. Timeout includes all retries.\nIf not specified, the default value is 15 seconds."
+        },
+        "urlRewrite": {
+          "$ref": "UrlRewrite",
+          "description": "The spec to modify the URL of the request, prior to forwarding the request to the matched service"
+        },
+        "weightedBackendServices": {
+          "description": "A list of weighted backend services to send traffic to when a route match occurs. The weights determine the fraction of traffic that flows to their corresponding backend service. If all traffic needs to go to a single backend service, there must be one  weightedBackendService with weight set to a non 0 number.\nOnce a backendService is identified and before forwarding the request to the backend service, advanced routing actions like Url rewrites and header transformations are applied depending on additional settings specified in this HttpRouteAction.",
+          "items": {
+            "$ref": "WeightedBackendService"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "HttpRouteRule": {
+      "description": "An HttpRouteRule specifies how to match an HTTP request and the corresponding routing action that load balancing proxies will perform.",
+      "id": "HttpRouteRule",
+      "properties": {
+        "headerAction": {
+          "$ref": "HttpHeaderAction",
+          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nThe headerAction specified here are applied before the matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].routeAction.weightedBackendService.backendServiceWeightAction[].headerAction"
+        },
+        "matchRules": {
+          "items": {
+            "$ref": "HttpRouteRuleMatch"
+          },
+          "type": "array"
+        },
+        "routeAction": {
+          "$ref": "HttpRouteAction",
+          "description": "In response to a matching matchRule, the load balancer performs advanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend. If  routeAction specifies any  weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any  weightedBackendServices.\nOnly one of routeAction or urlRedirect must be set."
+        },
+        "service": {
+          "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is additionally specified, advanced routing actions like URL Rewrites, etc. take effect prior to sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendService s. Conversely, if routeAction specifies any  weightedBackendServices, service must not be specified.\nOnly one of urlRedirect, service or routeAction.weightedBackendService must be set.",
+          "type": "string"
+        },
+        "urlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "When this rule is matched, the request is redirected to a URL specified by urlRedirect.\nIf urlRedirect is specified, service or routeAction must not be set."
+        }
+      },
+      "type": "object"
+    },
+    "HttpRouteRuleMatch": {
+      "description": "HttpRouteRuleMatch specifies a set of criteria for matching requests to an HttpRouteRule. All specified criteria must be satisfied for a match to occur.",
+      "id": "HttpRouteRuleMatch",
+      "properties": {
+        "fullPathMatch": {
+          "description": "For satifying the matchRule condition, the path of the request must exactly match the value specified in fullPathMatch after removing any query parameters and anchor that may be part of the original URL.\nFullPathMatch must be between 1 and 1024 characters.\nOnly one of prefixMatch, fullPathMatch or regexMatch must be specified.",
+          "type": "string"
+        },
+        "headerMatches": {
+          "description": "Specifies a list of header match criteria, all of which must match corresponding headers in the request.",
+          "items": {
+            "$ref": "HttpHeaderMatch"
+          },
+          "type": "array"
+        },
+        "ignoreCase": {
+          "description": "Specifies that prefixMatch and fullPathMatch matches are case sensitive.\nThe default value is false.\ncaseSensitive must not be used with regexMatch.",
+          "type": "boolean"
+        },
+        "metadataFilters": {
+          "description": "Opaque filter criteria used by Loadbalancer to restrict routing configuration to a limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS clients present node metadata. If a match takes place, the relevant routing configuration is made available to those proxies.\nFor each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels in the provided metadata.\nmetadataFilters specified here can be overrides those specified in ForwardingRule that refers to this UrlMap.\nmetadataFilters only applies to Loadbalancers that have their loadBalancingScheme set to INTERNAL_SELF_MANAGED.",
+          "items": {
+            "$ref": "MetadataFilter"
+          },
+          "type": "array"
+        },
+        "prefixMatch": {
+          "description": "For satifying the matchRule condition, the request's path must begin with the specified prefixMatch. prefixMatch must begin with a /.\nThe value must be between 1 and 1024 characters.\nOnly one of prefixMatch, fullPathMatch or regexMatch must be specified.",
+          "type": "string"
+        },
+        "queryParameterMatches": {
+          "description": "Specifies a list of query parameter match criteria, all of which must match corresponding query parameters in the request.",
+          "items": {
+            "$ref": "HttpQueryParameterMatch"
+          },
+          "type": "array"
+        },
+        "regexMatch": {
+          "description": "For satifying the matchRule condition, the path of the request must satisfy the regular expression specified in regexMatch after removing any query parameters and anchor supplied with the original URL. For regular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript \nOnly one of prefixMatch, fullPathMatch or regexMatch must be specified.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "HttpsHealthCheck": {
       "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
       "id": "HttpsHealthCheck",
@@ -28933,7 +31319,7 @@
               "type": "string"
             },
             "sha1Checksum": {
-              "description": "An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
+              "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
               "pattern": "[a-f0-9]{40}",
               "type": "string"
             },
@@ -29015,6 +31401,13 @@
             ""
           ],
           "type": "string"
+        },
+        "storageLocations": {
+          "description": "GCS bucket storage location of the image (regional or multi-regional).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
         }
       },
       "type": "object"
@@ -29234,7 +31627,7 @@
         },
         "reservationAffinity": {
           "$ref": "ReservationAffinity",
-          "description": "The configuration of desired allocations which this Instance could consume capacity from."
+          "description": "The configuration of desired reservations from which this Instance can consume capacity from."
         },
         "scheduling": {
           "$ref": "Scheduling",
@@ -31519,6 +33912,23 @@
       },
       "type": "object"
     },
+    "Int64RangeMatch": {
+      "description": "HttpRouteRuleMatch criteria for field values that must stay within the specified integer range.",
+      "id": "Int64RangeMatch",
+      "properties": {
+        "rangeEnd": {
+          "description": "The end of the range (exclusive) in signed long integer format.",
+          "format": "int64",
+          "type": "string"
+        },
+        "rangeStart": {
+          "description": "The start of the range (inclusive) in signed long integer format.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Interconnect": {
       "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the  Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
       "id": "Interconnect",
@@ -31574,7 +33984,7 @@
           "type": "array"
         },
         "interconnectType": {
-          "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
+          "description": "Type of interconnect, which can take one of the following values: \n- PARTNER: A partner-managed interconnection shared between customers though a partner. \n- DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
           "enum": [
             "DEDICATED",
             "IT_PRIVATE",
@@ -31605,7 +34015,7 @@
           "type": "object"
         },
         "linkType": {
-          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
+          "description": "Type of link requested, which can take one of the following values: \n- LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics \n- LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_100G_LR",
             "LINK_TYPE_ETHERNET_10G_LR"
@@ -31635,7 +34045,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current status of this Interconnect's functionality, which can take one of the following values: \n- OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. \n- OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. \n- OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -31665,7 +34075,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current state of Interconnect functionality, which can take one of the following values: \n- ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. \n- UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. \n- UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "ACTIVE",
             "UNPROVISIONED"
@@ -31688,7 +34098,7 @@
           "type": "boolean"
         },
         "bandwidth": {
-          "description": "Provisioned bandwidth capacity for the interconnectAttachment. Can be set by the partner to update the customer's provisioned bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED.",
+          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: \n- BPS_50M: 50 Mbit/s \n- BPS_100M: 100 Mbit/s \n- BPS_200M: 200 Mbit/s \n- BPS_300M: 300 Mbit/s \n- BPS_400M: 400 Mbit/s \n- BPS_500M: 500 Mbit/s \n- BPS_1G: 1 Gbit/s \n- BPS_2G: 2 Gbit/s \n- BPS_5G: 5 Gbit/s \n- BPS_10G: 10 Gbit/s",
           "enum": [
             "BPS_100M",
             "BPS_10G",
@@ -31739,7 +34149,7 @@
           "type": "string"
         },
         "edgeAvailabilityDomain": {
-          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time. For improved reliability, customers should configure a pair of attachments with one per availability domain. The selected availability domain will be provided to the Partner via the pairing key so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
+          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: \n- AVAILABILITY_DOMAIN_ANY \n- AVAILABILITY_DOMAIN_1 \n- AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
           "enum": [
             "AVAILABILITY_DOMAIN_1",
             "AVAILABILITY_DOMAIN_2",
@@ -31788,7 +34198,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional, which can take one of the following values: \n- OS_ACTIVE: The attachment has been turned up and is ready to use. \n- OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -31804,7 +34214,7 @@
           "type": "string"
         },
         "partnerAsn": {
-          "description": "Optional BGP ASN for the router that should be supplied by a layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
+          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
           "format": "int64",
           "type": "string"
         },
@@ -31829,7 +34239,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of this attachment's functionality.",
+          "description": "[Output Only] The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: \n- ACTIVE: The attachment has been turned up and is ready to use. \n- UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. \n- PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. \n- PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. \n- PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. \n- DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted.",
           "enum": [
             "ACTIVE",
             "DEFUNCT",
@@ -31851,6 +34261,7 @@
           "type": "string"
         },
         "type": {
+          "description": "The type of interconnect attachment this is, which can take one of the following values: \n- DEDICATED: an attachment to a Dedicated Interconnect. \n- PARTNER: an attachment to a Partner Interconnect, created by the customer. \n- PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner.",
           "enum": [
             "DEDICATED",
             "PARTNER",
@@ -32108,7 +34519,7 @@
           "type": "string"
         },
         "portalUrl": {
-          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep-link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
+          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
           "type": "string"
         }
       },
@@ -32291,6 +34702,7 @@
           "type": "string"
         },
         "state": {
+          "description": "The state of a LACP link, which can take one of the following values: \n- ACTIVE: The link is configured and active within the bundle. \n- DETACHED: The link is not configured within the bundle. This means that the rest of the object should be empty.",
           "enum": [
             "ACTIVE",
             "DETACHED"
@@ -32494,7 +34906,7 @@
           "type": "string"
         },
         "continent": {
-          "description": "[Output Only] Continent for this location.",
+          "description": "[Output Only] Continent for this location, which can take one of the following values: \n- AFRICA \n- ASIA_PAC \n- EUROPE \n- NORTH_AMERICA \n- SOUTH_AMERICA",
           "enum": [
             "AFRICA",
             "ASIA_PAC",
@@ -32567,7 +34979,7 @@
           "type": "string"
         },
         "status": {
-          "description": "[Output Only] The status of this InterconnectLocation. If the status is AVAILABLE, new Interconnects may be provisioned in this InterconnectLocation. Otherwise, no new Interconnects may be provisioned.",
+          "description": "[Output Only] The status of this InterconnectLocation, which can take one of the following values: \n- CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. \n- AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.",
           "enum": [
             "AVAILABLE",
             "CLOSED"
@@ -32746,7 +35158,7 @@
           "type": "string"
         },
         "issueType": {
-          "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "Form this outage is expected to take, which can take one of the following values: \n- OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. \n- PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "IT_OUTAGE",
             "IT_PARTIAL_OUTAGE",
@@ -32766,7 +35178,7 @@
           "type": "string"
         },
         "source": {
-          "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
+          "description": "The party that generated this notification, which can take the following value: \n- GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.",
           "enum": [
             "GOOGLE",
             "NSRC_GOOGLE"
@@ -32783,7 +35195,7 @@
           "type": "string"
         },
         "state": {
-          "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "State of this notification, which can take one of the following values: \n- ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. \n- CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "ACTIVE",
             "CANCELLED",
@@ -33133,7 +35545,7 @@
       "id": "LogConfigDataAccessOptions",
       "properties": {
         "logMode": {
-          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.\n\nNOTE: Logging to Gin in a fail-closed manner is currently unsupported while work is being done to satisfy the requirements of go/345. Currently, setting LOG_FAIL_CLOSED mode will have no effect, but still exists because there is active work being done to support it (b/115874152).",
+          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
           "enum": [
             "LOG_FAIL_CLOSED",
             "LOG_MODE_UNSPECIFIED"
@@ -33701,6 +36113,49 @@
       },
       "type": "object"
     },
+    "MetadataFilter": {
+      "description": "Opaque filter criteria used by loadbalancers to restrict routing configuration to a limited set of loadbalancing proxies. Proxies and sidecars involved in loadbalancing would typically present metadata to the loadbalancers which need to match criteria specified here. If a match takes place, the relevant routing configuration is made available to those proxies.\nFor each metadataFilter in this list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the filterLabels must match the corresponding label provided in the metadata. If its filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match with corresponding labels in the provided metadata.\nAn example for using metadataFilters would be: if loadbalancing involves  Envoys, they will only receive routing configuration when values in metadataFilters match values supplied in \u003ca href=\"https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/base.proto#envoy-api-msg-core-node\" Node metadata of their XDS requests to loadbalancers.",
+      "id": "MetadataFilter",
+      "properties": {
+        "filterLabels": {
+          "description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria \nThis list must not be empty and can have at the most 64 entries.",
+          "items": {
+            "$ref": "MetadataFilterLabelMatch"
+          },
+          "type": "array"
+        },
+        "filterMatchCriteria": {
+          "description": "Specifies how individual filterLabel matches within the list of filterLabels contribute towards the overall metadataFilter match.\nSupported values are:  \n- MATCH_ANY: At least one of the filterLabels must have a matching label in the provided metadata. \n- MATCH_ALL: All filterLabels must have matching labels in the provided metadata.",
+          "enum": [
+            "MATCH_ALL",
+            "MATCH_ANY",
+            "NOT_SET"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
+    "MetadataFilterLabelMatch": {
+      "description": "MetadataFilter label name value pairs that are expected to match corresponding labels presented as metadata to the loadbalancer.",
+      "id": "MetadataFilterLabelMatch",
+      "properties": {
+        "name": {
+          "description": "Name of metadata label.\nThe name can have a maximum length of 1024 characters and must be at least 1 character long.",
+          "type": "string"
+        },
+        "value": {
+          "description": "The value of the label must match the specified value.\nvalue can have a maximum length of 1024 characters.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "NamedPort": {
       "description": "The named port. For example: .",
       "id": "NamedPort",
@@ -36545,18 +39000,90 @@
       },
       "type": "object"
     },
+    "OutlierDetection": {
+      "description": "Settings controlling eviction of unhealthy hosts from the load balancing pool.",
+      "id": "OutlierDetection",
+      "properties": {
+        "baseEjectionTime": {
+          "$ref": "Duration",
+          "description": "The base time that a host is ejected for. The real time is equal to the base time multiplied by the number of times the host has been ejected. Defaults to 30000ms or 30s."
+        },
+        "consecutiveErrors": {
+          "description": "Number of errors before a host is ejected from the connection pool. When the backend host is accessed over HTTP, a 5xx return code qualifies as an error. Defaults to 5.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "consecutiveGatewayFailure": {
+          "description": "The number of consecutive gateway failures (502, 503, 504 status or connection errors that are mapped to one of those status codes) before a consecutive gateway failure ejection occurs. Defaults to 5.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "enforcingConsecutiveErrors": {
+          "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive 5xx. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "enforcingConsecutiveGatewayFailure": {
+          "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through consecutive gateway failures. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 0.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "enforcingSuccessRate": {
+          "description": "The percentage chance that a host will be actually ejected when an outlier status is detected through success rate statistics. This setting can be used to disable ejection or to ramp it up slowly. Defaults to 100.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "interval": {
+          "$ref": "Duration",
+          "description": "Time interval between ejection sweep analysis. This can result in both new ejections as well as hosts being returned to service. Defaults to 10 seconds."
+        },
+        "maxEjectionPercent": {
+          "description": "Maximum percentage of hosts in the load balancing pool for the backend service that can be ejected. Defaults to 10%.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "successRateMinimumHosts": {
+          "description": "The number of hosts in a cluster that must have enough request volume to detect success rate outliers. If the number of hosts is less than this setting, outlier detection via success rate statistics is not performed for any host in the cluster. Defaults to 5.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "successRateRequestVolume": {
+          "description": "The minimum number of total requests that must be collected in one interval (as defined by the interval duration above) to include this host in success rate based outlier detection. If the volume is lower than this setting, outlier detection via success rate statistics is not performed for that host. Defaults to 100.",
+          "format": "int32",
+          "type": "integer"
+        },
+        "successRateStdevFactor": {
+          "description": "This factor is used to determine the ejection threshold for success rate outlier ejection. The ejection threshold is the difference between the mean success rate, and the product of this factor and the standard deviation of the mean success rate: mean - (stdev * success_rate_stdev_factor). This factor is divided by a thousand to get a double. That is, if the desired factor is 1.9, the runtime value should be 1900. Defaults to 1900.",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "PathMatcher": {
       "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
       "id": "PathMatcher",
       "properties": {
+        "defaultRouteAction": {
+          "$ref": "HttpRouteAction",
+          "description": "defaultRouteAction takes effect when none of the  pathRules or routeRules match. The load balancer performs advanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any  weightedBackendServices.\nOnly one of defaultRouteAction or defaultUrlRedirect must be set."
+        },
         "defaultService": {
           "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules or routeRules defined by this PathMatcher are matched. For example, the following are all valid URLs to a BackendService resource:  \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService  If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, etc. take effect prior to sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if defaultRouteAction specifies any weightedBackendServices, defaultService must not be specified.\nOnly one of defaultService, defaultUrlRedirect  or defaultRouteAction.weightedBackendService must be set.\nAuthorization requires one or more of the following Google IAM permissions on the specified resource default_service:  \n- compute.backendBuckets.use \n- compute.backendServices.use",
           "type": "string"
         },
+        "defaultUrlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "When when none of the specified pathRules or routeRules match, the request is redirected to a URL specified by defaultUrlRedirect.\nIf defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set."
+        },
         "description": {
           "description": "An optional description of this resource. Provide this property when you create the resource.",
           "type": "string"
         },
+        "headerAction": {
+          "$ref": "HttpHeaderAction",
+          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nHeaderAction specified here are applied after the matching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap"
+        },
         "name": {
           "description": "The name to which this PathMatcher is referred by the HostRule.",
           "type": "string"
@@ -36567,6 +39094,13 @@
             "$ref": "PathRule"
           },
           "type": "array"
+        },
+        "routeRules": {
+          "description": "The list of ordered HTTP route rules. Use this list instead of pathRules when advanced route matching and routing actions are desired. The order of specifying routeRules matters: the first rule that matches will cause its specified routing action to take effect.\nOnly one of pathRules or routeRules must be set.",
+          "items": {
+            "$ref": "HttpRouteRule"
+          },
+          "type": "array"
         }
       },
       "type": "object"
@@ -36582,9 +39116,17 @@
           },
           "type": "array"
         },
+        "routeAction": {
+          "$ref": "HttpRouteAction",
+          "description": "In response to a matching path, the load balancer performs advanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend. If routeAction specifies any  weightedBackendServices, service must not be set. Conversely if service is set, routeAction cannot contain any  weightedBackendServices.\nOnly one of routeAction or urlRedirect must be set."
+        },
         "service": {
           "description": "The full or partial URL of the backend service resource to which traffic is directed if this rule is matched. If routeAction is additionally specified, advanced routing actions like URL Rewrites, etc. take effect prior to sending the request to the backend. However, if service is specified, routeAction cannot contain any weightedBackendService s. Conversely, if routeAction specifies any  weightedBackendServices, service must not be specified.\nOnly one of urlRedirect, service or routeAction.weightedBackendService must be set.",
           "type": "string"
+        },
+        "urlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "When a path pattern is matched, the request is redirected to a URL specified by urlRedirect.\nIf urlRedirect is specified, service or routeAction must not be set."
         }
       },
       "type": "object"
@@ -37984,6 +40526,40 @@
       },
       "type": "object"
     },
+    "RegionTargetHttpsProxiesSetSslCertificatesRequest": {
+      "id": "RegionTargetHttpsProxiesSetSslCertificatesRequest",
+      "properties": {
+        "sslCertificates": {
+          "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "RegionUrlMapsValidateRequest": {
+      "id": "RegionUrlMapsValidateRequest",
+      "properties": {
+        "resource": {
+          "$ref": "UrlMap",
+          "description": "Content of the UrlMap to be validated."
+        }
+      },
+      "type": "object"
+    },
+    "RequestMirrorPolicy": {
+      "description": "A policy that specifies how requests intended for the route's backends are shadowed to a separate mirrored backend service. Loadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host / authority header is suffixed with -shadow.",
+      "id": "RequestMirrorPolicy",
+      "properties": {
+        "backendService": {
+          "description": "The full or partial URL to the BackendService resource being mirrored to.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Reservation": {
       "description": "Reservation resource",
       "id": "Reservation",
@@ -38044,6 +40620,7 @@
       "id": "ReservationAffinity",
       "properties": {
         "consumeReservationType": {
+          "description": "Specifies the type of reservation from which this instance can consume resources: ANY_RESERVATION (default), SPECIFIC_RESERVATION, or NO_RESERVATION. See  Consuming reserved instances for examples.",
           "enum": [
             "ANY_RESERVATION",
             "NO_RESERVATION",
@@ -39323,7 +41900,7 @@
           "description": "BGP information specific to this router."
         },
         "bgpPeers": {
-          "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
+          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
           "items": {
             "$ref": "RouterBgpPeer"
           },
@@ -39343,7 +41920,7 @@
           "type": "string"
         },
         "interfaces": {
-          "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
+          "description": "Router interfaces. Each interface requires either one linked resource, (for example, linkedVpnTunnel), or IP address and IP address range (for example, ipRange), or both.",
           "items": {
             "$ref": "RouterInterface"
           },
@@ -39365,7 +41942,7 @@
           "type": "string"
         },
         "nats": {
-          "description": "A list of Nat services created in this router.",
+          "description": "A list of NAT services created in this router.",
           "items": {
             "$ref": "RouterNat"
           },
@@ -39523,7 +42100,7 @@
       "id": "RouterBgp",
       "properties": {
         "advertiseMode": {
-          "description": "User-specified flag to indicate which mode to use for advertisement.",
+          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
           "enum": [
             "CUSTOM",
             "DEFAULT"
@@ -39578,7 +42155,7 @@
           "type": "string"
         },
         "advertisedGroups": {
-          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+          "description": "User-specified list of prefix groups to advertise in custom mode, which can take one of the following options: \n- ALL_SUBNETS: Advertises all available subnets, including peer VPC subnets. \n- ALL_VPC_SUBNETS: Advertises the router's own VPC subnets. \n- ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC network. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
           "items": {
             "enum": [
               "ALL_SUBNETS"
@@ -39591,14 +42168,14 @@
           "type": "array"
         },
         "advertisedIpRanges": {
-          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
           "items": {
             "$ref": "RouterAdvertisedIpRange"
           },
           "type": "array"
         },
         "advertisedRoutePriority": {
-          "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
+          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win.",
           "format": "uint32",
           "type": "integer"
         },
@@ -39611,7 +42188,7 @@
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this BGP peer. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this BGP peer. \n- MANAGED_BY_USER is the default value and can be managed by you or other users \n- MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -39628,12 +42205,12 @@
           "type": "string"
         },
         "peerAsn": {
-          "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
+          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value.",
           "format": "uint32",
           "type": "integer"
         },
         "peerIpAddress": {
-          "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported.",
+          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported.",
           "type": "string"
         }
       },
@@ -39643,19 +42220,19 @@
       "id": "RouterInterface",
       "properties": {
         "ipRange": {
-          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
+          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
           "type": "string"
         },
         "linkedInterconnectAttachment": {
-          "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be either be a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "linkedVpnTunnel": {
-          "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be either a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this interface. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this interface. \n- MANAGED_BY_USER is the default value and can be managed directly by users. \n- MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -39800,7 +42377,7 @@
           "description": "Configure logging on this NAT."
         },
         "minPortsPerVm": {
-          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This gets rounded up to the nearest power of 2. Eg. if the value of this field is 50, at least 64 ports will be allocated to a VM.",
+          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM.",
           "format": "int32",
           "type": "integer"
         },
@@ -39810,7 +42387,7 @@
           "type": "string"
         },
         "natIpAllocateOption": {
-          "description": "Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should be empty.",
+          "description": "Specify the NatIpAllocateOption, which can take one of the following values: \n- MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. \n- AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty.",
           "enum": [
             "AUTO_ONLY",
             "MANUAL_ONLY"
@@ -39822,14 +42399,14 @@
           "type": "string"
         },
         "natIps": {
-          "description": "A list of URLs of the IP resources used for this Nat service. These IPs must be valid static external IP addresses assigned to the project. max_length is subject to change post alpha.",
+          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "sourceSubnetworkIpRangesToNat": {
-          "description": "Specify the Nat option. If this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
+          "description": "Specify the Nat option, which can take one of the following values: \n- ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. \n- ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. \n- LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
           "enum": [
             "ALL_SUBNETWORKS_ALL_IP_RANGES",
             "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
@@ -39897,7 +42474,7 @@
       "id": "RouterNatSubnetworkToNat",
       "properties": {
         "name": {
-          "description": "URL for the subnetwork resource to use NAT.",
+          "description": "URL for the subnetwork resource that will use NAT.",
           "type": "string"
         },
         "secondaryIpRangeNames": {
@@ -39908,7 +42485,7 @@
           "type": "array"
         },
         "sourceIpRangesToNat": {
-          "description": "Specify the options for NAT ranges in the Subnetwork. All usages of single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
+          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
           "items": {
             "enum": [
               "ALL_IP_RANGES",
@@ -40909,7 +43486,7 @@
         },
         "snapshotEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
+          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the snapshot.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
         },
         "sourceDisk": {
           "description": "[Output Only] The source disk used to create this snapshot.",
@@ -41137,6 +43714,10 @@
           "description": "A write-only private key in PEM format. Only insert requests will include this field.",
           "type": "string"
         },
+        "region": {
+          "description": "[Output Only] URL of the region where the regional SSL Certificate resides. This field is not applicable to global SSL Certificate.",
+          "type": "string"
+        },
         "selfLink": {
           "description": "[Output only] Server-defined URL for the resource.",
           "type": "string"
@@ -41169,6 +43750,118 @@
       },
       "type": "object"
     },
+    "SslCertificateAggregatedList": {
+      "id": "SslCertificateAggregatedList",
+      "properties": {
+        "id": {
+          "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+          "type": "string"
+        },
+        "items": {
+          "additionalProperties": {
+            "$ref": "SslCertificatesScopedList",
+            "description": "Name of the scope containing this set of SslCertificates."
+          },
+          "description": "A list of SslCertificatesScopedList resources.",
+          "type": "object"
+        },
+        "kind": {
+          "default": "compute#sslCertificateAggregatedList",
+          "description": "[Output Only] Type of resource. Always compute#sslCertificateAggregatedList for lists of SSL Certificates.",
+          "type": "string"
+        },
+        "nextPageToken": {
+          "description": "[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.",
+          "type": "string"
+        },
+        "selfLink": {
+          "description": "[Output Only] Server-defined URL for this resource.",
+          "type": "string"
+        },
+        "warning": {
+          "description": "[Output Only] Informational warning message.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "SslCertificateList": {
       "description": "Contains a list of SslCertificate resources.",
       "id": "SslCertificateList",
@@ -41355,6 +44048,100 @@
       },
       "type": "object"
     },
+    "SslCertificatesScopedList": {
+      "id": "SslCertificatesScopedList",
+      "properties": {
+        "sslCertificates": {
+          "description": "List of SslCertificates contained in this scope.",
+          "items": {
+            "$ref": "SslCertificate"
+          },
+          "type": "array"
+        },
+        "warning": {
+          "description": "Informational warning which replaces the list of backend services when the list is empty.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "SslPoliciesList": {
       "id": "SslPoliciesList",
       "properties": {
@@ -41700,7 +44487,7 @@
         },
         "logConfig": {
           "$ref": "SubnetworkLogConfig",
-          "description": "This field denotes the logging options for the load balancer traffic served by this backend service. If logging is enabled, logs will be exported to Stackdriver."
+          "description": "This field denotes the VPC flow logging options for this subnetwork. If logging is enabled, logs are exported to Stackdriver."
         },
         "name": {
           "description": "The name of the resource, provided by the client when initially creating the resource. 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.",
@@ -41715,10 +44502,36 @@
           "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
           "type": "boolean"
         },
+        "purpose": {
+          "description": "The purpose of the resource. This field can be either PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A subnetwork with purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a user-created subnetwork that is reserved for Internal HTTP(S) Load Balancing. If unspecified, the purpose defaults to PRIVATE_RFC_1918.",
+          "enum": [
+            "INTERNAL_HTTPS_LOAD_BALANCER",
+            "PRIVATE",
+            "PRIVATE_RFC_1918"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
         "region": {
           "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
           "type": "string"
         },
+        "role": {
+          "description": "The role of subnetwork. Currenly, this field is only used when purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can be set to ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being used for Internal HTTP(S) Load Balancing. A BACKUP subnetwork is one that is ready to be promoted to ACTIVE or is currently draining. This field can be updated with a patch request.",
+          "enum": [
+            "ACTIVE",
+            "BACKUP"
+          ],
+          "enumDescriptions": [
+            "",
+            ""
+          ],
+          "type": "string"
+        },
         "secondaryIpRanges": {
           "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges. This field can be updated with a patch request.",
           "items": {
@@ -41729,6 +44542,18 @@
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
+        },
+        "state": {
+          "description": "[Output Only] The state of the subnetwork, which can be one of READY or DRAINING. A subnetwork that is READY is ready to be used. The state of DRAINING is only applicable to subnetworks that have the purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that connections to the load balancer are being drained. A subnetwork that is draining cannot be used or modified until it reaches a status of READY.",
+          "enum": [
+            "DRAINING",
+            "READY"
+          ],
+          "enumDescriptions": [
+            "",
+            ""
+          ],
+          "type": "string"
         }
       },
       "type": "object"
@@ -41986,7 +44811,7 @@
           "type": "boolean"
         },
         "flowSampling": {
-          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5 which means half of all collected logs are reported.",
+          "description": "Can only be specified if VPC flow logging for this subnetwork is enabled. The value of the field must be in [0, 1]. Set the sampling rate of VPC flow logs within the subnetwork where 1.0 means all collected logs are reported and 0.0 means no logs are reported. Default is 0.5, which means half of all collected logs are reported.",
           "format": "float",
           "type": "number"
         },
@@ -42201,6 +45026,100 @@
       },
       "type": "object"
     },
+    "TargetHttpProxiesScopedList": {
+      "id": "TargetHttpProxiesScopedList",
+      "properties": {
+        "targetHttpProxies": {
+          "description": "A list of TargetHttpProxies contained in this scope.",
+          "items": {
+            "$ref": "TargetHttpProxy"
+          },
+          "type": "array"
+        },
+        "warning": {
+          "description": "Informational warning which replaces the list of backend services when the list is empty.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "TargetHttpProxy": {
       "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
       "id": "TargetHttpProxy",
@@ -42228,6 +45147,10 @@
           "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
           "type": "string"
         },
+        "region": {
+          "description": "[Output Only] URL of the region where the regional Target HTTP Proxy resides. This field is not applicable to global Target HTTP Proxies.",
+          "type": "string"
+        },
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
@@ -42239,6 +45162,118 @@
       },
       "type": "object"
     },
+    "TargetHttpProxyAggregatedList": {
+      "id": "TargetHttpProxyAggregatedList",
+      "properties": {
+        "id": {
+          "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+          "type": "string"
+        },
+        "items": {
+          "additionalProperties": {
+            "$ref": "TargetHttpProxiesScopedList",
+            "description": "Name of the scope containing this set of TargetHttpProxies."
+          },
+          "description": "A list of TargetHttpProxiesScopedList resources.",
+          "type": "object"
+        },
+        "kind": {
+          "default": "compute#targetHttpProxyAggregatedList",
+          "description": "[Output Only] Type of resource. Always compute#targetHttpProxyAggregatedList for lists of Target HTTP Proxies.",
+          "type": "string"
+        },
+        "nextPageToken": {
+          "description": "[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.",
+          "type": "string"
+        },
+        "selfLink": {
+          "description": "[Output Only] Server-defined URL for this resource.",
+          "type": "string"
+        },
+        "warning": {
+          "description": "[Output Only] Informational warning message.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "TargetHttpProxyList": {
       "description": "A list of TargetHttpProxy resources.",
       "id": "TargetHttpProxyList",
@@ -42351,6 +45386,100 @@
       },
       "type": "object"
     },
+    "TargetHttpsProxiesScopedList": {
+      "id": "TargetHttpsProxiesScopedList",
+      "properties": {
+        "targetHttpsProxies": {
+          "description": "A list of TargetHttpsProxies contained in this scope.",
+          "items": {
+            "$ref": "TargetHttpsProxy"
+          },
+          "type": "array"
+        },
+        "warning": {
+          "description": "Informational warning which replaces the list of backend services when the list is empty.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "TargetHttpsProxiesSetQuicOverrideRequest": {
       "id": "TargetHttpsProxiesSetQuicOverrideRequest",
       "properties": {
@@ -42425,6 +45554,10 @@
           ],
           "type": "string"
         },
+        "region": {
+          "description": "[Output Only] URL of the region where the regional TargetHttpsProxy resides. This field is not applicable to global TargetHttpsProxies.",
+          "type": "string"
+        },
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
@@ -42447,6 +45580,118 @@
       },
       "type": "object"
     },
+    "TargetHttpsProxyAggregatedList": {
+      "id": "TargetHttpsProxyAggregatedList",
+      "properties": {
+        "id": {
+          "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+          "type": "string"
+        },
+        "items": {
+          "additionalProperties": {
+            "$ref": "TargetHttpsProxiesScopedList",
+            "description": "Name of the scope containing this set of TargetHttpsProxies."
+          },
+          "description": "A list of TargetHttpsProxiesScopedList resources.",
+          "type": "object"
+        },
+        "kind": {
+          "default": "compute#targetHttpsProxyAggregatedList",
+          "description": "[Output Only] Type of resource. Always compute#targetHttpsProxyAggregatedList for lists of Target HTTP Proxies.",
+          "type": "string"
+        },
+        "nextPageToken": {
+          "description": "[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.",
+          "type": "string"
+        },
+        "selfLink": {
+          "description": "[Output Only] Server-defined URL for this resource.",
+          "type": "string"
+        },
+        "warning": {
+          "description": "[Output Only] Informational warning message.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "TargetHttpsProxyList": {
       "description": "Contains a list of TargetHttpsProxy resources.",
       "id": "TargetHttpsProxyList",
@@ -42994,6 +46239,8 @@
             "CLIENT_IP_PORT_PROTO",
             "CLIENT_IP_PROTO",
             "GENERATED_COOKIE",
+            "HEADER_FIELD",
+            "HTTP_COOKIE",
             "NONE"
           ],
           "enumDescriptions": [
@@ -43001,6 +46248,8 @@
             "",
             "",
             "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -44272,10 +47521,18 @@
           "description": "[Output Only] Creation timestamp in RFC3339 text format.",
           "type": "string"
         },
+        "defaultRouteAction": {
+          "$ref": "HttpRouteAction",
+          "description": "defaultRouteAction takes effect when none of the  hostRules match. The load balancer performs advanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService is set, defaultRouteAction cannot contain any  weightedBackendServices.\nOnly one of defaultRouteAction or defaultUrlRedirect must be set."
+        },
         "defaultService": {
           "description": "The full or partial URL of the defaultService resource to which traffic is directed if none of the hostRules match. If defaultRouteAction is additionally specified, advanced routing actions like URL Rewrites, etc. take effect prior to sending the request to the backend. However, if defaultService is specified, defaultRouteAction cannot contain any weightedBackendServices. Conversely, if routeAction specifies any weightedBackendServices, service must not be specified.\nOnly one of defaultService, defaultUrlRedirect  or defaultRouteAction.weightedBackendService must be set.",
           "type": "string"
         },
+        "defaultUrlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "When none of the specified hostRules match, the request is redirected to a URL specified by defaultUrlRedirect.\nIf defaultUrlRedirect is specified, defaultService or defaultRouteAction must not be set."
+        },
         "description": {
           "description": "An optional description of this resource. Provide this property when you create the resource.",
           "type": "string"
@@ -44285,6 +47542,10 @@
           "format": "byte",
           "type": "string"
         },
+        "headerAction": {
+          "$ref": "HttpHeaderAction",
+          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nThe headerAction specified here take effect after headerAction specified under pathMatcher."
+        },
         "hostRules": {
           "description": "The list of HostRules to use against the URL.",
           "items": {
@@ -44314,6 +47575,10 @@
           },
           "type": "array"
         },
+        "region": {
+          "description": "[Output Only] URL of the region where the regional URL map resides. This field is not applicable to global URL maps. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+          "type": "string"
+        },
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
@@ -44499,6 +47764,212 @@
       },
       "type": "object"
     },
+    "UrlMapsAggregatedList": {
+      "id": "UrlMapsAggregatedList",
+      "properties": {
+        "id": {
+          "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+          "type": "string"
+        },
+        "items": {
+          "additionalProperties": {
+            "$ref": "UrlMapsScopedList",
+            "description": "Name of the scope containing this set of UrlMaps."
+          },
+          "description": "A list of UrlMapsScopedList resources.",
+          "type": "object"
+        },
+        "kind": {
+          "default": "compute#urlMapsAggregatedList",
+          "description": "Type of resource.",
+          "type": "string"
+        },
+        "nextPageToken": {
+          "description": "[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.",
+          "type": "string"
+        },
+        "selfLink": {
+          "description": "[Output Only] Server-defined URL for this resource.",
+          "type": "string"
+        },
+        "warning": {
+          "description": "[Output Only] Informational warning message.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "UrlMapsScopedList": {
+      "id": "UrlMapsScopedList",
+      "properties": {
+        "urlMaps": {
+          "description": "A list of UrlMaps contained in this scope.",
+          "items": {
+            "$ref": "UrlMap"
+          },
+          "type": "array"
+        },
+        "warning": {
+          "description": "Informational warning which replaces the list of backend services when the list is empty.",
+          "properties": {
+            "code": {
+              "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+              "enum": [
+                "CLEANUP_FAILED",
+                "DEPRECATED_RESOURCE_USED",
+                "DEPRECATED_TYPE_USED",
+                "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+                "EXPERIMENTAL_TYPE_USED",
+                "EXTERNAL_API_WARNING",
+                "FIELD_VALUE_OVERRIDEN",
+                "INJECTED_KERNELS_DEPRECATED",
+                "MISSING_TYPE_DEPENDENCY",
+                "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",
+                "SCHEMA_VALIDATION_IGNORED",
+                "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+                "UNDECLARED_PROPERTIES",
+                "UNREACHABLE"
+              ],
+              "enumDescriptions": [
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                "",
+                ""
+              ],
+              "type": "string"
+            },
+            "data": {
+              "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+              "items": {
+                "properties": {
+                  "key": {
+                    "description": "[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).",
+                    "type": "string"
+                  },
+                  "value": {
+                    "description": "[Output Only] A warning data value corresponding to the key.",
+                    "type": "string"
+                  }
+                },
+                "type": "object"
+              },
+              "type": "array"
+            },
+            "message": {
+              "description": "[Output Only] A human-readable description of the warning code.",
+              "type": "string"
+            }
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
     "UrlMapsValidateRequest": {
       "id": "UrlMapsValidateRequest",
       "properties": {
@@ -44518,6 +47989,21 @@
       },
       "type": "object"
     },
+    "UrlRewrite": {
+      "description": "The spec for modifying the path before sending the request to the matched backend service.",
+      "id": "UrlRewrite",
+      "properties": {
+        "hostRewrite": {
+          "description": "Prior to forwarding the request to the selected service, the request's host header is replaced with contents of hostRewrite.\nThe value must be between 1 and 255 characters.",
+          "type": "string"
+        },
+        "pathPrefixRewrite": {
+          "description": "Prior to forwarding the request to the selected backend service, the matching portion of the request's path is replaced by pathPrefixRewrite.\nThe value must be between 1 and 1024 characters.",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "UsableSubnetwork": {
       "description": "Subnetwork which the current user has compute.subnetworks.use permission on.",
       "id": "UsableSubnetwork",
@@ -45848,6 +49334,26 @@
       },
       "type": "object"
     },
+    "WeightedBackendService": {
+      "description": "In contrast to a single BackendService in  HttpRouteAction to which all matching traffic is directed to, WeightedBackendService allows traffic to be split across multiple BackendServices. The volume of traffic for each BackendService is proportional to the weight specified in each WeightedBackendService",
+      "id": "WeightedBackendService",
+      "properties": {
+        "backendService": {
+          "description": "The full or partial URL to the default BackendService resource. Before forwarding the request to backendService, the loadbalancer applies any relevant headerActions specified as part of this backendServiceWeight.",
+          "type": "string"
+        },
+        "headerAction": {
+          "$ref": "HttpHeaderAction",
+          "description": "Specifies changes to request and response headers that need to take effect for the selected backendService.\nheaderAction specified here take effect before headerAction in the enclosing HttpRouteRule, PathMatcher and UrlMap."
+        },
+        "weight": {
+          "description": "Specifies the fraction of traffic sent to backendService, computed as weight / (sum of all weightedBackendService weights in routeAction) .\nThe selection of a backend service is determined only for new traffic. Once a user's request has been directed to a backendService, subsequent requests will be sent to the same backendService as determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000",
+          "format": "uint32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "XpnHostList": {
       "id": "XpnHostList",
       "properties": {
diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go
index 5686d6c..1d47d2b 100644
--- a/compute/v0.beta/compute-gen.go
+++ b/compute/v0.beta/compute-gen.go
@@ -173,9 +173,14 @@
 	s.RegionCommitments = NewRegionCommitmentsService(s)
 	s.RegionDiskTypes = NewRegionDiskTypesService(s)
 	s.RegionDisks = NewRegionDisksService(s)
+	s.RegionHealthChecks = NewRegionHealthChecksService(s)
 	s.RegionInstanceGroupManagers = NewRegionInstanceGroupManagersService(s)
 	s.RegionInstanceGroups = NewRegionInstanceGroupsService(s)
 	s.RegionOperations = NewRegionOperationsService(s)
+	s.RegionSslCertificates = NewRegionSslCertificatesService(s)
+	s.RegionTargetHttpProxies = NewRegionTargetHttpProxiesService(s)
+	s.RegionTargetHttpsProxies = NewRegionTargetHttpsProxiesService(s)
+	s.RegionUrlMaps = NewRegionUrlMapsService(s)
 	s.Regions = NewRegionsService(s)
 	s.Reservations = NewReservationsService(s)
 	s.ResourcePolicies = NewResourcePoliciesService(s)
@@ -282,12 +287,22 @@
 
 	RegionDisks *RegionDisksService
 
+	RegionHealthChecks *RegionHealthChecksService
+
 	RegionInstanceGroupManagers *RegionInstanceGroupManagersService
 
 	RegionInstanceGroups *RegionInstanceGroupsService
 
 	RegionOperations *RegionOperationsService
 
+	RegionSslCertificates *RegionSslCertificatesService
+
+	RegionTargetHttpProxies *RegionTargetHttpProxiesService
+
+	RegionTargetHttpsProxies *RegionTargetHttpsProxiesService
+
+	RegionUrlMaps *RegionUrlMapsService
+
 	Regions *RegionsService
 
 	Reservations *ReservationsService
@@ -682,6 +697,15 @@
 	s *Service
 }
 
+func NewRegionHealthChecksService(s *Service) *RegionHealthChecksService {
+	rs := &RegionHealthChecksService{s: s}
+	return rs
+}
+
+type RegionHealthChecksService struct {
+	s *Service
+}
+
 func NewRegionInstanceGroupManagersService(s *Service) *RegionInstanceGroupManagersService {
 	rs := &RegionInstanceGroupManagersService{s: s}
 	return rs
@@ -709,6 +733,42 @@
 	s *Service
 }
 
+func NewRegionSslCertificatesService(s *Service) *RegionSslCertificatesService {
+	rs := &RegionSslCertificatesService{s: s}
+	return rs
+}
+
+type RegionSslCertificatesService struct {
+	s *Service
+}
+
+func NewRegionTargetHttpProxiesService(s *Service) *RegionTargetHttpProxiesService {
+	rs := &RegionTargetHttpProxiesService{s: s}
+	return rs
+}
+
+type RegionTargetHttpProxiesService struct {
+	s *Service
+}
+
+func NewRegionTargetHttpsProxiesService(s *Service) *RegionTargetHttpsProxiesService {
+	rs := &RegionTargetHttpsProxiesService{s: s}
+	return rs
+}
+
+type RegionTargetHttpsProxiesService struct {
+	s *Service
+}
+
+func NewRegionUrlMapsService(s *Service) *RegionUrlMapsService {
+	rs := &RegionUrlMapsService{s: s}
+	return rs
+}
+
+type RegionUrlMapsService struct {
+	s *Service
+}
+
 func NewRegionsService(s *Service) *RegionsService {
 	rs := &RegionsService{s: s}
 	return rs
@@ -4029,8 +4089,36 @@
 	// CdnPolicy: Cloud CDN configuration for this BackendService.
 	CdnPolicy *BackendServiceCdnPolicy `json:"cdnPolicy,omitempty"`
 
+	// CircuitBreakers: Settings controlling the volume of connections to a
+	// backend service.
+	//
+	// This field is applicable to either:
+	// - A regional backend service with the service_protocol set to HTTP,
+	// HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED.
+	//
+	// - A global backend service with the load_balancing_scheme set to
+	// INTERNAL_SELF_MANAGED.
+	CircuitBreakers *CircuitBreakers `json:"circuitBreakers,omitempty"`
+
 	ConnectionDraining *ConnectionDraining `json:"connectionDraining,omitempty"`
 
+	// ConsistentHash: Consistent Hash-based load balancing can be used to
+	// provide soft session affinity based on HTTP headers, cookies or other
+	// properties. This load balancing policy is applicable only for HTTP
+	// connections. The affinity to a particular destination host will be
+	// lost when one or more hosts are added/removed from the destination
+	// service. This field specifies parameters that control consistent
+	// hashing. This field is only applicable when localityLbPolicy is set
+	// to MAGLEV or RING_HASH.
+	//
+	// This field is applicable to either:
+	// - A regional backend service with the service_protocol set to HTTP,
+	// HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED.
+	//
+	// - A global backend service with the load_balancing_scheme set to
+	// INTERNAL_SELF_MANAGED.
+	ConsistentHash *ConsistentHashLoadBalancerSettings `json:"consistentHash,omitempty"`
+
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
@@ -4089,10 +4177,49 @@
 	// Possible values:
 	//   "EXTERNAL"
 	//   "INTERNAL"
+	//   "INTERNAL_MANAGED"
 	//   "INTERNAL_SELF_MANAGED"
 	//   "INVALID_LOAD_BALANCING_SCHEME"
 	LoadBalancingScheme string `json:"loadBalancingScheme,omitempty"`
 
+	// LocalityLbPolicy: The load balancing algorithm used within the scope
+	// of the locality. The possible values are:
+	// - ROUND_ROBIN: This is a simple policy in which each healthy backend
+	// is selected in round robin order. This is the default.
+	// - LEAST_REQUEST: An O(1) algorithm which selects two random healthy
+	// hosts and picks the host which has fewer active requests.
+	// - RING_HASH: The ring/modulo hash load balancer implements consistent
+	// hashing to backends. The algorithm has the property that the
+	// addition/removal of a host from a set of N hosts only affects 1/N of
+	// the requests.
+	// - RANDOM: The load balancer selects a random healthy host.
+	// - ORIGINAL_DESTINATION: Backend host is selected based on the client
+	// connection metadata, i.e., connections are opened to the same address
+	// as the destination address of the incoming connection before the
+	// connection was redirected to the load balancer.
+	// - MAGLEV: used as a drop in replacement for the ring hash load
+	// balancer. Maglev is not as stable as ring hash but has faster table
+	// lookup build times and host selection times. For more information
+	// about Maglev, refer to https://ai.google/research/pubs/pub44824
+	//
+	//
+	// This field is applicable to either:
+	// - A regional backend service with the service_protocol set to HTTP,
+	// HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED.
+	//
+	// - A global backend service with the load_balancing_scheme set to
+	// INTERNAL_SELF_MANAGED.
+	//
+	// Possible values:
+	//   "INVALID_LB_POLICY"
+	//   "LEAST_REQUEST"
+	//   "MAGLEV"
+	//   "ORIGINAL_DESTINATION"
+	//   "RANDOM"
+	//   "RING_HASH"
+	//   "ROUND_ROBIN"
+	LocalityLbPolicy string `json:"localityLbPolicy,omitempty"`
+
 	// LogConfig: This field denotes the logging options for the load
 	// balancer traffic served by this backend service. If logging is
 	// enabled, logs will be exported to Stackdriver.
@@ -4107,6 +4234,15 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
+	// OutlierDetection: Settings controlling eviction of unhealthy hosts
+	// from the load balancing pool. This field is applicable to either:
+	// - A regional backend service with the service_protocol set to HTTP,
+	// HTTPS, or HTTP2, and load_balancing_scheme set to INTERNAL_MANAGED.
+	//
+	// - A global backend service with the load_balancing_scheme set to
+	// INTERNAL_SELF_MANAGED.
+	OutlierDetection *OutlierDetection `json:"outlierDetection,omitempty"`
+
 	// Port: Deprecated in favor of portName. The TCP port to connect on the
 	// backend. The default value is 80.
 	//
@@ -4167,6 +4303,8 @@
 	//   "CLIENT_IP_PORT_PROTO"
 	//   "CLIENT_IP_PROTO"
 	//   "GENERATED_COOKIE"
+	//   "HEADER_FIELD"
+	//   "HTTP_COOKIE"
 	//   "NONE"
 	SessionAffinity string `json:"sessionAffinity,omitempty"`
 
@@ -5064,6 +5202,58 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// CircuitBreakers: Settings controlling the volume of connections to a
+// backend service.
+type CircuitBreakers struct {
+	// ConnectTimeout: The timeout for new network connections to hosts.
+	ConnectTimeout *Duration `json:"connectTimeout,omitempty"`
+
+	// MaxConnections: The maximum number of connections to the backend
+	// cluster. If not specified, the default is 1024.
+	MaxConnections int64 `json:"maxConnections,omitempty"`
+
+	// MaxPendingRequests: The maximum number of pending requests allowed to
+	// the backend cluster. If not specified, the default is 1024.
+	MaxPendingRequests int64 `json:"maxPendingRequests,omitempty"`
+
+	// MaxRequests: The maximum number of parallel requests that allowed to
+	// the backend cluster. If not specified, the default is 1024.
+	MaxRequests int64 `json:"maxRequests,omitempty"`
+
+	// MaxRequestsPerConnection: Maximum requests for a single backend
+	// connection. This parameter is respected by both the HTTP/1.1 and
+	// HTTP/2 implementations. If not specified, there is no limit. Setting
+	// this parameter to 1 will effectively disable keep alive.
+	MaxRequestsPerConnection int64 `json:"maxRequestsPerConnection,omitempty"`
+
+	// MaxRetries: The maximum number of parallel retries allowed to the
+	// backend cluster. If not specified, the default is 3.
+	MaxRetries int64 `json:"maxRetries,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ConnectTimeout") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ConnectTimeout") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CircuitBreakers) MarshalJSON() ([]byte, error) {
+	type NoMethod CircuitBreakers
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Commitment: 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
@@ -5716,6 +5906,155 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// ConsistentHashLoadBalancerSettings: This message defines settings for
+// a consistent hash style load balancer.
+type ConsistentHashLoadBalancerSettings struct {
+	// HttpCookie: Hash is based on HTTP Cookie. This field describes a HTTP
+	// cookie that will be used as the hash key for the consistent hash load
+	// balancer. If the cookie is not present, it will be generated. This
+	// field is applicable if the sessionAffinity is set to HTTP_COOKIE.
+	HttpCookie *ConsistentHashLoadBalancerSettingsHttpCookie `json:"httpCookie,omitempty"`
+
+	// HttpHeaderName: The hash based on the value of the specified header
+	// field. This field is applicable if the sessionAffinity is set to
+	// HEADER_FIELD.
+	HttpHeaderName string `json:"httpHeaderName,omitempty"`
+
+	// MinimumRingSize: The minimum number of virtual nodes to use for the
+	// hash ring. Defaults to 1024. Larger ring sizes result in more
+	// granular load distributions. If the number of hosts in the load
+	// balancing pool is larger than the ring size, each host will be
+	// assigned a single virtual node.
+	MinimumRingSize int64 `json:"minimumRingSize,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "HttpCookie") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HttpCookie") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ConsistentHashLoadBalancerSettings) MarshalJSON() ([]byte, error) {
+	type NoMethod ConsistentHashLoadBalancerSettings
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// ConsistentHashLoadBalancerSettingsHttpCookie: The information about
+// the HTTP Cookie on which the hash function is based for load
+// balancing policies that use a consistent hash.
+type ConsistentHashLoadBalancerSettingsHttpCookie struct {
+	// Name: Name of the cookie.
+	Name string `json:"name,omitempty"`
+
+	// Path: Path to set for the cookie.
+	Path string `json:"path,omitempty"`
+
+	// Ttl: Lifetime of the cookie.
+	Ttl *Duration `json:"ttl,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Name") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *ConsistentHashLoadBalancerSettingsHttpCookie) MarshalJSON() ([]byte, error) {
+	type NoMethod ConsistentHashLoadBalancerSettingsHttpCookie
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// CorsPolicy: The specification for allowing client side cross-origin
+// requests. Please see W3C Recommendation for Cross Origin Resource
+// Sharing
+type CorsPolicy struct {
+	// AllowCredentials: In response to a preflight request, setting this to
+	// true indicates that the actual request can include user credentials.
+	// This translates to the Access-Control-Allow-Credentials
+	// header.
+	// Default is false.
+	AllowCredentials bool `json:"allowCredentials,omitempty"`
+
+	// AllowHeaders: Specifies the content for the
+	// Access-Control-Allow-Headers header.
+	AllowHeaders []string `json:"allowHeaders,omitempty"`
+
+	// AllowMethods: Specifies the content for the
+	// Access-Control-Allow-Methods header.
+	AllowMethods []string `json:"allowMethods,omitempty"`
+
+	// AllowOriginRegexes: Specifies the regualar expression patterns that
+	// match allowed origins. For regular expression grammar please see
+	// en.cppreference.com/w/cpp/regex/ecmascript
+	// An origin is allowed if it matches either allow_origins or
+	// allow_origin_regex.
+	AllowOriginRegexes []string `json:"allowOriginRegexes,omitempty"`
+
+	// AllowOrigins: Specifies the list of origins that will be allowed to
+	// do CORS requests.
+	// An origin is allowed if it matches either allow_origins or
+	// allow_origin_regex.
+	AllowOrigins []string `json:"allowOrigins,omitempty"`
+
+	// Disabled: If true, specifies the CORS policy is disabled. The default
+	// value of false, which indicates that the CORS policy is in effect.
+	Disabled bool `json:"disabled,omitempty"`
+
+	// ExposeHeaders: Specifies the content for the
+	// Access-Control-Expose-Headers header.
+	ExposeHeaders []string `json:"exposeHeaders,omitempty"`
+
+	// MaxAge: Specifies how long the results of a preflight request can be
+	// cached. This translates to the content for the Access-Control-Max-Age
+	// header.
+	MaxAge int64 `json:"maxAge,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AllowCredentials") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "AllowCredentials") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *CorsPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod CorsPolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // CustomerEncryptionKey: Represents a customer-supplied encryption key
 type CustomerEncryptionKey struct {
 	// KmsKeyName: The name of the encryption key that is stored in Google
@@ -5881,8 +6220,8 @@
 	//
 	// After you encrypt a disk with a customer-supplied key, you must
 	// provide the same key if you use the disk later (e.g. to create a disk
-	// snapshot or an image, or to attach the disk to a virtual
-	// machine).
+	// snapshot, to create a disk image, to create a machine image, or to
+	// attach the disk to a virtual machine).
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
 	// of the disk.
@@ -6069,11 +6408,11 @@
 
 	// Type: URL of the disk type resource describing which disk type to use
 	// to create the disk. Provide this when creating the disk. For example:
-	// project/zones/zone/diskTypes/pd-standard or pd-ssd
+	// projects/project/zones/zone/diskTypes/pd-standard or pd-ssd
 	Type string `json:"type,omitempty"`
 
 	// Users: [Output Only] Links to the users of the disk (attached
-	// instances) in form: project/zones/zone/instances/instance
+	// instances) in form: projects/project/zones/zone/instances/instance
 	Users []string `json:"users,omitempty"`
 
 	// Zone: [Output Only] URL of the zone where the disk resides. You must
@@ -7347,6 +7686,45 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Duration: A Duration represents a fixed-length span of time
+// represented as a count of seconds and fractions of seconds at
+// nanosecond resolution. It is independent of any calendar and concepts
+// like "day" or "month". Range is approximately 10,000 years.
+type Duration struct {
+	// Nanos: Span of time that's a fraction of a second at nanosecond
+	// resolution. Durations less than one second are represented with a 0
+	// `seconds` field and a positive `nanos` field. Must be from 0 to
+	// 999,999,999 inclusive.
+	Nanos int64 `json:"nanos,omitempty"`
+
+	// Seconds: Span of time at a resolution of a second. Must be from 0 to
+	// 315,576,000,000 inclusive. Note: these bounds are computed from: 60
+	// sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+	Seconds int64 `json:"seconds,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "Nanos") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Nanos") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Duration) MarshalJSON() ([]byte, error) {
+	type NoMethod Duration
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type ExchangedPeeringRoute struct {
 	// DestRange: The destination range of the route.
 	DestRange string `json:"destRange,omitempty"`
@@ -8520,10 +8898,28 @@
 	// Possible values:
 	//   "EXTERNAL"
 	//   "INTERNAL"
+	//   "INTERNAL_MANAGED"
 	//   "INTERNAL_SELF_MANAGED"
 	//   "INVALID"
 	LoadBalancingScheme string `json:"loadBalancingScheme,omitempty"`
 
+	// MetadataFilters: Opaque filter criteria used by Loadbalancer to
+	// restrict routing configuration to a limited set xDS compliant
+	// clients. In their xDS requests to Loadbalancer, xDS clients present
+	// node metadata. If a match takes place, the relevant routing
+	// configuration is made available to those proxies.
+	// For each metadataFilter in this list, if its filterMatchCriteria is
+	// set to MATCH_ANY, at least one of the filterLabels must match the
+	// corresponding label provided in the metadata. If its
+	// filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels
+	// must match with corresponding labels in the provided
+	// metadata.
+	// metadataFilters specified here can be overridden by those specified
+	// in the UrlMap that this ForwardingRule references.
+	// metadataFilters only applies to Loadbalancers that have their
+	// loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+	MetadataFilters []*MetadataFilter `json:"metadataFilters,omitempty"`
+
 	// Name: 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
@@ -9653,6 +10049,10 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
+	// Region: [Output Only] Region where the health check resides. Not
+	// applicable to global health checks.
+	Region string `json:"region,omitempty"`
+
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
@@ -9898,6 +10298,293 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type HealthChecksAggregatedList struct {
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id string `json:"id,omitempty"`
+
+	// Items: A list of HealthChecksScopedList resources.
+	Items map[string]HealthChecksScopedList `json:"items,omitempty"`
+
+	// Kind: Type of resource.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [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.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// Warning: [Output Only] Informational warning message.
+	Warning *HealthChecksAggregatedListWarning `json:"warning,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksAggregatedList) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksAggregatedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HealthChecksAggregatedListWarning: [Output Only] Informational
+// warning message.
+type HealthChecksAggregatedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*HealthChecksAggregatedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksAggregatedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksAggregatedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type HealthChecksAggregatedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksAggregatedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type HealthChecksScopedList struct {
+	// HealthChecks: A list of HealthChecks contained in this scope.
+	HealthChecks []*HealthCheck `json:"healthChecks,omitempty"`
+
+	// Warning: Informational warning which replaces the list of backend
+	// services when the list is empty.
+	Warning *HealthChecksScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HealthChecks") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HealthChecks") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksScopedList) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksScopedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HealthChecksScopedListWarning: Informational warning which replaces
+// the list of backend services when the list is empty.
+type HealthChecksScopedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*HealthChecksScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksScopedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksScopedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type HealthChecksScopedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HealthChecksScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod HealthChecksScopedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type HealthStatus struct {
 	// HealthState: Health state of the instance.
 	//
@@ -10025,6 +10712,313 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// HttpFaultAbort: Specification for how requests are aborted as part of
+// fault injection.
+type HttpFaultAbort struct {
+	// HttpStatus: The HTTP status code used to abort the request.
+	// The value must be between 200 and 599 inclusive.
+	HttpStatus int64 `json:"httpStatus,omitempty"`
+
+	// Percentage: The percentage of traffic
+	// (connections/operations/requests) which will be aborted as part of
+	// fault injection.
+	// The value must be between 0.0 and 100.0 inclusive.
+	Percentage float64 `json:"percentage,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HttpStatus") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HttpStatus") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpFaultAbort) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpFaultAbort
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *HttpFaultAbort) UnmarshalJSON(data []byte) error {
+	type NoMethod HttpFaultAbort
+	var s1 struct {
+		Percentage gensupport.JSONFloat64 `json:"percentage"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Percentage = float64(s1.Percentage)
+	return nil
+}
+
+// HttpFaultDelay: Specifies the delay introduced by Loadbalancer before
+// forwarding the request to the backend service as part of fault
+// injection.
+type HttpFaultDelay struct {
+	// FixedDelay: Specifies the value of the fixed delay interval.
+	FixedDelay *Duration `json:"fixedDelay,omitempty"`
+
+	// Percentage: The percentage of traffic
+	// (connections/operations/requests) on which delay will be introduced
+	// as part of fault injection.
+	// The value must be between 0.0 and 100.0 inclusive.
+	Percentage float64 `json:"percentage,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FixedDelay") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FixedDelay") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpFaultDelay) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpFaultDelay
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+func (s *HttpFaultDelay) UnmarshalJSON(data []byte) error {
+	type NoMethod HttpFaultDelay
+	var s1 struct {
+		Percentage gensupport.JSONFloat64 `json:"percentage"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Percentage = float64(s1.Percentage)
+	return nil
+}
+
+// HttpFaultInjection: The specification for fault injection introduced
+// into traffic to test the resiliency of clients to backend service
+// failure. As part of fault injection, when clients send requests to a
+// backend service, delays can be introduced by Loadbalancer on a
+// percentage of requests before sending those request to the backend
+// service. Similarly requests from clients can be aborted by the
+// Loadbalancer for a percentage of requests.
+type HttpFaultInjection struct {
+	// Abort: The specification for how client requests are aborted as part
+	// of fault injection.
+	Abort *HttpFaultAbort `json:"abort,omitempty"`
+
+	// Delay: The specification for how client requests are delayed as part
+	// of fault injection, before being sent to a backend service.
+	Delay *HttpFaultDelay `json:"delay,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Abort") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Abort") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpFaultInjection) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpFaultInjection
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpHeaderAction: The request and response header transformations
+// that take effect before the request is passed along to the selected
+// backendService.
+type HttpHeaderAction struct {
+	// RequestHeadersToAdd: Headers to add to a matching request prior to
+	// forwarding the request to the backendService.
+	RequestHeadersToAdd []*HttpHeaderOption `json:"requestHeadersToAdd,omitempty"`
+
+	// RequestHeadersToRemove: A list of header names for headers that need
+	// to be removed from the request prior to forwarding the request to the
+	// backendService.
+	RequestHeadersToRemove []string `json:"requestHeadersToRemove,omitempty"`
+
+	// ResponseHeadersToAdd: Headers to add the response prior to sending
+	// the response back to the client.
+	ResponseHeadersToAdd []*HttpHeaderOption `json:"responseHeadersToAdd,omitempty"`
+
+	// ResponseHeadersToRemove: A list of header names for headers that need
+	// to be removed from the response prior to sending the response back to
+	// the client.
+	ResponseHeadersToRemove []string `json:"responseHeadersToRemove,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "RequestHeadersToAdd")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "RequestHeadersToAdd") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpHeaderAction) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpHeaderAction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpHeaderMatch: matchRule criteria for request header matches.
+type HttpHeaderMatch struct {
+	// ExactMatch: The value should exactly match contents of
+	// exactMatch.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	ExactMatch string `json:"exactMatch,omitempty"`
+
+	// HeaderName: The name of the HTTP header to match.
+	// For matching against the HTTP request's authority, use a headerMatch
+	// with the header name ":authority".
+	// For matching a request's method, use the headerName ":method".
+	HeaderName string `json:"headerName,omitempty"`
+
+	// InvertMatch: If set to false, the headerMatch is considered a match
+	// if the match criteria above are met. If set to true, the headerMatch
+	// is considered a match if the match criteria above are NOT met.
+	// The default setting is false.
+	InvertMatch bool `json:"invertMatch,omitempty"`
+
+	// PrefixMatch: The value of the header must start with the contents of
+	// prefixMatch.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	PrefixMatch string `json:"prefixMatch,omitempty"`
+
+	// PresentMatch: A header with the contents of headerName must exist.
+	// The match takes place whether or not the request's header has a value
+	// or not.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	PresentMatch bool `json:"presentMatch,omitempty"`
+
+	// RangeMatch: The header value must be an integer and its value must be
+	// in the range specified in rangeMatch. If the header does not contain
+	// an integer, number or is empty, the match fails.
+	// For example for a range [-5, 0]
+	// - -3 will match.
+	// - 0 will not match.
+	// - 0.25 will not match.
+	// - -3someString will not match.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	RangeMatch *Int64RangeMatch `json:"rangeMatch,omitempty"`
+
+	// RegexMatch: The value of the header must match the regualar
+	// expression specified in regexMatch. For regular expression grammar,
+	// please see:  en.cppreference.com/w/cpp/regex/ecmascript
+	// For matching against a port specified in the HTTP request, use a
+	// headerMatch with headerName set to PORT and a regular expression that
+	// satisfies the RFC2616 Host header's port specifier.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	RegexMatch string `json:"regexMatch,omitempty"`
+
+	// SuffixMatch: The value of the header must end with the contents of
+	// suffixMatch.
+	// Only one of exactMatch, prefixMatch, suffixMatch, regexMatch,
+	// presentMatch or rangeMatch must be set.
+	SuffixMatch string `json:"suffixMatch,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExactMatch") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExactMatch") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpHeaderMatch) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpHeaderMatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpHeaderOption: Specification determining how headers are added to
+// requests or responses.
+type HttpHeaderOption struct {
+	// HeaderName: The name of the header.
+	HeaderName string `json:"headerName,omitempty"`
+
+	// HeaderValue: The value of the header to add.
+	HeaderValue string `json:"headerValue,omitempty"`
+
+	// Replace: If false, headerValue is appended to any values that already
+	// exist for the header. If true, headerValue is set for the header,
+	// discarding any values that were set for that header.
+	// The default value is false.
+	Replace bool `json:"replace,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HeaderName") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HeaderName") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpHeaderOption) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpHeaderOption
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // HttpHealthCheck: An HttpHealthCheck resource. This resource defines a
 // template for how individual instances should be checked for health,
 // via HTTP.
@@ -10271,6 +11265,408 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// HttpQueryParameterMatch: HttpRouteRuleMatch criteria for a request's
+// query parameter.
+type HttpQueryParameterMatch struct {
+	// ExactMatch: The queryParameterMatch matches if the value of the
+	// parameter exactly matches the contents of exactMatch.
+	// Only one of presentMatch, exactMatch and regexMatch must be set.
+	ExactMatch string `json:"exactMatch,omitempty"`
+
+	// Name: The name of the query parameter to match. The query parameter
+	// must exist in the request, in the absence of which the request match
+	// fails.
+	Name string `json:"name,omitempty"`
+
+	// PresentMatch: Specifies that the queryParameterMatch matches if the
+	// request contains the query parameter, irrespective of whether the
+	// parameter has a value or not.
+	// Only one of presentMatch, exactMatch and regexMatch must be set.
+	PresentMatch bool `json:"presentMatch,omitempty"`
+
+	// RegexMatch: The queryParameterMatch matches if the value of the
+	// parameter matches the regular expression specified by regexMatch. For
+	// the regular expression grammar, please see
+	// en.cppreference.com/w/cpp/regex/ecmascript
+	// Only one of presentMatch, exactMatch and regexMatch must be set.
+	RegexMatch string `json:"regexMatch,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "ExactMatch") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ExactMatch") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpQueryParameterMatch) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpQueryParameterMatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpRedirectAction: Specifies settings for an HTTP redirect.
+type HttpRedirectAction struct {
+	// HostRedirect: The host that will be used in the redirect response
+	// instead of the one that was supplied in the request.
+	// The value must be between 1 and 255 characters.
+	HostRedirect string `json:"hostRedirect,omitempty"`
+
+	// HttpsRedirect: If set to true, the URL scheme in the redirected
+	// request is set to https. If set to false, the URL scheme of the
+	// redirected request will remain the same as that of the request.
+	// This must only be set for UrlMaps used in TargetHttpProxys. Setting
+	// this true for TargetHttpsProxy is not permitted.
+	// The default is set to false.
+	HttpsRedirect bool `json:"httpsRedirect,omitempty"`
+
+	// PathRedirect: The path that will be used in the redirect response
+	// instead of the one that was supplied in the request.
+	// Only one of pathRedirect or prefixRedirect must be specified.
+	// The value must be between 1 and 1024 characters.
+	PathRedirect string `json:"pathRedirect,omitempty"`
+
+	// PrefixRedirect: The prefix that replaces the prefixMatch specified in
+	// the HttpRouteRuleMatch, retaining the remaining portion of the URL
+	// before redirecting the request.
+	PrefixRedirect string `json:"prefixRedirect,omitempty"`
+
+	// RedirectResponseCode: The HTTP Status code to use for this
+	// RedirectAction.
+	// Supported values are:
+	// - MOVED_PERMANENTLY_DEFAULT, which is the default value and
+	// corresponds to 301.
+	// - FOUND, which corresponds to 302.
+	// - SEE_OTHER which corresponds to 303.
+	// - TEMPORARY_REDIRECT, which corresponds to 307. In this case, the
+	// request method will be retained.
+	// - PERMANENT_REDIRECT, which corresponds to 308. In this case, the
+	// request method will be retained.
+	//
+	// Possible values:
+	//   "FOUND"
+	//   "MOVED_PERMANENTLY_DEFAULT"
+	//   "PERMANENT_REDIRECT"
+	//   "SEE_OTHER"
+	//   "TEMPORARY_REDIRECT"
+	RedirectResponseCode string `json:"redirectResponseCode,omitempty"`
+
+	// StripQuery: If set to true, any accompanying query portion of the
+	// original URL is removed prior to redirecting the request. If set to
+	// false, the query portion of the original URL is retained.
+	// The default is set to false.
+	StripQuery bool `json:"stripQuery,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HostRedirect") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HostRedirect") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpRedirectAction) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpRedirectAction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpRetryPolicy: The retry policy associates with HttpRouteRule
+type HttpRetryPolicy struct {
+	// NumRetries: Specifies the allowed number retries. This number must be
+	// > 0.
+	NumRetries int64 `json:"numRetries,omitempty"`
+
+	// PerTryTimeout: Specifies a non-zero timeout per retry attempt.
+	PerTryTimeout *Duration `json:"perTryTimeout,omitempty"`
+
+	// RetryConditions: Specfies one or more conditions when this retry rule
+	// applies. Valid values are:
+	// - 5xx: Loadbalancer will attempt a retry if the backend service
+	// responds with any 5xx response code, or if the backend service does
+	// not respond at all, example: disconnects, reset, read timeout,
+	// connection failure, and refused streams.
+	// - gateway-error: Similar to 5xx, but only applies to response codes
+	// 502, 503 or 504.
+	// -
+	// - connect-failure: Loadbalancer will retry on failures connecting to
+	// backend services, for example due to connection timeouts.
+	// - retriable-4xx: Loadbalancer will retry for retriable 4xx response
+	// codes. Currently the only retriable error supported is 409.
+	// - refused-stream:Loadbalancer will retry if the backend service
+	// resets the stream with a REFUSED_STREAM error code. This reset type
+	// indicates that it is safe to retry.
+	// - cancelledLoadbalancer will retry if the gRPC status code in the
+	// response header is set to cancelled
+	// - deadline-exceeded: Loadbalancer will retry if the gRPC status code
+	// in the response header is set to deadline-exceeded
+	// - resource-exhausted: Loadbalancer will retry if the gRPC status code
+	// in the response header is set to resource-exhausted
+	// - unavailable: Loadbalancer will retry if the gRPC status code in the
+	// response header is set to unavailable
+	RetryConditions []string `json:"retryConditions,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "NumRetries") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "NumRetries") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpRetryPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpRetryPolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type HttpRouteAction struct {
+	// CorsPolicy: The specification for allowing client side cross-origin
+	// requests. Please see W3C Recommendation for Cross Origin Resource
+	// Sharing
+	CorsPolicy *CorsPolicy `json:"corsPolicy,omitempty"`
+
+	// FaultInjectionPolicy: The specification for fault injection
+	// introduced into traffic to test the resiliency of clients to backend
+	// service failure. As part of fault injection, when clients send
+	// requests to a backend service, delays can be introduced by
+	// Loadbalancer on a percentage of requests before sending those request
+	// to the backend service. Similarly requests from clients can be
+	// aborted by the Loadbalancer for a percentage of requests.
+	// timeout and retry_policy will be ignored by clients that are
+	// configured with a fault_injection_policy.
+	FaultInjectionPolicy *HttpFaultInjection `json:"faultInjectionPolicy,omitempty"`
+
+	// RequestMirrorPolicy: Specifies the policy on how requests intended
+	// for the route's backends are shadowed to a separate mirrored backend
+	// service. Loadbalancer does not wait for responses from the shadow
+	// service. Prior to sending traffic to the shadow service, the host /
+	// authority header is suffixed with -shadow.
+	RequestMirrorPolicy *RequestMirrorPolicy `json:"requestMirrorPolicy,omitempty"`
+
+	// RetryPolicy: Specifies the retry policy associated with this route.
+	RetryPolicy *HttpRetryPolicy `json:"retryPolicy,omitempty"`
+
+	// Timeout: Specifies the timeout for the selected route. Timeout is
+	// computed from the time the request is has been fully processed (i.e.
+	// end-of-stream) up until the response has been completely processed.
+	// Timeout includes all retries.
+	// If not specified, the default value is 15 seconds.
+	Timeout *Duration `json:"timeout,omitempty"`
+
+	// UrlRewrite: The spec to modify the URL of the request, prior to
+	// forwarding the request to the matched service
+	UrlRewrite *UrlRewrite `json:"urlRewrite,omitempty"`
+
+	// WeightedBackendServices: A list of weighted backend services to send
+	// traffic to when a route match occurs. The weights determine the
+	// fraction of traffic that flows to their corresponding backend
+	// service. If all traffic needs to go to a single backend service,
+	// there must be one  weightedBackendService with weight set to a non 0
+	// number.
+	// Once a backendService is identified and before forwarding the request
+	// to the backend service, advanced routing actions like Url rewrites
+	// and header transformations are applied depending on additional
+	// settings specified in this HttpRouteAction.
+	WeightedBackendServices []*WeightedBackendService `json:"weightedBackendServices,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "CorsPolicy") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "CorsPolicy") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpRouteAction) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpRouteAction
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpRouteRule: An HttpRouteRule specifies how to match an HTTP
+// request and the corresponding routing action that load balancing
+// proxies will perform.
+type HttpRouteRule struct {
+	// HeaderAction: Specifies changes to request and response headers that
+	// need to take effect for the selected backendService.
+	// The headerAction specified here are applied before the matching
+	// pathMatchers[].headerAction and after
+	// pathMatchers[].routeRules[].routeAction.weightedBackendService.backend
+	// ServiceWeightAction[].headerAction
+	HeaderAction *HttpHeaderAction `json:"headerAction,omitempty"`
+
+	MatchRules []*HttpRouteRuleMatch `json:"matchRules,omitempty"`
+
+	// RouteAction: In response to a matching matchRule, the load balancer
+	// performs advanced routing actions like URL rewrites, header
+	// transformations, etc. prior to forwarding the request to the selected
+	// backend. If  routeAction specifies any  weightedBackendServices,
+	// service must not be set. Conversely if service is set, routeAction
+	// cannot contain any  weightedBackendServices.
+	// Only one of routeAction or urlRedirect must be set.
+	RouteAction *HttpRouteAction `json:"routeAction,omitempty"`
+
+	// Service: The full or partial URL of the backend service resource to
+	// which traffic is directed if this rule is matched. If routeAction is
+	// additionally specified, advanced routing actions like URL Rewrites,
+	// etc. take effect prior to sending the request to the backend.
+	// However, if service is specified, routeAction cannot contain any
+	// weightedBackendService s. Conversely, if routeAction specifies any
+	// weightedBackendServices, service must not be specified.
+	// Only one of urlRedirect, service or
+	// routeAction.weightedBackendService must be set.
+	Service string `json:"service,omitempty"`
+
+	// UrlRedirect: When this rule is matched, the request is redirected to
+	// a URL specified by urlRedirect.
+	// If urlRedirect is specified, service or routeAction must not be set.
+	UrlRedirect *HttpRedirectAction `json:"urlRedirect,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HeaderAction") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HeaderAction") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpRouteRule) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpRouteRule
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// HttpRouteRuleMatch: HttpRouteRuleMatch specifies a set of criteria
+// for matching requests to an HttpRouteRule. All specified criteria
+// must be satisfied for a match to occur.
+type HttpRouteRuleMatch struct {
+	// FullPathMatch: For satifying the matchRule condition, the path of the
+	// request must exactly match the value specified in fullPathMatch after
+	// removing any query parameters and anchor that may be part of the
+	// original URL.
+	// FullPathMatch must be between 1 and 1024 characters.
+	// Only one of prefixMatch, fullPathMatch or regexMatch must be
+	// specified.
+	FullPathMatch string `json:"fullPathMatch,omitempty"`
+
+	// HeaderMatches: Specifies a list of header match criteria, all of
+	// which must match corresponding headers in the request.
+	HeaderMatches []*HttpHeaderMatch `json:"headerMatches,omitempty"`
+
+	// IgnoreCase: Specifies that prefixMatch and fullPathMatch matches are
+	// case sensitive.
+	// The default value is false.
+	// caseSensitive must not be used with regexMatch.
+	IgnoreCase bool `json:"ignoreCase,omitempty"`
+
+	// MetadataFilters: Opaque filter criteria used by Loadbalancer to
+	// restrict routing configuration to a limited set xDS compliant
+	// clients. In their xDS requests to Loadbalancer, xDS clients present
+	// node metadata. If a match takes place, the relevant routing
+	// configuration is made available to those proxies.
+	// For each metadataFilter in this list, if its filterMatchCriteria is
+	// set to MATCH_ANY, at least one of the filterLabels must match the
+	// corresponding label provided in the metadata. If its
+	// filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels
+	// must match with corresponding labels in the provided
+	// metadata.
+	// metadataFilters specified here can be overrides those specified in
+	// ForwardingRule that refers to this UrlMap.
+	// metadataFilters only applies to Loadbalancers that have their
+	// loadBalancingScheme set to INTERNAL_SELF_MANAGED.
+	MetadataFilters []*MetadataFilter `json:"metadataFilters,omitempty"`
+
+	// PrefixMatch: For satifying the matchRule condition, the request's
+	// path must begin with the specified prefixMatch. prefixMatch must
+	// begin with a /.
+	// The value must be between 1 and 1024 characters.
+	// Only one of prefixMatch, fullPathMatch or regexMatch must be
+	// specified.
+	PrefixMatch string `json:"prefixMatch,omitempty"`
+
+	// QueryParameterMatches: Specifies a list of query parameter match
+	// criteria, all of which must match corresponding query parameters in
+	// the request.
+	QueryParameterMatches []*HttpQueryParameterMatch `json:"queryParameterMatches,omitempty"`
+
+	// RegexMatch: For satifying the matchRule condition, the path of the
+	// request must satisfy the regular expression specified in regexMatch
+	// after removing any query parameters and anchor supplied with the
+	// original URL. For regular expression grammar please see
+	// en.cppreference.com/w/cpp/regex/ecmascript
+	// Only one of prefixMatch, fullPathMatch or regexMatch must be
+	// specified.
+	RegexMatch string `json:"regexMatch,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FullPathMatch") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FullPathMatch") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *HttpRouteRuleMatch) MarshalJSON() ([]byte, error) {
+	type NoMethod HttpRouteRuleMatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // HttpsHealthCheck: An HttpsHealthCheck resource. This resource defines
 // a template for how individual instances should be checked for health,
 // via HTTPS.
@@ -10688,6 +12084,10 @@
 	//   "READY"
 	Status string `json:"status,omitempty"`
 
+	// StorageLocations: GCS bucket storage location of the image (regional
+	// or multi-regional).
+	StorageLocations []string `json:"storageLocations,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -10727,8 +12127,9 @@
 	//   "TAR"
 	ContainerType string `json:"containerType,omitempty"`
 
-	// Sha1Checksum: An optional SHA1 checksum of the disk image before
-	// unpackaging provided by the client when the disk image is created.
+	// Sha1Checksum: [Deprecated] This field is deprecated. An optional SHA1
+	// checksum of the disk image before unpackaging provided by the client
+	// when the disk image is created.
 	Sha1Checksum string `json:"sha1Checksum,omitempty"`
 
 	// Source: The full Google Cloud Storage URL where the disk image is
@@ -11022,8 +12423,8 @@
 	// Multiple interfaces are supported per instance.
 	NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty"`
 
-	// ReservationAffinity: The configuration of desired allocations which
-	// this Instance could consume capacity from.
+	// ReservationAffinity: The configuration of desired reservations from
+	// which this Instance can consume capacity from.
 	ReservationAffinity *ReservationAffinity `json:"reservationAffinity,omitempty"`
 
 	// Scheduling: Sets the scheduling options for this instance.
@@ -14507,6 +15908,40 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Int64RangeMatch: HttpRouteRuleMatch criteria for field values that
+// must stay within the specified integer range.
+type Int64RangeMatch struct {
+	// RangeEnd: The end of the range (exclusive) in signed long integer
+	// format.
+	RangeEnd int64 `json:"rangeEnd,omitempty,string"`
+
+	// RangeStart: The start of the range (inclusive) in signed long integer
+	// format.
+	RangeStart int64 `json:"rangeStart,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "RangeEnd") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "RangeEnd") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *Int64RangeMatch) MarshalJSON() ([]byte, error) {
+	type NoMethod Int64RangeMatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Interconnect: Represents an Interconnects resource. The Interconnects
 // resource is a dedicated connection between Google's network and your
 // on-premises network. For more information, see the  Dedicated
@@ -14557,8 +15992,13 @@
 	// InterconnectAttachments configured to use this Interconnect.
 	InterconnectAttachments []string `json:"interconnectAttachments,omitempty"`
 
-	// InterconnectType: Type of interconnect. Note that "IT_PRIVATE" has
-	// been deprecated in favor of "DEDICATED"
+	// InterconnectType: Type of interconnect, which can take one of the
+	// following values:
+	// - PARTNER: A partner-managed interconnection shared between customers
+	// though a partner.
+	// - DEDICATED: A dedicated physical interconnection with the customer.
+	// Note that a value IT_PRIVATE has been deprecated in favor of
+	// DEDICATED.
 	//
 	// Possible values:
 	//   "DEDICATED"
@@ -14587,8 +16027,12 @@
 	// comply with RFC1035. Label values may be empty.
 	Labels map[string]string `json:"labels,omitempty"`
 
-	// LinkType: Type of link requested. This field indicates speed of each
-	// of the links in the bundle, not the entire bundle.
+	// LinkType: Type of link requested, which can take one of the following
+	// values:
+	// - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics
+	// - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note
+	// that this field indicates the speed of each of the links in the
+	// bundle, not the speed of the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_100G_LR"
@@ -14615,8 +16059,16 @@
 	// Notifications.
 	NocContactEmail string `json:"nocContactEmail,omitempty"`
 
-	// OperationalStatus: [Output Only] The current status of whether or not
-	// this Interconnect is functional.
+	// OperationalStatus: [Output Only] The current status of this
+	// Interconnect's functionality, which can take one of the following
+	// values:
+	// - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to
+	// use. Attachments may be provisioned on this Interconnect.
+	// - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -14640,8 +16092,15 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// State: [Output Only] The current state of whether or not this
-	// Interconnect is functional.
+	// State: [Output Only] The current state of Interconnect functionality,
+	// which can take one of the following values:
+	// - ACTIVE: The Interconnect is valid, turned up and ready to use.
+	// Attachments may be provisioned on this Interconnect.
+	// - UNPROVISIONED: The Interconnect has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - UNDER_MAINTENANCE: The Interconnect is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -14684,10 +16143,22 @@
 	// Not present for PARTNER_PROVIDER.
 	AdminEnabled bool `json:"adminEnabled,omitempty"`
 
-	// Bandwidth: Provisioned bandwidth capacity for the
-	// interconnectAttachment. Can be set by the partner to update the
-	// customer's provisioned bandwidth. Output only for PARTNER type,
-	// mutable for PARTNER_PROVIDER and DEDICATED.
+	// Bandwidth: Provisioned bandwidth capacity for the interconnect
+	// attachment. For attachments of type DEDICATED, the user can set the
+	// bandwidth. For attachments of type PARTNER, the Google Partner that
+	// is operating the interconnect must set the bandwidth. Output only for
+	// PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can
+	// take one of the following values:
+	// - BPS_50M: 50 Mbit/s
+	// - BPS_100M: 100 Mbit/s
+	// - BPS_200M: 200 Mbit/s
+	// - BPS_300M: 300 Mbit/s
+	// - BPS_400M: 400 Mbit/s
+	// - BPS_500M: 500 Mbit/s
+	// - BPS_1G: 1 Gbit/s
+	// - BPS_2G: 2 Gbit/s
+	// - BPS_5G: 5 Gbit/s
+	// - BPS_10G: 10 Gbit/s
 	//
 	// Possible values:
 	//   "BPS_100M"
@@ -14730,12 +16201,16 @@
 	Description string `json:"description,omitempty"`
 
 	// EdgeAvailabilityDomain: Desired availability domain for the
-	// attachment. Only available for type PARTNER, at creation time. For
-	// improved reliability, customers should configure a pair of
-	// attachments with one per availability domain. The selected
-	// availability domain will be provided to the Partner via the pairing
-	// key so that the provisioned circuit will lie in the specified domain.
-	// If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
+	// attachment. Only available for type PARTNER, at creation time, and
+	// can take one of the following values:
+	// - AVAILABILITY_DOMAIN_ANY
+	// - AVAILABILITY_DOMAIN_1
+	// - AVAILABILITY_DOMAIN_2 For improved reliability, customers should
+	// configure a pair of attachments, one per availability domain. The
+	// selected availability domain will be provided to the Partner via the
+	// pairing key, so that the provisioned circuit will lie in the
+	// specified domain. If not specified, the value will default to
+	// AVAILABILITY_DOMAIN_ANY.
 	//
 	// Possible values:
 	//   "AVAILABILITY_DOMAIN_1"
@@ -14787,7 +16262,12 @@
 	Name string `json:"name,omitempty"`
 
 	// OperationalStatus: [Output Only] The current status of whether or not
-	// this interconnect attachment is functional.
+	// this interconnect attachment is functional, which can take one of the
+	// following values:
+	// - OS_ACTIVE: The attachment has been turned up and is ready to use.
+	//
+	// - OS_UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -14800,10 +16280,10 @@
 	// selected partner. Of the form "XXXXX/region/domain"
 	PairingKey string `json:"pairingKey,omitempty"`
 
-	// PartnerAsn: Optional BGP ASN for the router that should be supplied
-	// by a layer 3 Partner if they configured BGP on behalf of the
-	// customer. Output only for PARTNER type, input only for
-	// PARTNER_PROVIDER, not available for DEDICATED.
+	// PartnerAsn: Optional BGP ASN for the router supplied by a Layer 3
+	// Partner if they configured BGP on behalf of the customer. Output only
+	// for PARTNER type, input only for PARTNER_PROVIDER, not available for
+	// DEDICATED.
 	PartnerAsn int64 `json:"partnerAsn,omitempty,string"`
 
 	// PartnerMetadata: Informational metadata about Partner attachments
@@ -14832,7 +16312,26 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// State: [Output Only] The current state of this attachment's
-	// functionality.
+	// functionality. Enum values ACTIVE and UNPROVISIONED are shared by
+	// DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect
+	// attachments, while enum values PENDING_PARTNER,
+	// PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only
+	// PARTNER and PARTNER_PROVIDER interconnect attachments. This state can
+	// take one of the following values:
+	// - ACTIVE: The attachment has been turned up and is ready to use.
+	// - UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
+	// - PENDING_PARTNER: A newly-created PARTNER attachment that has not
+	// yet been configured on the Partner side.
+	// - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of
+	// provisioning after a PARTNER_PROVIDER attachment was created that
+	// references it.
+	// - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is
+	// waiting for a customer to activate it.
+	// - DEFUNCT: The attachment was deleted externally and is no longer
+	// functional. This could be because the associated Interconnect was
+	// removed, or because the other side of a Partner attachment was
+	// deleted.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -14844,6 +16343,14 @@
 	//   "UNPROVISIONED"
 	State string `json:"state,omitempty"`
 
+	// Type: The type of interconnect attachment this is, which can take one
+	// of the following values:
+	// - DEDICATED: an attachment to a Dedicated Interconnect.
+	// - PARTNER: an attachment to a Partner Interconnect, created by the
+	// customer.
+	// - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created
+	// by the partner.
+	//
 	// Possible values:
 	//   "DEDICATED"
 	//   "PARTNER"
@@ -15212,7 +16719,7 @@
 	PartnerName string `json:"partnerName,omitempty"`
 
 	// PortalUrl: URL of the Partner?s portal for this Attachment. Partners
-	// may customise this to be a deep-link to the specific resource on the
+	// may customise this to be a deep link to the specific resource on the
 	// Partner portal. This value may be validated to match approved Partner
 	// values.
 	PortalUrl string `json:"portalUrl,omitempty"`
@@ -15528,6 +17035,12 @@
 	// LACP exchange.
 	NeighborSystemId string `json:"neighborSystemId,omitempty"`
 
+	// State: The state of a LACP link, which can take one of the following
+	// values:
+	// - ACTIVE: The link is configured and active within the bundle.
+	// - DETACHED: The link is not configured within the bundle. This means
+	// that the rest of the object should be empty.
+	//
 	// Possible values:
 	//   "ACTIVE"
 	//   "DETACHED"
@@ -15846,7 +17359,13 @@
 	// "Amsterdam, Netherlands".
 	City string `json:"city,omitempty"`
 
-	// Continent: [Output Only] Continent for this location.
+	// Continent: [Output Only] Continent for this location, which can take
+	// one of the following values:
+	// - AFRICA
+	// - ASIA_PAC
+	// - EUROPE
+	// - NORTH_AMERICA
+	// - SOUTH_AMERICA
 	//
 	// Possible values:
 	//   "AFRICA"
@@ -15899,10 +17418,12 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// Status: [Output Only] The status of this InterconnectLocation. If the
-	// status is AVAILABLE, new Interconnects may be provisioned in this
-	// InterconnectLocation. Otherwise, no new Interconnects may be
-	// provisioned.
+	// Status: [Output Only] The status of this InterconnectLocation, which
+	// can take one of the following values:
+	// - CLOSED: The InterconnectLocation is closed and is unavailable for
+	// provisioning new Interconnects.
+	// - AVAILABLE: The InterconnectLocation is available for provisioning
+	// new Interconnects.
 	//
 	// Possible values:
 	//   "AVAILABLE"
@@ -16150,9 +17671,14 @@
 	// epoch).
 	EndTime int64 `json:"endTime,omitempty,string"`
 
-	// IssueType: Form this outage is expected to take. Note that the "IT_"
-	// versions of this enum have been deprecated in favor of the unprefixed
-	// values.
+	// IssueType: Form this outage is expected to take, which can take one
+	// of the following values:
+	// - OUTAGE: The Interconnect may be completely out of service for some
+	// or all of the specified window.
+	// - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a
+	// whole should remain up, but with reduced bandwidth. Note that the
+	// versions of this enum prefixed with "IT_" have been deprecated in
+	// favor of the unprefixed values.
 	//
 	// Possible values:
 	//   "IT_OUTAGE"
@@ -16164,8 +17690,10 @@
 	// Name: Unique identifier for this outage notification.
 	Name string `json:"name,omitempty"`
 
-	// Source: The party that generated this notification. Note that
-	// "NSRC_GOOGLE" has been deprecated in favor of "GOOGLE"
+	// Source: The party that generated this notification, which can take
+	// the following value:
+	// - GOOGLE: this notification as generated by Google. Note that the
+	// value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.
 	//
 	// Possible values:
 	//   "GOOGLE"
@@ -16176,8 +17704,15 @@
 	// Unix epoch).
 	StartTime int64 `json:"startTime,omitempty,string"`
 
-	// State: State of this notification. Note that the "NS_" versions of
-	// this enum have been deprecated in favor of the unprefixed values.
+	// State: State of this notification, which can take one of the
+	// following values:
+	// - ACTIVE: This outage notification is active. The event could be in
+	// the past, present, or future. See start_time and end_time for
+	// scheduling.
+	// - CANCELLED: The outage associated with this notification was
+	// cancelled before the outage was due to start. Note that the versions
+	// of this enum prefixed with "NS_" have been deprecated in favor of the
+	// unprefixed values.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -16729,12 +18264,6 @@
 	// the caller. This is relevant only in the LocalIAM implementation, for
 	// now.
 	//
-	// NOTE: Logging to Gin in a fail-closed manner is currently unsupported
-	// while work is being done to satisfy the requirements of go/345.
-	// Currently, setting LOG_FAIL_CLOSED mode will have no effect, but
-	// still exists because there is active work being done to support it
-	// (b/115874152).
-	//
 	// Possible values:
 	//   "LOG_FAIL_CLOSED"
 	//   "LOG_MODE_UNSPECIFIED"
@@ -17590,6 +19119,103 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// MetadataFilter: Opaque filter criteria used by loadbalancers to
+// restrict routing configuration to a limited set of loadbalancing
+// proxies. Proxies and sidecars involved in loadbalancing would
+// typically present metadata to the loadbalancers which need to match
+// criteria specified here. If a match takes place, the relevant routing
+// configuration is made available to those proxies.
+// For each metadataFilter in this list, if its filterMatchCriteria is
+// set to MATCH_ANY, at least one of the filterLabels must match the
+// corresponding label provided in the metadata. If its
+// filterMatchCriteria is set to MATCH_ALL, then all of its filterLabels
+// must match with corresponding labels in the provided metadata.
+// An example for using metadataFilters would be: if loadbalancing
+// involves  Envoys, they will only receive routing configuration when
+// values in metadataFilters match values supplied in <a
+// href="https://www.envoyproxy.io/docs/envoy/latest/api-v2/api/v2/core/b
+// ase.proto#envoy-api-msg-core-node" Node metadata of their XDS
+// requests to loadbalancers.
+type MetadataFilter struct {
+	// FilterLabels: The list of label value pairs that must match labels in
+	// the provided metadata based on filterMatchCriteria
+	// This list must not be empty and can have at the most 64 entries.
+	FilterLabels []*MetadataFilterLabelMatch `json:"filterLabels,omitempty"`
+
+	// FilterMatchCriteria: Specifies how individual filterLabel matches
+	// within the list of filterLabels contribute towards the overall
+	// metadataFilter match.
+	// Supported values are:
+	// - MATCH_ANY: At least one of the filterLabels must have a matching
+	// label in the provided metadata.
+	// - MATCH_ALL: All filterLabels must have matching labels in the
+	// provided metadata.
+	//
+	// Possible values:
+	//   "MATCH_ALL"
+	//   "MATCH_ANY"
+	//   "NOT_SET"
+	FilterMatchCriteria string `json:"filterMatchCriteria,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "FilterLabels") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "FilterLabels") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *MetadataFilter) MarshalJSON() ([]byte, error) {
+	type NoMethod MetadataFilter
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// MetadataFilterLabelMatch: MetadataFilter label name value pairs that
+// are expected to match corresponding labels presented as metadata to
+// the loadbalancer.
+type MetadataFilterLabelMatch struct {
+	// Name: Name of metadata label.
+	// The name can have a maximum length of 1024 characters and must be at
+	// least 1 character long.
+	Name string `json:"name,omitempty"`
+
+	// Value: The value of the label must match the specified value.
+	// value can have a maximum length of 1024 characters.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Name") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Name") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *MetadataFilterLabelMatch) MarshalJSON() ([]byte, error) {
+	type NoMethod MetadataFilterLabelMatch
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // NamedPort: The named port. For example: .
 type NamedPort struct {
 	// Name: The name for this named port. The name must be 1-63 characters
@@ -21715,10 +23341,114 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// OutlierDetection: Settings controlling eviction of unhealthy hosts
+// from the load balancing pool.
+type OutlierDetection struct {
+	// BaseEjectionTime: The base time that a host is ejected for. The real
+	// time is equal to the base time multiplied by the number of times the
+	// host has been ejected. Defaults to 30000ms or 30s.
+	BaseEjectionTime *Duration `json:"baseEjectionTime,omitempty"`
+
+	// ConsecutiveErrors: Number of errors before a host is ejected from the
+	// connection pool. When the backend host is accessed over HTTP, a 5xx
+	// return code qualifies as an error. Defaults to 5.
+	ConsecutiveErrors int64 `json:"consecutiveErrors,omitempty"`
+
+	// ConsecutiveGatewayFailure: The number of consecutive gateway failures
+	// (502, 503, 504 status or connection errors that are mapped to one of
+	// those status codes) before a consecutive gateway failure ejection
+	// occurs. Defaults to 5.
+	ConsecutiveGatewayFailure int64 `json:"consecutiveGatewayFailure,omitempty"`
+
+	// EnforcingConsecutiveErrors: The percentage chance that a host will be
+	// actually ejected when an outlier status is detected through
+	// consecutive 5xx. This setting can be used to disable ejection or to
+	// ramp it up slowly. Defaults to 100.
+	EnforcingConsecutiveErrors int64 `json:"enforcingConsecutiveErrors,omitempty"`
+
+	// EnforcingConsecutiveGatewayFailure: The percentage chance that a host
+	// will be actually ejected when an outlier status is detected through
+	// consecutive gateway failures. This setting can be used to disable
+	// ejection or to ramp it up slowly. Defaults to 0.
+	EnforcingConsecutiveGatewayFailure int64 `json:"enforcingConsecutiveGatewayFailure,omitempty"`
+
+	// EnforcingSuccessRate: The percentage chance that a host will be
+	// actually ejected when an outlier status is detected through success
+	// rate statistics. This setting can be used to disable ejection or to
+	// ramp it up slowly. Defaults to 100.
+	EnforcingSuccessRate int64 `json:"enforcingSuccessRate,omitempty"`
+
+	// Interval: Time interval between ejection sweep analysis. This can
+	// result in both new ejections as well as hosts being returned to
+	// service. Defaults to 10 seconds.
+	Interval *Duration `json:"interval,omitempty"`
+
+	// MaxEjectionPercent: Maximum percentage of hosts in the load balancing
+	// pool for the backend service that can be ejected. Defaults to 10%.
+	MaxEjectionPercent int64 `json:"maxEjectionPercent,omitempty"`
+
+	// SuccessRateMinimumHosts: The number of hosts in a cluster that must
+	// have enough request volume to detect success rate outliers. If the
+	// number of hosts is less than this setting, outlier detection via
+	// success rate statistics is not performed for any host in the cluster.
+	// Defaults to 5.
+	SuccessRateMinimumHosts int64 `json:"successRateMinimumHosts,omitempty"`
+
+	// SuccessRateRequestVolume: The minimum number of total requests that
+	// must be collected in one interval (as defined by the interval
+	// duration above) to include this host in success rate based outlier
+	// detection. If the volume is lower than this setting, outlier
+	// detection via success rate statistics is not performed for that host.
+	// Defaults to 100.
+	SuccessRateRequestVolume int64 `json:"successRateRequestVolume,omitempty"`
+
+	// SuccessRateStdevFactor: This factor is used to determine the ejection
+	// threshold for success rate outlier ejection. The ejection threshold
+	// is the difference between the mean success rate, and the product of
+	// this factor and the standard deviation of the mean success rate: mean
+	// - (stdev * success_rate_stdev_factor). This factor is divided by a
+	// thousand to get a double. That is, if the desired factor is 1.9, the
+	// runtime value should be 1900. Defaults to 1900.
+	SuccessRateStdevFactor int64 `json:"successRateStdevFactor,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BaseEjectionTime") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BaseEjectionTime") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *OutlierDetection) MarshalJSON() ([]byte, error) {
+	type NoMethod OutlierDetection
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // PathMatcher: A matcher for the path portion of the URL. The
 // BackendService from the longest-matched rule will serve the URL. If
 // no rule was matched, the default service will be used.
 type PathMatcher struct {
+	// DefaultRouteAction: defaultRouteAction takes effect when none of the
+	// pathRules or routeRules match. The load balancer performs advanced
+	// routing actions like URL rewrites, header transformations, etc. prior
+	// to forwarding the request to the selected backend. If
+	// defaultRouteAction specifies any weightedBackendServices,
+	// defaultService must not be set. Conversely if defaultService is set,
+	// defaultRouteAction cannot contain any  weightedBackendServices.
+	// Only one of defaultRouteAction or defaultUrlRedirect must be set.
+	DefaultRouteAction *HttpRouteAction `json:"defaultRouteAction,omitempty"`
+
 	// DefaultService: The full or partial URL to the BackendService
 	// resource. This will be used if none of the pathRules or routeRules
 	// defined by this PathMatcher are matched. For example, the following
@@ -21742,10 +23472,23 @@
 	// - compute.backendServices.use
 	DefaultService string `json:"defaultService,omitempty"`
 
+	// DefaultUrlRedirect: When when none of the specified pathRules or
+	// routeRules match, the request is redirected to a URL specified by
+	// defaultUrlRedirect.
+	// If defaultUrlRedirect is specified, defaultService or
+	// defaultRouteAction must not be set.
+	DefaultUrlRedirect *HttpRedirectAction `json:"defaultUrlRedirect,omitempty"`
+
 	// Description: An optional description of this resource. Provide this
 	// property when you create the resource.
 	Description string `json:"description,omitempty"`
 
+	// HeaderAction: Specifies changes to request and response headers that
+	// need to take effect for the selected backendService.
+	// HeaderAction specified here are applied after the matching
+	// HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap
+	HeaderAction *HttpHeaderAction `json:"headerAction,omitempty"`
+
 	// Name: The name to which this PathMatcher is referred by the HostRule.
 	Name string `json:"name,omitempty"`
 
@@ -21759,15 +23502,23 @@
 	// Only one of pathRules or routeRules must be set.
 	PathRules []*PathRule `json:"pathRules,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "DefaultService") to
-	// unconditionally include in API requests. By default, fields with
+	// RouteRules: The list of ordered HTTP route rules. Use this list
+	// instead of pathRules when advanced route matching and routing actions
+	// are desired. The order of specifying routeRules matters: the first
+	// rule that matches will cause its specified routing action to take
+	// effect.
+	// Only one of pathRules or routeRules must be set.
+	RouteRules []*HttpRouteRule `json:"routeRules,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "DefaultRouteAction")
+	// to unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
 	// server regardless of whether the field is empty or not. This may be
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "DefaultService") to
+	// NullFields is a list of field names (e.g. "DefaultRouteAction") to
 	// include in API requests with the JSON null value. By default, fields
 	// with empty values are omitted from API requests. However, any field
 	// with an empty value appearing in NullFields will be sent to the
@@ -21792,6 +23543,15 @@
 	// or #, and those chars are not allowed here.
 	Paths []string `json:"paths,omitempty"`
 
+	// RouteAction: In response to a matching path, the load balancer
+	// performs advanced routing actions like URL rewrites, header
+	// transformations, etc. prior to forwarding the request to the selected
+	// backend. If routeAction specifies any  weightedBackendServices,
+	// service must not be set. Conversely if service is set, routeAction
+	// cannot contain any  weightedBackendServices.
+	// Only one of routeAction or urlRedirect must be set.
+	RouteAction *HttpRouteAction `json:"routeAction,omitempty"`
+
 	// Service: The full or partial URL of the backend service resource to
 	// which traffic is directed if this rule is matched. If routeAction is
 	// additionally specified, advanced routing actions like URL Rewrites,
@@ -21803,6 +23563,11 @@
 	// routeAction.weightedBackendService must be set.
 	Service string `json:"service,omitempty"`
 
+	// UrlRedirect: When a path pattern is matched, the request is
+	// redirected to a URL specified by urlRedirect.
+	// If urlRedirect is specified, service or routeAction must not be set.
+	UrlRedirect *HttpRedirectAction `json:"urlRedirect,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Paths") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -23891,6 +25656,97 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type RegionTargetHttpsProxiesSetSslCertificatesRequest struct {
+	// SslCertificates: New set of SslCertificate resources to associate
+	// with this TargetHttpsProxy resource. Currently exactly one
+	// SslCertificate resource must be specified.
+	SslCertificates []string `json:"sslCertificates,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "SslCertificates") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "SslCertificates") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RegionTargetHttpsProxiesSetSslCertificatesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RegionTargetHttpsProxiesSetSslCertificatesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type RegionUrlMapsValidateRequest struct {
+	// Resource: Content of the UrlMap to be validated.
+	Resource *UrlMap `json:"resource,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Resource") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Resource") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RegionUrlMapsValidateRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RegionUrlMapsValidateRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RequestMirrorPolicy: A policy that specifies how requests intended
+// for the route's backends are shadowed to a separate mirrored backend
+// service. Loadbalancer does not wait for responses from the shadow
+// service. Prior to sending traffic to the shadow service, the host /
+// authority header is suffixed with -shadow.
+type RequestMirrorPolicy struct {
+	// BackendService: The full or partial URL to the BackendService
+	// resource being mirrored to.
+	BackendService string `json:"backendService,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BackendService") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BackendService") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RequestMirrorPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod RequestMirrorPolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Reservation: Reservation resource
 type Reservation struct {
 	// Commitment: [OutputOnly] Full or partial url for parent commitment
@@ -23971,6 +25827,11 @@
 // ReservationAffinity: AllocationAffinity is the configuration of
 // desired allocation which this instance could take capacity from.
 type ReservationAffinity struct {
+	// ConsumeReservationType: Specifies the type of reservation from which
+	// this instance can consume resources: ANY_RESERVATION (default),
+	// SPECIFIC_RESERVATION, or NO_RESERVATION. See  Consuming reserved
+	// instances for examples.
+	//
 	// Possible values:
 	//   "ANY_RESERVATION"
 	//   "NO_RESERVATION"
@@ -25780,9 +27641,10 @@
 	// Bgp: BGP information specific to this router.
 	Bgp *RouterBgp `json:"bgp,omitempty"`
 
-	// BgpPeers: BGP information that needs to be configured into the
-	// routing stack to establish the BGP peering. It must specify peer ASN
-	// and either interface name, IP, or peer IP. Please refer to RFC4273.
+	// BgpPeers: BGP information that must be configured into the routing
+	// stack to establish BGP peering. This information must specify the
+	// peer ASN and either the interface name, IP address, or peer IP
+	// address. Please refer to RFC4273.
 	BgpPeers []*RouterBgpPeer `json:"bgpPeers,omitempty"`
 
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
@@ -25798,8 +27660,8 @@
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Interfaces: Router interfaces. Each interface requires either one
-	// linked resource (e.g. linkedVpnTunnel), or IP address and IP address
-	// range (e.g. ipRange), or both.
+	// linked resource, (for example, linkedVpnTunnel), or IP address and IP
+	// address range (for example, ipRange), or both.
 	Interfaces []*RouterInterface `json:"interfaces,omitempty"`
 
 	// Kind: [Output Only] Type of resource. Always compute#router for
@@ -25815,7 +27677,7 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Nats: A list of Nat services created in this router.
+	// Nats: A list of NAT services created in this router.
 	Nats []*RouterNat `json:"nats,omitempty"`
 
 	// Network: URI of the network to which this router belongs.
@@ -26046,7 +27908,7 @@
 
 type RouterBgp struct {
 	// AdvertiseMode: User-specified flag to indicate which mode to use for
-	// advertisement.
+	// advertisement. The options are DEFAULT or CUSTOM.
 	//
 	// Possible values:
 	//   "CUSTOM"
@@ -26110,11 +27972,15 @@
 	AdvertiseMode string `json:"advertiseMode,omitempty"`
 
 	// AdvertisedGroups: User-specified list of prefix groups to advertise
-	// in custom mode. This field can only be populated if advertise_mode is
-	// CUSTOM and overrides the list defined for the router (in Bgp
-	// message). These groups will be advertised in addition to any
-	// specified prefixes. Leave this field blank to advertise no custom
-	// groups.
+	// in custom mode, which can take one of the following options:
+	// - ALL_SUBNETS: Advertises all available subnets, including peer VPC
+	// subnets.
+	// - ALL_VPC_SUBNETS: Advertises the router's own VPC subnets.
+	// - ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC
+	// network. Note that this field can only be populated if advertise_mode
+	// is CUSTOM and overrides the list defined for the router (in the "bgp"
+	// message). These groups are advertised in addition to any specified
+	// prefixes. Leave this field blank to advertise no custom groups.
 	//
 	// Possible values:
 	//   "ALL_SUBNETS"
@@ -26123,14 +27989,14 @@
 	// AdvertisedIpRanges: User-specified list of individual IP ranges to
 	// advertise in custom mode. This field can only be populated if
 	// advertise_mode is CUSTOM and overrides the list defined for the
-	// router (in Bgp message). These IP ranges will be advertised in
+	// router (in the "bgp" message). These IP ranges are advertised in
 	// addition to any specified groups. Leave this field blank to advertise
 	// no custom IP ranges.
 	AdvertisedIpRanges []*RouterAdvertisedIpRange `json:"advertisedIpRanges,omitempty"`
 
 	// AdvertisedRoutePriority: The priority of routes advertised to this
-	// BGP peer. In the case where there is more than one matching route of
-	// maximum length, the routes with lowest priority value win.
+	// BGP peer. Where there is more than one matching route of maximum
+	// length, the routes with the lowest priority value win.
 	AdvertisedRoutePriority int64 `json:"advertisedRoutePriority,omitempty"`
 
 	// InterfaceName: Name of the interface the BGP peer is associated with.
@@ -26141,12 +28007,14 @@
 	IpAddress string `json:"ipAddress,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this BGP peer. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer
-	// that is configured and managed by Cloud Interconnect, specifically by
-	// an InterconnectAttachment of type PARTNER. Google will automatically
-	// create, update, and delete this type of BGP peer when the PARTNER
-	// InterconnectAttachment is created, updated, or deleted.
+	// manages this BGP peer.
+	// - MANAGED_BY_USER is the default value and can be managed by you or
+	// other users
+	// - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed
+	// by Cloud Interconnect, specifically by an InterconnectAttachment of
+	// type PARTNER. Google automatically creates, updates, and deletes this
+	// type of BGP peer when the PARTNER InterconnectAttachment is created,
+	// updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -26157,12 +28025,12 @@
 	// and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// PeerAsn: Peer BGP Autonomous System Number (ASN). For VPN use case,
-	// this value can be different for every tunnel.
+	// PeerAsn: Peer BGP Autonomous System Number (ASN). Each BGP interface
+	// may use a different value.
 	PeerAsn int64 `json:"peerAsn,omitempty"`
 
-	// PeerIpAddress: IP address of the BGP interface outside Google cloud.
-	// Only IPv4 is supported.
+	// PeerIpAddress: IP address of the BGP interface outside Google Cloud
+	// Platform. Only IPv4 is supported.
 	PeerIpAddress string `json:"peerIpAddress,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AdvertiseMode") to
@@ -26190,32 +28058,33 @@
 
 type RouterInterface struct {
 	// IpRange: IP address and range of the interface. The IP range must be
-	// in the RFC3927 link-local IP space. The value must be a
+	// in the RFC3927 link-local IP address space. The value must be a
 	// CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not
 	// truncate the address as it represents the IP address of the
 	// interface.
 	IpRange string `json:"ipRange,omitempty"`
 
-	// LinkedInterconnectAttachment: URI of the linked interconnect
+	// LinkedInterconnectAttachment: URI of the linked Interconnect
 	// attachment. It must be in the same region as the router. Each
-	// interface can have at most one linked resource and it could either be
-	// a VPN Tunnel or an interconnect attachment.
+	// interface can have one linked resource, which can be either be a VPN
+	// tunnel or an Interconnect attachment.
 	LinkedInterconnectAttachment string `json:"linkedInterconnectAttachment,omitempty"`
 
-	// LinkedVpnTunnel: URI of the linked VPN tunnel. It must be in the same
-	// region as the router. Each interface can have at most one linked
-	// resource and it could either be a VPN Tunnel or an interconnect
+	// LinkedVpnTunnel: URI of the linked VPN tunnel, which must be in the
+	// same region as the router. Each interface can have one linked
+	// resource, which can be either a VPN tunnel or an Interconnect
 	// attachment.
 	LinkedVpnTunnel string `json:"linkedVpnTunnel,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this interface. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is an
-	// interface that is configured and managed by Cloud Interconnect,
-	// specifically by an InterconnectAttachment of type PARTNER. Google
-	// will automatically create, update, and delete this type of interface
-	// when the PARTNER InterconnectAttachment is created, updated, or
-	// deleted.
+	// manages this interface.
+	// - MANAGED_BY_USER is the default value and can be managed directly by
+	// users.
+	// - MANAGED_BY_ATTACHMENT is an interface that is configured and
+	// managed by Cloud Interconnect, specifically, by an
+	// InterconnectAttachment of type PARTNER. Google automatically creates,
+	// updates, and deletes this type of interface when the PARTNER
+	// InterconnectAttachment is created, updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -26420,16 +28289,22 @@
 
 	// MinPortsPerVm: Minimum number of ports allocated to a VM from this
 	// NAT config. If not set, a default number of ports is allocated to a
-	// VM. This gets rounded up to the nearest power of 2. Eg. if the value
-	// of this field is 50, at least 64 ports will be allocated to a VM.
+	// VM. This is rounded up to the nearest power of 2. For example, if the
+	// value of this field is 50, at least 64 ports are allocated to a VM.
 	MinPortsPerVm int64 `json:"minPortsPerVm,omitempty"`
 
 	// Name: Unique name of this Nat service. The name must be 1-63
 	// characters long and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// NatIpAllocateOption: Specify the NatIpAllocateOption. If it is
-	// AUTO_ONLY, then nat_ip should be empty.
+	// NatIpAllocateOption: Specify the NatIpAllocateOption, which can take
+	// one of the following values:
+	// - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When
+	// there are not enough specified Nat IPs, the Nat service fails for new
+	// VMs.
+	// - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform;
+	// customers can't specify any Nat IPs. When choosing AUTO_ONLY, then
+	// nat_ip should be empty.
 	//
 	// Possible values:
 	//   "AUTO_ONLY"
@@ -26437,12 +28312,20 @@
 	NatIpAllocateOption string `json:"natIpAllocateOption,omitempty"`
 
 	// NatIps: A list of URLs of the IP resources used for this Nat service.
-	// These IPs must be valid static external IP addresses assigned to the
-	// project. max_length is subject to change post alpha.
+	// These IP addresses must be valid static external IP addresses
+	// assigned to the project.
 	NatIps []string `json:"natIps,omitempty"`
 
-	// SourceSubnetworkIpRangesToNat: Specify the Nat option. If this field
-	// contains ALL_SUBNETWORKS_ALL_IP_RANGES or
+	// SourceSubnetworkIpRangesToNat: Specify the Nat option, which can take
+	// one of the following values:
+	// - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every
+	// Subnetwork are allowed to Nat.
+	// - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges
+	// in every Subnetwork are allowed to Nat.
+	// - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat
+	// (specified in the field subnetwork below) The default is
+	// SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this
+	// field contains ALL_SUBNETWORKS_ALL_IP_RANGES or
 	// ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any
 	// other Router.Nat section in any Router for this network in this
 	// region.
@@ -26536,7 +28419,7 @@
 // RouterNatSubnetworkToNat: Defines the IP ranges that want to use NAT
 // for a subnetwork.
 type RouterNatSubnetworkToNat struct {
-	// Name: URL for the subnetwork resource to use NAT.
+	// Name: URL for the subnetwork resource that will use NAT.
 	Name string `json:"name,omitempty"`
 
 	// SecondaryIpRangeNames: A list of the secondary ranges of the
@@ -26546,7 +28429,7 @@
 	SecondaryIpRangeNames []string `json:"secondaryIpRangeNames,omitempty"`
 
 	// SourceIpRangesToNat: Specify the options for NAT ranges in the
-	// Subnetwork. All usages of single value are valid except
+	// Subnetwork. All options of a single value are valid except
 	// NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple
 	// values is: ["PRIMARY_IP_RANGE", "LIST_OF_SECONDARY_IP_RANGES"]
 	// Default: [ALL_IP_RANGES]
@@ -28125,12 +30008,12 @@
 	// customer-supplied encryption key.
 	//
 	// After you encrypt a snapshot using a customer-supplied key, you must
-	// provide the same key if you use the image later For example, you must
-	// provide the encryption key when you create a disk from the encrypted
-	// snapshot in a future request.
+	// provide the same key if you use the snapshot later. For example, you
+	// must provide the encryption key when you create a disk from the
+	// encrypted snapshot in a future request.
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
-	// of the disk.
+	// of the snapshot.
 	//
 	// If you do not provide an encryption key when creating the snapshot,
 	// then the snapshot will be encrypted using an automatically generated
@@ -28442,6 +30325,11 @@
 	// requests will include this field.
 	PrivateKey string `json:"privateKey,omitempty"`
 
+	// Region: [Output Only] URL of the region where the regional SSL
+	// Certificate resides. This field is not applicable to global SSL
+	// Certificate.
+	Region string `json:"region,omitempty"`
+
 	// SelfLink: [Output only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
@@ -28490,6 +30378,161 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type SslCertificateAggregatedList struct {
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id string `json:"id,omitempty"`
+
+	// Items: A list of SslCertificatesScopedList resources.
+	Items map[string]SslCertificatesScopedList `json:"items,omitempty"`
+
+	// Kind: [Output Only] Type of resource. Always
+	// compute#sslCertificateAggregatedList for lists of SSL Certificates.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [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.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// Warning: [Output Only] Informational warning message.
+	Warning *SslCertificateAggregatedListWarning `json:"warning,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificateAggregatedList) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificateAggregatedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SslCertificateAggregatedListWarning: [Output Only] Informational
+// warning message.
+type SslCertificateAggregatedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*SslCertificateAggregatedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificateAggregatedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificateAggregatedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SslCertificateAggregatedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificateAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificateAggregatedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // SslCertificateList: Contains a list of SslCertificate resources.
 type SslCertificateList struct {
 	// Id: [Output Only] Unique identifier for the resource; defined by the
@@ -28725,6 +30768,140 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type SslCertificatesScopedList struct {
+	// SslCertificates: List of SslCertificates contained in this scope.
+	SslCertificates []*SslCertificate `json:"sslCertificates,omitempty"`
+
+	// Warning: Informational warning which replaces the list of backend
+	// services when the list is empty.
+	Warning *SslCertificatesScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "SslCertificates") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "SslCertificates") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificatesScopedList) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificatesScopedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SslCertificatesScopedListWarning: Informational warning which
+// replaces the list of backend services when the list is empty.
+type SslCertificatesScopedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*SslCertificatesScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificatesScopedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificatesScopedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SslCertificatesScopedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *SslCertificatesScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod SslCertificatesScopedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type SslPoliciesList struct {
 	// Id: [Output Only] Unique identifier for the resource; defined by the
 	// server.
@@ -29211,9 +31388,8 @@
 	// for Subnetwork resources.
 	Kind string `json:"kind,omitempty"`
 
-	// LogConfig: This field denotes the logging options for the load
-	// balancer traffic served by this backend service. If logging is
-	// enabled, logs will be exported to Stackdriver.
+	// LogConfig: This field denotes the VPC flow logging options for this
+	// subnetwork. If logging is enabled, logs are exported to Stackdriver.
 	LogConfig *SubnetworkLogConfig `json:"logConfig,omitempty"`
 
 	// Name: The name of the resource, provided by the client when initially
@@ -29237,10 +31413,34 @@
 	// setPrivateIpGoogleAccess.
 	PrivateIpGoogleAccess bool `json:"privateIpGoogleAccess,omitempty"`
 
+	// Purpose: The purpose of the resource. This field can be either
+	// PRIVATE_RFC_1918 or INTERNAL_HTTPS_LOAD_BALANCER. A subnetwork with
+	// purpose set to INTERNAL_HTTPS_LOAD_BALANCER is a user-created
+	// subnetwork that is reserved for Internal HTTP(S) Load Balancing. If
+	// unspecified, the purpose defaults to PRIVATE_RFC_1918.
+	//
+	// Possible values:
+	//   "INTERNAL_HTTPS_LOAD_BALANCER"
+	//   "PRIVATE"
+	//   "PRIVATE_RFC_1918"
+	Purpose string `json:"purpose,omitempty"`
+
 	// Region: URL of the region where the Subnetwork resides. This field
 	// can be set only at resource creation time.
 	Region string `json:"region,omitempty"`
 
+	// Role: The role of subnetwork. Currenly, this field is only used when
+	// purpose = INTERNAL_HTTPS_LOAD_BALANCER. The value can be set to
+	// ACTIVE or BACKUP. An ACTIVE subnetwork is one that is currently being
+	// used for Internal HTTP(S) Load Balancing. A BACKUP subnetwork is one
+	// that is ready to be promoted to ACTIVE or is currently draining. This
+	// field can be updated with a patch request.
+	//
+	// Possible values:
+	//   "ACTIVE"
+	//   "BACKUP"
+	Role string `json:"role,omitempty"`
+
 	// SecondaryIpRanges: An array of configurations for secondary IP ranges
 	// for VM instances contained in this subnetwork. The primary IP of such
 	// VM must belong to the primary ipCidrRange of the subnetwork. The
@@ -29251,6 +31451,19 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// State: [Output Only] The state of the subnetwork, which can be one of
+	// READY or DRAINING. A subnetwork that is READY is ready to be used.
+	// The state of DRAINING is only applicable to subnetworks that have the
+	// purpose set to INTERNAL_HTTPS_LOAD_BALANCER and indicates that
+	// connections to the load balancer are being drained. A subnetwork that
+	// is draining cannot be used or modified until it reaches a status of
+	// READY.
+	//
+	// Possible values:
+	//   "DRAINING"
+	//   "READY"
+	State string `json:"state,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -29617,7 +31830,7 @@
 	// subnetwork is enabled. The value of the field must be in [0, 1]. Set
 	// the sampling rate of VPC flow logs within the subnetwork where 1.0
 	// means all collected logs are reported and 0.0 means no logs are
-	// reported. Default is 0.5 which means half of all collected logs are
+	// reported. Default is 0.5, which means half of all collected logs are
 	// reported.
 	FlowSampling float64 `json:"flowSampling,omitempty"`
 
@@ -30017,6 +32230,141 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type TargetHttpProxiesScopedList struct {
+	// TargetHttpProxies: A list of TargetHttpProxies contained in this
+	// scope.
+	TargetHttpProxies []*TargetHttpProxy `json:"targetHttpProxies,omitempty"`
+
+	// Warning: Informational warning which replaces the list of backend
+	// services when the list is empty.
+	Warning *TargetHttpProxiesScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "TargetHttpProxies")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "TargetHttpProxies") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxiesScopedList) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxiesScopedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TargetHttpProxiesScopedListWarning: Informational warning which
+// replaces the list of backend services when the list is empty.
+type TargetHttpProxiesScopedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*TargetHttpProxiesScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxiesScopedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxiesScopedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type TargetHttpProxiesScopedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxiesScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxiesScopedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // TargetHttpProxy: A TargetHttpProxy resource. This resource defines an
 // HTTP proxy. (== resource_for beta.targetHttpProxies ==) (==
 // resource_for v1.targetHttpProxies ==)
@@ -30046,6 +32394,11 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
+	// Region: [Output Only] URL of the region where the regional Target
+	// HTTP Proxy resides. This field is not applicable to global Target
+	// HTTP Proxies.
+	Region string `json:"region,omitempty"`
+
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
@@ -30081,6 +32434,162 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type TargetHttpProxyAggregatedList struct {
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id string `json:"id,omitempty"`
+
+	// Items: A list of TargetHttpProxiesScopedList resources.
+	Items map[string]TargetHttpProxiesScopedList `json:"items,omitempty"`
+
+	// Kind: [Output Only] Type of resource. Always
+	// compute#targetHttpProxyAggregatedList for lists of Target HTTP
+	// Proxies.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [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.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// Warning: [Output Only] Informational warning message.
+	Warning *TargetHttpProxyAggregatedListWarning `json:"warning,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxyAggregatedList) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxyAggregatedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TargetHttpProxyAggregatedListWarning: [Output Only] Informational
+// warning message.
+type TargetHttpProxyAggregatedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*TargetHttpProxyAggregatedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxyAggregatedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxyAggregatedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type TargetHttpProxyAggregatedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpProxyAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpProxyAggregatedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // TargetHttpProxyList: A list of TargetHttpProxy resources.
 type TargetHttpProxyList struct {
 	// Id: [Output Only] Unique identifier for the resource; defined by the
@@ -30237,6 +32746,141 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type TargetHttpsProxiesScopedList struct {
+	// TargetHttpsProxies: A list of TargetHttpsProxies contained in this
+	// scope.
+	TargetHttpsProxies []*TargetHttpsProxy `json:"targetHttpsProxies,omitempty"`
+
+	// Warning: Informational warning which replaces the list of backend
+	// services when the list is empty.
+	Warning *TargetHttpsProxiesScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "TargetHttpsProxies")
+	// to unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "TargetHttpsProxies") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxiesScopedList) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxiesScopedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TargetHttpsProxiesScopedListWarning: Informational warning which
+// replaces the list of backend services when the list is empty.
+type TargetHttpsProxiesScopedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*TargetHttpsProxiesScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxiesScopedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxiesScopedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type TargetHttpsProxiesScopedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxiesScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxiesScopedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type TargetHttpsProxiesSetQuicOverrideRequest struct {
 	// QuicOverride: QUIC policy for the TargetHttpsProxy resource.
 	//
@@ -30343,6 +32987,11 @@
 	//   "NONE"
 	QuicOverride string `json:"quicOverride,omitempty"`
 
+	// Region: [Output Only] URL of the region where the regional
+	// TargetHttpsProxy resides. This field is not applicable to global
+	// TargetHttpsProxies.
+	Region string `json:"region,omitempty"`
+
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
@@ -30394,6 +33043,162 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type TargetHttpsProxyAggregatedList struct {
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id string `json:"id,omitempty"`
+
+	// Items: A list of TargetHttpsProxiesScopedList resources.
+	Items map[string]TargetHttpsProxiesScopedList `json:"items,omitempty"`
+
+	// Kind: [Output Only] Type of resource. Always
+	// compute#targetHttpsProxyAggregatedList for lists of Target HTTP
+	// Proxies.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [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.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// Warning: [Output Only] Informational warning message.
+	Warning *TargetHttpsProxyAggregatedListWarning `json:"warning,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxyAggregatedList) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxyAggregatedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// TargetHttpsProxyAggregatedListWarning: [Output Only] Informational
+// warning message.
+type TargetHttpsProxyAggregatedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*TargetHttpsProxyAggregatedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxyAggregatedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxyAggregatedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type TargetHttpsProxyAggregatedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *TargetHttpsProxyAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod TargetHttpsProxyAggregatedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // TargetHttpsProxyList: Contains a list of TargetHttpsProxy resources.
 type TargetHttpsProxyList struct {
 	// Id: [Output Only] Unique identifier for the resource; defined by the
@@ -31176,6 +33981,8 @@
 	//   "CLIENT_IP_PORT_PROTO"
 	//   "CLIENT_IP_PROTO"
 	//   "GENERATED_COOKIE"
+	//   "HEADER_FIELD"
+	//   "HTTP_COOKIE"
 	//   "NONE"
 	SessionAffinity string `json:"sessionAffinity,omitempty"`
 
@@ -33112,6 +35919,16 @@
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
 
+	// DefaultRouteAction: defaultRouteAction takes effect when none of the
+	// hostRules match. The load balancer performs advanced routing actions
+	// like URL rewrites, header transformations, etc. prior to forwarding
+	// the request to the selected backend. If defaultRouteAction specifies
+	// any weightedBackendServices, defaultService must not be set.
+	// Conversely if defaultService is set, defaultRouteAction cannot
+	// contain any  weightedBackendServices.
+	// Only one of defaultRouteAction or defaultUrlRedirect must be set.
+	DefaultRouteAction *HttpRouteAction `json:"defaultRouteAction,omitempty"`
+
 	// DefaultService: The full or partial URL of the defaultService
 	// resource to which traffic is directed if none of the hostRules match.
 	// If defaultRouteAction is additionally specified, advanced routing
@@ -33124,6 +35941,12 @@
 	// defaultRouteAction.weightedBackendService must be set.
 	DefaultService string `json:"defaultService,omitempty"`
 
+	// DefaultUrlRedirect: When none of the specified hostRules match, the
+	// request is redirected to a URL specified by defaultUrlRedirect.
+	// If defaultUrlRedirect is specified, defaultService or
+	// defaultRouteAction must not be set.
+	DefaultUrlRedirect *HttpRedirectAction `json:"defaultUrlRedirect,omitempty"`
+
 	// Description: An optional description of this resource. Provide this
 	// property when you create the resource.
 	Description string `json:"description,omitempty"`
@@ -33138,6 +35961,12 @@
 	// UrlMap.
 	Fingerprint string `json:"fingerprint,omitempty"`
 
+	// HeaderAction: Specifies changes to request and response headers that
+	// need to take effect for the selected backendService.
+	// The headerAction specified here take effect after headerAction
+	// specified under pathMatcher.
+	HeaderAction *HttpHeaderAction `json:"headerAction,omitempty"`
+
 	// HostRules: The list of HostRules to use against the URL.
 	HostRules []*HostRule `json:"hostRules,omitempty"`
 
@@ -33161,6 +35990,12 @@
 	// PathMatchers: The list of named PathMatchers to use against the URL.
 	PathMatchers []*PathMatcher `json:"pathMatchers,omitempty"`
 
+	// Region: [Output Only] URL of the region where the regional URL map
+	// resides. This field is not applicable to global URL maps. You must
+	// specify this field as part of the HTTP request URL. It is not
+	// settable as a field in the request body.
+	Region string `json:"region,omitempty"`
+
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
@@ -33454,6 +36289,293 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type UrlMapsAggregatedList struct {
+	// Id: [Output Only] Unique identifier for the resource; defined by the
+	// server.
+	Id string `json:"id,omitempty"`
+
+	// Items: A list of UrlMapsScopedList resources.
+	Items map[string]UrlMapsScopedList `json:"items,omitempty"`
+
+	// Kind: Type of resource.
+	Kind string `json:"kind,omitempty"`
+
+	// NextPageToken: [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.
+	NextPageToken string `json:"nextPageToken,omitempty"`
+
+	// SelfLink: [Output Only] Server-defined URL for this resource.
+	SelfLink string `json:"selfLink,omitempty"`
+
+	// Warning: [Output Only] Informational warning message.
+	Warning *UrlMapsAggregatedListWarning `json:"warning,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Id") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Id") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsAggregatedList) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsAggregatedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UrlMapsAggregatedListWarning: [Output Only] Informational warning
+// message.
+type UrlMapsAggregatedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*UrlMapsAggregatedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsAggregatedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsAggregatedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type UrlMapsAggregatedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsAggregatedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type UrlMapsScopedList struct {
+	// UrlMaps: A list of UrlMaps contained in this scope.
+	UrlMaps []*UrlMap `json:"urlMaps,omitempty"`
+
+	// Warning: Informational warning which replaces the list of backend
+	// services when the list is empty.
+	Warning *UrlMapsScopedListWarning `json:"warning,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "UrlMaps") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "UrlMaps") to include in
+	// API requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsScopedList) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsScopedList
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UrlMapsScopedListWarning: Informational warning which replaces the
+// list of backend services when the list is empty.
+type UrlMapsScopedListWarning struct {
+	// Code: [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 values:
+	//   "CLEANUP_FAILED"
+	//   "DEPRECATED_RESOURCE_USED"
+	//   "DEPRECATED_TYPE_USED"
+	//   "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+	//   "EXPERIMENTAL_TYPE_USED"
+	//   "EXTERNAL_API_WARNING"
+	//   "FIELD_VALUE_OVERRIDEN"
+	//   "INJECTED_KERNELS_DEPRECATED"
+	//   "MISSING_TYPE_DEPENDENCY"
+	//   "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"
+	//   "SCHEMA_VALIDATION_IGNORED"
+	//   "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+	//   "UNDECLARED_PROPERTIES"
+	//   "UNREACHABLE"
+	Code string `json:"code,omitempty"`
+
+	// Data: [Output Only] Metadata about this warning in key: value format.
+	// For example:
+	// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+	Data []*UrlMapsScopedListWarningData `json:"data,omitempty"`
+
+	// Message: [Output Only] A human-readable description of the warning
+	// code.
+	Message string `json:"message,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Code") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Code") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsScopedListWarning) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsScopedListWarning
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type UrlMapsScopedListWarningData struct {
+	// Key: [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).
+	Key string `json:"key,omitempty"`
+
+	// Value: [Output Only] A warning data value corresponding to the key.
+	Value string `json:"value,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Key") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Key") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlMapsScopedListWarningData) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlMapsScopedListWarningData
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type UrlMapsValidateRequest struct {
 	// Resource: Content of the UrlMap to be validated.
 	Resource *UrlMap `json:"resource,omitempty"`
@@ -33511,6 +36633,44 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// UrlRewrite: The spec for modifying the path before sending the
+// request to the matched backend service.
+type UrlRewrite struct {
+	// HostRewrite: Prior to forwarding the request to the selected service,
+	// the request's host header is replaced with contents of
+	// hostRewrite.
+	// The value must be between 1 and 255 characters.
+	HostRewrite string `json:"hostRewrite,omitempty"`
+
+	// PathPrefixRewrite: Prior to forwarding the request to the selected
+	// backend service, the matching portion of the request's path is
+	// replaced by pathPrefixRewrite.
+	// The value must be between 1 and 1024 characters.
+	PathPrefixRewrite string `json:"pathPrefixRewrite,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HostRewrite") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "HostRewrite") to include
+	// in API requests with the JSON null value. By default, fields with
+	// empty values are omitted from API requests. However, any field with
+	// an empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *UrlRewrite) MarshalJSON() ([]byte, error) {
+	type NoMethod UrlRewrite
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // UsableSubnetwork: Subnetwork which the current user has
 // compute.subnetworks.use permission on.
 type UsableSubnetwork struct {
@@ -35464,6 +38624,58 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// WeightedBackendService: In contrast to a single BackendService in
+// HttpRouteAction to which all matching traffic is directed to,
+// WeightedBackendService allows traffic to be split across multiple
+// BackendServices. The volume of traffic for each BackendService is
+// proportional to the weight specified in each WeightedBackendService
+type WeightedBackendService struct {
+	// BackendService: The full or partial URL to the default BackendService
+	// resource. Before forwarding the request to backendService, the
+	// loadbalancer applies any relevant headerActions specified as part of
+	// this backendServiceWeight.
+	BackendService string `json:"backendService,omitempty"`
+
+	// HeaderAction: Specifies changes to request and response headers that
+	// need to take effect for the selected backendService.
+	// headerAction specified here take effect before headerAction in the
+	// enclosing HttpRouteRule, PathMatcher and UrlMap.
+	HeaderAction *HttpHeaderAction `json:"headerAction,omitempty"`
+
+	// Weight: Specifies the fraction of traffic sent to backendService,
+	// computed as weight / (sum of all weightedBackendService weights in
+	// routeAction) .
+	// The selection of a backend service is determined only for new
+	// traffic. Once a user's request has been directed to a backendService,
+	// subsequent requests will be sent to the same backendService as
+	// determined by the BackendService's session affinity policy.
+	// The value must be between 0 and 1000
+	Weight int64 `json:"weight,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "BackendService") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "BackendService") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *WeightedBackendService) MarshalJSON() ([]byte, error) {
+	type NoMethod WeightedBackendService
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type XpnHostList struct {
 	// Id: [Output Only] Unique identifier for the resource; defined by the
 	// server.
@@ -44346,7 +47558,10 @@
 	return c
 }
 
-// GuestFlush sets the optional parameter "guestFlush":
+// GuestFlush sets the optional parameter "guestFlush": [Input Only]
+// Specifies to create an application consistent snapshot by informing
+// the OS to prepare for the snapshot process. Currently only supported
+// on Windows instances using the Volume Shadow Copy Service (VSS).
 func (c *DisksCreateSnapshotCall) GuestFlush(guestFlush bool) *DisksCreateSnapshotCall {
 	c.urlParams_.Set("guestFlush", fmt.Sprint(guestFlush))
 	return c
@@ -44480,6 +47695,7 @@
 	//       "type": "string"
 	//     },
 	//     "guestFlush": {
+	//       "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
@@ -53625,6 +56841,258 @@
 	}
 }
 
+// method id "compute.healthChecks.aggregatedList":
+
+type HealthChecksAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// AggregatedList: Retrieves the list of all HealthCheck resources,
+// regional and global, available to the specified project.
+func (r *HealthChecksService) AggregatedList(project string) *HealthChecksAggregatedListCall {
+	c := &HealthChecksAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *HealthChecksAggregatedListCall) Filter(filter string) *HealthChecksAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *HealthChecksAggregatedListCall) MaxResults(maxResults int64) *HealthChecksAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *HealthChecksAggregatedListCall) OrderBy(orderBy string) *HealthChecksAggregatedListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *HealthChecksAggregatedListCall) PageToken(pageToken string) *HealthChecksAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *HealthChecksAggregatedListCall) Fields(s ...googleapi.Field) *HealthChecksAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *HealthChecksAggregatedListCall) IfNoneMatch(entityTag string) *HealthChecksAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *HealthChecksAggregatedListCall) Context(ctx context.Context) *HealthChecksAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *HealthChecksAggregatedListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *HealthChecksAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/healthChecks")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.healthChecks.aggregatedList" call.
+// Exactly one of *HealthChecksAggregatedList or error will be non-nil.
+// Any non-2xx status code is an error. Response headers are in either
+// *HealthChecksAggregatedList.ServerResponse.Header or (if a response
+// was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *HealthChecksAggregatedListCall) Do(opts ...googleapi.CallOption) (*HealthChecksAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &HealthChecksAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of all HealthCheck resources, regional and global, available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.healthChecks.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Name of the project scoping this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/healthChecks",
+	//   "response": {
+	//     "$ref": "HealthChecksAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *HealthChecksAggregatedListCall) Pages(ctx context.Context, f func(*HealthChecksAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.healthChecks.delete":
 
 type HealthChecksDeleteCall struct {
@@ -96039,6 +99507,1159 @@
 
 }
 
+// method id "compute.regionHealthChecks.delete":
+
+type RegionHealthChecksDeleteCall struct {
+	s           *Service
+	project     string
+	region      string
+	healthCheck string
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+	header_     http.Header
+}
+
+// Delete: Deletes the specified HealthCheck resource.
+func (r *RegionHealthChecksService) Delete(project string, region string, healthCheck string) *RegionHealthChecksDeleteCall {
+	c := &RegionHealthChecksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.healthCheck = healthCheck
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionHealthChecksDeleteCall) RequestId(requestId string) *RegionHealthChecksDeleteCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksDeleteCall) Fields(s ...googleapi.Field) *RegionHealthChecksDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksDeleteCall) Context(ctx context.Context) *RegionHealthChecksDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks/{healthCheck}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":     c.project,
+		"region":      c.region,
+		"healthCheck": c.healthCheck,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionHealthChecksDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified HealthCheck resource.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.regionHealthChecks.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "healthCheck"
+	//   ],
+	//   "parameters": {
+	//     "healthCheck": {
+	//       "description": "Name of the HealthCheck resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionHealthChecks.get":
+
+type RegionHealthChecksGetCall struct {
+	s            *Service
+	project      string
+	region       string
+	healthCheck  string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the specified HealthCheck resource. Gets a list of
+// available health checks by making a list() request.
+func (r *RegionHealthChecksService) Get(project string, region string, healthCheck string) *RegionHealthChecksGetCall {
+	c := &RegionHealthChecksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.healthCheck = healthCheck
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksGetCall) Fields(s ...googleapi.Field) *RegionHealthChecksGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionHealthChecksGetCall) IfNoneMatch(entityTag string) *RegionHealthChecksGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksGetCall) Context(ctx context.Context) *RegionHealthChecksGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks/{healthCheck}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":     c.project,
+		"region":      c.region,
+		"healthCheck": c.healthCheck,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.get" call.
+// Exactly one of *HealthCheck or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *HealthCheck.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionHealthChecksGetCall) Do(opts ...googleapi.CallOption) (*HealthCheck, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &HealthCheck{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified HealthCheck resource. Gets a list of available health checks by making a list() request.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionHealthChecks.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "healthCheck"
+	//   ],
+	//   "parameters": {
+	//     "healthCheck": {
+	//       "description": "Name of the HealthCheck resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+	//   "response": {
+	//     "$ref": "HealthCheck"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionHealthChecks.insert":
+
+type RegionHealthChecksInsertCall struct {
+	s           *Service
+	project     string
+	region      string
+	healthcheck *HealthCheck
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+	header_     http.Header
+}
+
+// Insert: Creates a HealthCheck resource in the specified project using
+// the data included in the request.
+func (r *RegionHealthChecksService) Insert(project string, region string, healthcheck *HealthCheck) *RegionHealthChecksInsertCall {
+	c := &RegionHealthChecksInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.healthcheck = healthcheck
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionHealthChecksInsertCall) RequestId(requestId string) *RegionHealthChecksInsertCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksInsertCall) Fields(s ...googleapi.Field) *RegionHealthChecksInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksInsertCall) Context(ctx context.Context) *RegionHealthChecksInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksInsertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksInsertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.healthcheck)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionHealthChecksInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionHealthChecks.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks",
+	//   "request": {
+	//     "$ref": "HealthCheck"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionHealthChecks.list":
+
+type RegionHealthChecksListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Retrieves the list of HealthCheck resources available to the
+// specified project.
+func (r *RegionHealthChecksService) List(project string, region string) *RegionHealthChecksListCall {
+	c := &RegionHealthChecksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *RegionHealthChecksListCall) Filter(filter string) *RegionHealthChecksListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *RegionHealthChecksListCall) MaxResults(maxResults int64) *RegionHealthChecksListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *RegionHealthChecksListCall) OrderBy(orderBy string) *RegionHealthChecksListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *RegionHealthChecksListCall) PageToken(pageToken string) *RegionHealthChecksListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksListCall) Fields(s ...googleapi.Field) *RegionHealthChecksListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionHealthChecksListCall) IfNoneMatch(entityTag string) *RegionHealthChecksListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksListCall) Context(ctx context.Context) *RegionHealthChecksListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.list" call.
+// Exactly one of *HealthCheckList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *HealthCheckList.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionHealthChecksListCall) Do(opts ...googleapi.CallOption) (*HealthCheckList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &HealthCheckList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of HealthCheck resources available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionHealthChecks.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks",
+	//   "response": {
+	//     "$ref": "HealthCheckList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionHealthChecksListCall) Pages(ctx context.Context, f func(*HealthCheckList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.regionHealthChecks.patch":
+
+type RegionHealthChecksPatchCall struct {
+	s           *Service
+	project     string
+	region      string
+	healthCheck string
+	healthcheck *HealthCheck
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+	header_     http.Header
+}
+
+// Patch: Updates a HealthCheck resource in the specified project using
+// the data included in the request. This method supports PATCH
+// semantics and uses the JSON merge patch format and processing rules.
+func (r *RegionHealthChecksService) Patch(project string, region string, healthCheck string, healthcheck *HealthCheck) *RegionHealthChecksPatchCall {
+	c := &RegionHealthChecksPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.healthCheck = healthCheck
+	c.healthcheck = healthcheck
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionHealthChecksPatchCall) RequestId(requestId string) *RegionHealthChecksPatchCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksPatchCall) Fields(s ...googleapi.Field) *RegionHealthChecksPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksPatchCall) Context(ctx context.Context) *RegionHealthChecksPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.healthcheck)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks/{healthCheck}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":     c.project,
+		"region":      c.region,
+		"healthCheck": c.healthCheck,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionHealthChecksPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+	//   "httpMethod": "PATCH",
+	//   "id": "compute.regionHealthChecks.patch",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "healthCheck"
+	//   ],
+	//   "parameters": {
+	//     "healthCheck": {
+	//       "description": "Name of the HealthCheck resource to patch.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+	//   "request": {
+	//     "$ref": "HealthCheck"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionHealthChecks.update":
+
+type RegionHealthChecksUpdateCall struct {
+	s           *Service
+	project     string
+	region      string
+	healthCheck string
+	healthcheck *HealthCheck
+	urlParams_  gensupport.URLParams
+	ctx_        context.Context
+	header_     http.Header
+}
+
+// Update: Updates a HealthCheck resource in the specified project using
+// the data included in the request.
+func (r *RegionHealthChecksService) Update(project string, region string, healthCheck string, healthcheck *HealthCheck) *RegionHealthChecksUpdateCall {
+	c := &RegionHealthChecksUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.healthCheck = healthCheck
+	c.healthcheck = healthcheck
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionHealthChecksUpdateCall) RequestId(requestId string) *RegionHealthChecksUpdateCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionHealthChecksUpdateCall) Fields(s ...googleapi.Field) *RegionHealthChecksUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionHealthChecksUpdateCall) Context(ctx context.Context) *RegionHealthChecksUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionHealthChecksUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionHealthChecksUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.healthcheck)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/healthChecks/{healthCheck}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PUT", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":     c.project,
+		"region":      c.region,
+		"healthCheck": c.healthCheck,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionHealthChecks.update" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionHealthChecksUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
+	//   "httpMethod": "PUT",
+	//   "id": "compute.regionHealthChecks.update",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "healthCheck"
+	//   ],
+	//   "parameters": {
+	//     "healthCheck": {
+	//       "description": "Name of the HealthCheck resource to update.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/healthChecks/{healthCheck}",
+	//   "request": {
+	//     "$ref": "HealthCheck"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.regionInstanceGroupManagers.abandonInstances":
 
 type RegionInstanceGroupManagersAbandonInstancesCall struct {
@@ -100726,6 +105347,4346 @@
 	}
 }
 
+// method id "compute.regionSslCertificates.delete":
+
+type RegionSslCertificatesDeleteCall struct {
+	s              *Service
+	project        string
+	region         string
+	sslCertificate string
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// Delete: Deletes the specified SslCertificate resource in the region.
+func (r *RegionSslCertificatesService) Delete(project string, region string, sslCertificate string) *RegionSslCertificatesDeleteCall {
+	c := &RegionSslCertificatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.sslCertificate = sslCertificate
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionSslCertificatesDeleteCall) RequestId(requestId string) *RegionSslCertificatesDeleteCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionSslCertificatesDeleteCall) Fields(s ...googleapi.Field) *RegionSslCertificatesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionSslCertificatesDeleteCall) Context(ctx context.Context) *RegionSslCertificatesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionSslCertificatesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionSslCertificatesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/sslCertificates/{sslCertificate}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":        c.project,
+		"region":         c.region,
+		"sslCertificate": c.sslCertificate,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionSslCertificates.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionSslCertificatesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified SslCertificate resource in the region.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.regionSslCertificates.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "sslCertificate"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "sslCertificate": {
+	//       "description": "Name of the SslCertificate resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/sslCertificates/{sslCertificate}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionSslCertificates.get":
+
+type RegionSslCertificatesGetCall struct {
+	s              *Service
+	project        string
+	region         string
+	sslCertificate string
+	urlParams_     gensupport.URLParams
+	ifNoneMatch_   string
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// Get: Returns the specified SslCertificate resource in the specified
+// region. Get a list of available SSL certificates by making a list()
+// request.
+func (r *RegionSslCertificatesService) Get(project string, region string, sslCertificate string) *RegionSslCertificatesGetCall {
+	c := &RegionSslCertificatesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.sslCertificate = sslCertificate
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionSslCertificatesGetCall) Fields(s ...googleapi.Field) *RegionSslCertificatesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionSslCertificatesGetCall) IfNoneMatch(entityTag string) *RegionSslCertificatesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionSslCertificatesGetCall) Context(ctx context.Context) *RegionSslCertificatesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionSslCertificatesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionSslCertificatesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/sslCertificates/{sslCertificate}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":        c.project,
+		"region":         c.region,
+		"sslCertificate": c.sslCertificate,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionSslCertificates.get" call.
+// Exactly one of *SslCertificate or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *SslCertificate.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionSslCertificatesGetCall) Do(opts ...googleapi.CallOption) (*SslCertificate, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SslCertificate{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified SslCertificate resource in the specified region. Get a list of available SSL certificates by making a list() request.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionSslCertificates.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "sslCertificate"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "sslCertificate": {
+	//       "description": "Name of the SslCertificate resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/sslCertificates/{sslCertificate}",
+	//   "response": {
+	//     "$ref": "SslCertificate"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionSslCertificates.insert":
+
+type RegionSslCertificatesInsertCall struct {
+	s              *Service
+	project        string
+	region         string
+	sslcertificate *SslCertificate
+	urlParams_     gensupport.URLParams
+	ctx_           context.Context
+	header_        http.Header
+}
+
+// Insert: Creates a SslCertificate resource in the specified project
+// and region using the data included in the request
+func (r *RegionSslCertificatesService) Insert(project string, region string, sslcertificate *SslCertificate) *RegionSslCertificatesInsertCall {
+	c := &RegionSslCertificatesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.sslcertificate = sslcertificate
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionSslCertificatesInsertCall) RequestId(requestId string) *RegionSslCertificatesInsertCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionSslCertificatesInsertCall) Fields(s ...googleapi.Field) *RegionSslCertificatesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionSslCertificatesInsertCall) Context(ctx context.Context) *RegionSslCertificatesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionSslCertificatesInsertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionSslCertificatesInsertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.sslcertificate)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/sslCertificates")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionSslCertificates.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionSslCertificatesInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a SslCertificate resource in the specified project and region using the data included in the request",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionSslCertificates.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/sslCertificates",
+	//   "request": {
+	//     "$ref": "SslCertificate"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionSslCertificates.list":
+
+type RegionSslCertificatesListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Retrieves the list of SslCertificate resources available to the
+// specified project in the specified region.
+func (r *RegionSslCertificatesService) List(project string, region string) *RegionSslCertificatesListCall {
+	c := &RegionSslCertificatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *RegionSslCertificatesListCall) Filter(filter string) *RegionSslCertificatesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *RegionSslCertificatesListCall) MaxResults(maxResults int64) *RegionSslCertificatesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *RegionSslCertificatesListCall) OrderBy(orderBy string) *RegionSslCertificatesListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *RegionSslCertificatesListCall) PageToken(pageToken string) *RegionSslCertificatesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionSslCertificatesListCall) Fields(s ...googleapi.Field) *RegionSslCertificatesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionSslCertificatesListCall) IfNoneMatch(entityTag string) *RegionSslCertificatesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionSslCertificatesListCall) Context(ctx context.Context) *RegionSslCertificatesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionSslCertificatesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionSslCertificatesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/sslCertificates")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionSslCertificates.list" call.
+// Exactly one of *SslCertificateList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *SslCertificateList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionSslCertificatesListCall) Do(opts ...googleapi.CallOption) (*SslCertificateList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SslCertificateList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of SslCertificate resources available to the specified project in the specified region.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionSslCertificates.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/sslCertificates",
+	//   "response": {
+	//     "$ref": "SslCertificateList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionSslCertificatesListCall) Pages(ctx context.Context, f func(*SslCertificateList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.regionTargetHttpProxies.delete":
+
+type RegionTargetHttpProxiesDeleteCall struct {
+	s               *Service
+	project         string
+	region          string
+	targetHttpProxy string
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+	header_         http.Header
+}
+
+// Delete: Deletes the specified TargetHttpProxy resource.
+func (r *RegionTargetHttpProxiesService) Delete(project string, region string, targetHttpProxy string) *RegionTargetHttpProxiesDeleteCall {
+	c := &RegionTargetHttpProxiesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpProxy = targetHttpProxy
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpProxiesDeleteCall) RequestId(requestId string) *RegionTargetHttpProxiesDeleteCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpProxiesDeleteCall) Fields(s ...googleapi.Field) *RegionTargetHttpProxiesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpProxiesDeleteCall) Context(ctx context.Context) *RegionTargetHttpProxiesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpProxiesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":         c.project,
+		"region":          c.region,
+		"targetHttpProxy": c.targetHttpProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpProxies.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpProxiesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified TargetHttpProxy resource.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.regionTargetHttpProxies.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "targetHttpProxy": {
+	//       "description": "Name of the TargetHttpProxy resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpProxies.get":
+
+type RegionTargetHttpProxiesGetCall struct {
+	s               *Service
+	project         string
+	region          string
+	targetHttpProxy string
+	urlParams_      gensupport.URLParams
+	ifNoneMatch_    string
+	ctx_            context.Context
+	header_         http.Header
+}
+
+// Get: Returns the specified TargetHttpProxy resource in the specified
+// region. Gets a list of available target HTTP proxies by making a
+// list() request.
+func (r *RegionTargetHttpProxiesService) Get(project string, region string, targetHttpProxy string) *RegionTargetHttpProxiesGetCall {
+	c := &RegionTargetHttpProxiesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpProxy = targetHttpProxy
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpProxiesGetCall) Fields(s ...googleapi.Field) *RegionTargetHttpProxiesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionTargetHttpProxiesGetCall) IfNoneMatch(entityTag string) *RegionTargetHttpProxiesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpProxiesGetCall) Context(ctx context.Context) *RegionTargetHttpProxiesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpProxiesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpProxiesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":         c.project,
+		"region":          c.region,
+		"targetHttpProxy": c.targetHttpProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpProxies.get" call.
+// Exactly one of *TargetHttpProxy or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *TargetHttpProxy.ServerResponse.Header or (if a response was returned
+// at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionTargetHttpProxiesGetCall) Do(opts ...googleapi.CallOption) (*TargetHttpProxy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpProxy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified TargetHttpProxy resource in the specified region. Gets a list of available target HTTP proxies by making a list() request.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionTargetHttpProxies.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "targetHttpProxy": {
+	//       "description": "Name of the TargetHttpProxy resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}",
+	//   "response": {
+	//     "$ref": "TargetHttpProxy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpProxies.insert":
+
+type RegionTargetHttpProxiesInsertCall struct {
+	s               *Service
+	project         string
+	region          string
+	targethttpproxy *TargetHttpProxy
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+	header_         http.Header
+}
+
+// Insert: Creates a TargetHttpProxy resource in the specified project
+// and region using the data included in the request.
+func (r *RegionTargetHttpProxiesService) Insert(project string, region string, targethttpproxy *TargetHttpProxy) *RegionTargetHttpProxiesInsertCall {
+	c := &RegionTargetHttpProxiesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targethttpproxy = targethttpproxy
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpProxiesInsertCall) RequestId(requestId string) *RegionTargetHttpProxiesInsertCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpProxiesInsertCall) Fields(s ...googleapi.Field) *RegionTargetHttpProxiesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpProxiesInsertCall) Context(ctx context.Context) *RegionTargetHttpProxiesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpProxiesInsertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.targethttpproxy)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpProxies.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpProxiesInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a TargetHttpProxy resource in the specified project and region using the data included in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionTargetHttpProxies.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpProxies",
+	//   "request": {
+	//     "$ref": "TargetHttpProxy"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpProxies.list":
+
+type RegionTargetHttpProxiesListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Retrieves the list of TargetHttpProxy resources available to
+// the specified project in the specified region.
+func (r *RegionTargetHttpProxiesService) List(project string, region string) *RegionTargetHttpProxiesListCall {
+	c := &RegionTargetHttpProxiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *RegionTargetHttpProxiesListCall) Filter(filter string) *RegionTargetHttpProxiesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *RegionTargetHttpProxiesListCall) MaxResults(maxResults int64) *RegionTargetHttpProxiesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *RegionTargetHttpProxiesListCall) OrderBy(orderBy string) *RegionTargetHttpProxiesListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *RegionTargetHttpProxiesListCall) PageToken(pageToken string) *RegionTargetHttpProxiesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpProxiesListCall) Fields(s ...googleapi.Field) *RegionTargetHttpProxiesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionTargetHttpProxiesListCall) IfNoneMatch(entityTag string) *RegionTargetHttpProxiesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpProxiesListCall) Context(ctx context.Context) *RegionTargetHttpProxiesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpProxiesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpProxiesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpProxies.list" call.
+// Exactly one of *TargetHttpProxyList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TargetHttpProxyList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionTargetHttpProxiesListCall) Do(opts ...googleapi.CallOption) (*TargetHttpProxyList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpProxyList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of TargetHttpProxy resources available to the specified project in the specified region.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionTargetHttpProxies.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpProxies",
+	//   "response": {
+	//     "$ref": "TargetHttpProxyList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionTargetHttpProxiesListCall) Pages(ctx context.Context, f func(*TargetHttpProxyList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.regionTargetHttpProxies.setUrlMap":
+
+type RegionTargetHttpProxiesSetUrlMapCall struct {
+	s               *Service
+	project         string
+	region          string
+	targetHttpProxy string
+	urlmapreference *UrlMapReference
+	urlParams_      gensupport.URLParams
+	ctx_            context.Context
+	header_         http.Header
+}
+
+// SetUrlMap: Changes the URL map for TargetHttpProxy.
+func (r *RegionTargetHttpProxiesService) SetUrlMap(project string, region string, targetHttpProxy string, urlmapreference *UrlMapReference) *RegionTargetHttpProxiesSetUrlMapCall {
+	c := &RegionTargetHttpProxiesSetUrlMapCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpProxy = targetHttpProxy
+	c.urlmapreference = urlmapreference
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpProxiesSetUrlMapCall) RequestId(requestId string) *RegionTargetHttpProxiesSetUrlMapCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpProxiesSetUrlMapCall) Fields(s ...googleapi.Field) *RegionTargetHttpProxiesSetUrlMapCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpProxiesSetUrlMapCall) Context(ctx context.Context) *RegionTargetHttpProxiesSetUrlMapCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpProxiesSetUrlMapCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.urlmapreference)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}/setUrlMap")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":         c.project,
+		"region":          c.region,
+		"targetHttpProxy": c.targetHttpProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpProxies.setUrlMap" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpProxiesSetUrlMapCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Changes the URL map for TargetHttpProxy.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionTargetHttpProxies.setUrlMap",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "targetHttpProxy": {
+	//       "description": "Name of the TargetHttpProxy to set a URL map for.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
+	//   "request": {
+	//     "$ref": "UrlMapReference"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpsProxies.delete":
+
+type RegionTargetHttpsProxiesDeleteCall struct {
+	s                *Service
+	project          string
+	region           string
+	targetHttpsProxy string
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Delete: Deletes the specified TargetHttpsProxy resource.
+func (r *RegionTargetHttpsProxiesService) Delete(project string, region string, targetHttpsProxy string) *RegionTargetHttpsProxiesDeleteCall {
+	c := &RegionTargetHttpsProxiesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpsProxy = targetHttpsProxy
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpsProxiesDeleteCall) RequestId(requestId string) *RegionTargetHttpsProxiesDeleteCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesDeleteCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesDeleteCall) Context(ctx context.Context) *RegionTargetHttpsProxiesDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":          c.project,
+		"region":           c.region,
+		"targetHttpsProxy": c.targetHttpsProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified TargetHttpsProxy resource.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.regionTargetHttpsProxies.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpsProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "targetHttpsProxy": {
+	//       "description": "Name of the TargetHttpsProxy resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpsProxies.get":
+
+type RegionTargetHttpsProxiesGetCall struct {
+	s                *Service
+	project          string
+	region           string
+	targetHttpsProxy string
+	urlParams_       gensupport.URLParams
+	ifNoneMatch_     string
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Get: Returns the specified TargetHttpsProxy resource in the specified
+// region. Gets a list of available target HTTP proxies by making a
+// list() request.
+func (r *RegionTargetHttpsProxiesService) Get(project string, region string, targetHttpsProxy string) *RegionTargetHttpsProxiesGetCall {
+	c := &RegionTargetHttpsProxiesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpsProxy = targetHttpsProxy
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesGetCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionTargetHttpsProxiesGetCall) IfNoneMatch(entityTag string) *RegionTargetHttpsProxiesGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesGetCall) Context(ctx context.Context) *RegionTargetHttpsProxiesGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":          c.project,
+		"region":           c.region,
+		"targetHttpsProxy": c.targetHttpsProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.get" call.
+// Exactly one of *TargetHttpsProxy or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TargetHttpsProxy.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesGetCall) Do(opts ...googleapi.CallOption) (*TargetHttpsProxy, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpsProxy{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified TargetHttpsProxy resource in the specified region. Gets a list of available target HTTP proxies by making a list() request.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionTargetHttpsProxies.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpsProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "targetHttpsProxy": {
+	//       "description": "Name of the TargetHttpsProxy resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}",
+	//   "response": {
+	//     "$ref": "TargetHttpsProxy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpsProxies.insert":
+
+type RegionTargetHttpsProxiesInsertCall struct {
+	s                *Service
+	project          string
+	region           string
+	targethttpsproxy *TargetHttpsProxy
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// Insert: Creates a TargetHttpsProxy resource in the specified project
+// and region using the data included in the request.
+func (r *RegionTargetHttpsProxiesService) Insert(project string, region string, targethttpsproxy *TargetHttpsProxy) *RegionTargetHttpsProxiesInsertCall {
+	c := &RegionTargetHttpsProxiesInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targethttpsproxy = targethttpsproxy
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpsProxiesInsertCall) RequestId(requestId string) *RegionTargetHttpsProxiesInsertCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesInsertCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesInsertCall) Context(ctx context.Context) *RegionTargetHttpsProxiesInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesInsertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesInsertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.targethttpsproxy)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a TargetHttpsProxy resource in the specified project and region using the data included in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionTargetHttpsProxies.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies",
+	//   "request": {
+	//     "$ref": "TargetHttpsProxy"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpsProxies.list":
+
+type RegionTargetHttpsProxiesListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Retrieves the list of TargetHttpsProxy resources available to
+// the specified project in the specified region.
+func (r *RegionTargetHttpsProxiesService) List(project string, region string) *RegionTargetHttpsProxiesListCall {
+	c := &RegionTargetHttpsProxiesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *RegionTargetHttpsProxiesListCall) Filter(filter string) *RegionTargetHttpsProxiesListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *RegionTargetHttpsProxiesListCall) MaxResults(maxResults int64) *RegionTargetHttpsProxiesListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *RegionTargetHttpsProxiesListCall) OrderBy(orderBy string) *RegionTargetHttpsProxiesListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *RegionTargetHttpsProxiesListCall) PageToken(pageToken string) *RegionTargetHttpsProxiesListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesListCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionTargetHttpsProxiesListCall) IfNoneMatch(entityTag string) *RegionTargetHttpsProxiesListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesListCall) Context(ctx context.Context) *RegionTargetHttpsProxiesListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.list" call.
+// Exactly one of *TargetHttpsProxyList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TargetHttpsProxyList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesListCall) Do(opts ...googleapi.CallOption) (*TargetHttpsProxyList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpsProxyList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project in the specified region.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionTargetHttpsProxies.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies",
+	//   "response": {
+	//     "$ref": "TargetHttpsProxyList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionTargetHttpsProxiesListCall) Pages(ctx context.Context, f func(*TargetHttpsProxyList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.regionTargetHttpsProxies.setSslCertificates":
+
+type RegionTargetHttpsProxiesSetSslCertificatesCall struct {
+	s                                                 *Service
+	project                                           string
+	region                                            string
+	targetHttpsProxy                                  string
+	regiontargethttpsproxiessetsslcertificatesrequest *RegionTargetHttpsProxiesSetSslCertificatesRequest
+	urlParams_                                        gensupport.URLParams
+	ctx_                                              context.Context
+	header_                                           http.Header
+}
+
+// SetSslCertificates: Replaces SslCertificates for TargetHttpsProxy.
+func (r *RegionTargetHttpsProxiesService) SetSslCertificates(project string, region string, targetHttpsProxy string, regiontargethttpsproxiessetsslcertificatesrequest *RegionTargetHttpsProxiesSetSslCertificatesRequest) *RegionTargetHttpsProxiesSetSslCertificatesCall {
+	c := &RegionTargetHttpsProxiesSetSslCertificatesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpsProxy = targetHttpsProxy
+	c.regiontargethttpsproxiessetsslcertificatesrequest = regiontargethttpsproxiessetsslcertificatesrequest
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) RequestId(requestId string) *RegionTargetHttpsProxiesSetSslCertificatesCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesSetSslCertificatesCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) Context(ctx context.Context) *RegionTargetHttpsProxiesSetSslCertificatesCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.regiontargethttpsproxiessetsslcertificatesrequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":          c.project,
+		"region":           c.region,
+		"targetHttpsProxy": c.targetHttpsProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.setSslCertificates" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesSetSslCertificatesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Replaces SslCertificates for TargetHttpsProxy.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionTargetHttpsProxies.setSslCertificates",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpsProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "targetHttpsProxy": {
+	//       "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
+	//   "request": {
+	//     "$ref": "RegionTargetHttpsProxiesSetSslCertificatesRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionTargetHttpsProxies.setUrlMap":
+
+type RegionTargetHttpsProxiesSetUrlMapCall struct {
+	s                *Service
+	project          string
+	region           string
+	targetHttpsProxy string
+	urlmapreference  *UrlMapReference
+	urlParams_       gensupport.URLParams
+	ctx_             context.Context
+	header_          http.Header
+}
+
+// SetUrlMap: Changes the URL map for TargetHttpsProxy.
+func (r *RegionTargetHttpsProxiesService) SetUrlMap(project string, region string, targetHttpsProxy string, urlmapreference *UrlMapReference) *RegionTargetHttpsProxiesSetUrlMapCall {
+	c := &RegionTargetHttpsProxiesSetUrlMapCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.targetHttpsProxy = targetHttpsProxy
+	c.urlmapreference = urlmapreference
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) RequestId(requestId string) *RegionTargetHttpsProxiesSetUrlMapCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) Fields(s ...googleapi.Field) *RegionTargetHttpsProxiesSetUrlMapCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) Context(ctx context.Context) *RegionTargetHttpsProxiesSetUrlMapCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.urlmapreference)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project":          c.project,
+		"region":           c.region,
+		"targetHttpsProxy": c.targetHttpsProxy,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionTargetHttpsProxies.setUrlMap" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionTargetHttpsProxiesSetUrlMapCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Changes the URL map for TargetHttpsProxy.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionTargetHttpsProxies.setUrlMap",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "targetHttpsProxy"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "targetHttpsProxy": {
+	//       "description": "Name of the TargetHttpsProxy to set a URL map for.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
+	//   "request": {
+	//     "$ref": "UrlMapReference"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.delete":
+
+type RegionUrlMapsDeleteCall struct {
+	s          *Service
+	project    string
+	region     string
+	urlMap     string
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Delete: Deletes the specified UrlMap resource.
+func (r *RegionUrlMapsService) Delete(project string, region string, urlMap string) *RegionUrlMapsDeleteCall {
+	c := &RegionUrlMapsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": begin_interface:
+// MixerMutationRequestBuilder Request ID to support idempotency.
+func (c *RegionUrlMapsDeleteCall) RequestId(requestId string) *RegionUrlMapsDeleteCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsDeleteCall) Fields(s ...googleapi.Field) *RegionUrlMapsDeleteCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsDeleteCall) Context(ctx context.Context) *RegionUrlMapsDeleteCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsDeleteCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsDeleteCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("DELETE", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Deletes the specified UrlMap resource.",
+	//   "httpMethod": "DELETE",
+	//   "id": "compute.regionUrlMaps.delete",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap resource to delete.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.get":
+
+type RegionUrlMapsGetCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlMap       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// Get: Returns the specified UrlMap resource. Gets a list of available
+// URL maps by making a list() request.
+func (r *RegionUrlMapsService) Get(project string, region string, urlMap string) *RegionUrlMapsGetCall {
+	c := &RegionUrlMapsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsGetCall) Fields(s ...googleapi.Field) *RegionUrlMapsGetCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionUrlMapsGetCall) IfNoneMatch(entityTag string) *RegionUrlMapsGetCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsGetCall) Context(ctx context.Context) *RegionUrlMapsGetCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsGetCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsGetCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.get" call.
+// Exactly one of *UrlMap or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *UrlMap.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *RegionUrlMapsGetCall) Do(opts ...googleapi.CallOption) (*UrlMap, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UrlMap{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Returns the specified UrlMap resource. Gets a list of available URL maps by making a list() request.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionUrlMaps.get",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap resource to return.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+	//   "response": {
+	//     "$ref": "UrlMap"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.insert":
+
+type RegionUrlMapsInsertCall struct {
+	s          *Service
+	project    string
+	region     string
+	urlmap     *UrlMap
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Insert: Creates a UrlMap resource in the specified project using the
+// data included in the request.
+func (r *RegionUrlMapsService) Insert(project string, region string, urlmap *UrlMap) *RegionUrlMapsInsertCall {
+	c := &RegionUrlMapsInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlmap = urlmap
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": begin_interface:
+// MixerMutationRequestBuilder Request ID to support idempotency.
+func (c *RegionUrlMapsInsertCall) RequestId(requestId string) *RegionUrlMapsInsertCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsInsertCall) Fields(s ...googleapi.Field) *RegionUrlMapsInsertCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsInsertCall) Context(ctx context.Context) *RegionUrlMapsInsertCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsInsertCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsInsertCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.urlmap)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionUrlMaps.insert",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+	//       "location": "query",
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps",
+	//   "request": {
+	//     "$ref": "UrlMap"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.invalidateCache":
+
+type RegionUrlMapsInvalidateCacheCall struct {
+	s                     *Service
+	project               string
+	region                string
+	urlMap                string
+	cacheinvalidationrule *CacheInvalidationRule
+	urlParams_            gensupport.URLParams
+	ctx_                  context.Context
+	header_               http.Header
+}
+
+// InvalidateCache: Initiates a cache invalidation operation,
+// invalidating the specified path, scoped to the specified UrlMap.
+func (r *RegionUrlMapsService) InvalidateCache(project string, region string, urlMap string, cacheinvalidationrule *CacheInvalidationRule) *RegionUrlMapsInvalidateCacheCall {
+	c := &RegionUrlMapsInvalidateCacheCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	c.cacheinvalidationrule = cacheinvalidationrule
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": begin_interface:
+// MixerMutationRequestBuilder Request ID to support idempotency.
+func (c *RegionUrlMapsInvalidateCacheCall) RequestId(requestId string) *RegionUrlMapsInvalidateCacheCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsInvalidateCacheCall) Fields(s ...googleapi.Field) *RegionUrlMapsInvalidateCacheCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsInvalidateCacheCall) Context(ctx context.Context) *RegionUrlMapsInvalidateCacheCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsInvalidateCacheCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsInvalidateCacheCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.cacheinvalidationrule)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}/invalidateCache")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.invalidateCache" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsInvalidateCacheCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionUrlMaps.invalidateCache",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}/invalidateCache",
+	//   "request": {
+	//     "$ref": "CacheInvalidationRule"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.list":
+
+type RegionUrlMapsListCall struct {
+	s            *Service
+	project      string
+	region       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// List: Retrieves the list of UrlMap resources available to the
+// specified project in the specified region.
+func (r *RegionUrlMapsService) List(project string, region string) *RegionUrlMapsListCall {
+	c := &RegionUrlMapsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *RegionUrlMapsListCall) Filter(filter string) *RegionUrlMapsListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *RegionUrlMapsListCall) MaxResults(maxResults int64) *RegionUrlMapsListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *RegionUrlMapsListCall) OrderBy(orderBy string) *RegionUrlMapsListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *RegionUrlMapsListCall) PageToken(pageToken string) *RegionUrlMapsListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsListCall) Fields(s ...googleapi.Field) *RegionUrlMapsListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionUrlMapsListCall) IfNoneMatch(entityTag string) *RegionUrlMapsListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsListCall) Context(ctx context.Context) *RegionUrlMapsListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.list" call.
+// Exactly one of *UrlMapList or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *UrlMapList.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsListCall) Do(opts ...googleapi.CallOption) (*UrlMapList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UrlMapList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of UrlMap resources available to the specified project in the specified region.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionUrlMaps.list",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps",
+	//   "response": {
+	//     "$ref": "UrlMapList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionUrlMapsListCall) Pages(ctx context.Context, f func(*UrlMapList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
+// method id "compute.regionUrlMaps.patch":
+
+type RegionUrlMapsPatchCall struct {
+	s          *Service
+	project    string
+	region     string
+	urlMap     string
+	urlmap     *UrlMap
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Patch: Patches the specified UrlMap resource with the data included
+// in the request. This method supports PATCH semantics and uses JSON
+// merge patch format and processing rules.
+func (r *RegionUrlMapsService) Patch(project string, region string, urlMap string, urlmap *UrlMap) *RegionUrlMapsPatchCall {
+	c := &RegionUrlMapsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	c.urlmap = urlmap
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": begin_interface:
+// MixerMutationRequestBuilder Request ID to support idempotency.
+func (c *RegionUrlMapsPatchCall) RequestId(requestId string) *RegionUrlMapsPatchCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsPatchCall) Fields(s ...googleapi.Field) *RegionUrlMapsPatchCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsPatchCall) Context(ctx context.Context) *RegionUrlMapsPatchCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsPatchCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsPatchCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.urlmap)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PATCH", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
+	//   "httpMethod": "PATCH",
+	//   "id": "compute.regionUrlMaps.patch",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap resource to patch.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+	//   "request": {
+	//     "$ref": "UrlMap"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.update":
+
+type RegionUrlMapsUpdateCall struct {
+	s          *Service
+	project    string
+	region     string
+	urlMap     string
+	urlmap     *UrlMap
+	urlParams_ gensupport.URLParams
+	ctx_       context.Context
+	header_    http.Header
+}
+
+// Update: Updates the specified UrlMap resource with the data included
+// in the request.
+func (r *RegionUrlMapsService) Update(project string, region string, urlMap string, urlmap *UrlMap) *RegionUrlMapsUpdateCall {
+	c := &RegionUrlMapsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	c.urlmap = urlmap
+	return c
+}
+
+// RequestId sets the optional parameter "requestId": begin_interface:
+// MixerMutationRequestBuilder Request ID to support idempotency.
+func (c *RegionUrlMapsUpdateCall) RequestId(requestId string) *RegionUrlMapsUpdateCall {
+	c.urlParams_.Set("requestId", requestId)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsUpdateCall) Fields(s ...googleapi.Field) *RegionUrlMapsUpdateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsUpdateCall) Context(ctx context.Context) *RegionUrlMapsUpdateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsUpdateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsUpdateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.urlmap)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("PUT", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.update" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionUrlMapsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &Operation{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Updates the specified UrlMap resource with the data included in the request.",
+	//   "httpMethod": "PUT",
+	//   "id": "compute.regionUrlMaps.update",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "requestId": {
+	//       "description": "begin_interface: MixerMutationRequestBuilder Request ID to support idempotency.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap resource to update.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}",
+	//   "request": {
+	//     "$ref": "UrlMap"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
+// method id "compute.regionUrlMaps.validate":
+
+type RegionUrlMapsValidateCall struct {
+	s                            *Service
+	project                      string
+	region                       string
+	urlMap                       string
+	regionurlmapsvalidaterequest *RegionUrlMapsValidateRequest
+	urlParams_                   gensupport.URLParams
+	ctx_                         context.Context
+	header_                      http.Header
+}
+
+// Validate: Runs static validation for the UrlMap. In particular, the
+// tests of the provided UrlMap will be run. Calling this method does
+// NOT create the UrlMap.
+func (r *RegionUrlMapsService) Validate(project string, region string, urlMap string, regionurlmapsvalidaterequest *RegionUrlMapsValidateRequest) *RegionUrlMapsValidateCall {
+	c := &RegionUrlMapsValidateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.urlMap = urlMap
+	c.regionurlmapsvalidaterequest = regionurlmapsvalidaterequest
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionUrlMapsValidateCall) Fields(s ...googleapi.Field) *RegionUrlMapsValidateCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionUrlMapsValidateCall) Context(ctx context.Context) *RegionUrlMapsValidateCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionUrlMapsValidateCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionUrlMapsValidateCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	var body io.Reader = nil
+	body, err := googleapi.WithoutDataWrapper.JSONReader(c.regionurlmapsvalidaterequest)
+	if err != nil {
+		return nil, err
+	}
+	reqHeaders.Set("Content-Type", "application/json")
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/urlMaps/{urlMap}/validate")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("POST", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+		"region":  c.region,
+		"urlMap":  c.urlMap,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionUrlMaps.validate" call.
+// Exactly one of *UrlMapsValidateResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *UrlMapsValidateResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionUrlMapsValidateCall) Do(opts ...googleapi.CallOption) (*UrlMapsValidateResponse, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UrlMapsValidateResponse{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionUrlMaps.validate",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "urlMap"
+	//   ],
+	//   "parameters": {
+	//     "project": {
+	//       "description": "Project ID for this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "region": {
+	//       "description": "Name of the region scoping this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "urlMap": {
+	//       "description": "Name of the UrlMap resource to be validated as.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/regions/{region}/urlMaps/{urlMap}/validate",
+	//   "request": {
+	//     "$ref": "RegionUrlMapsValidateRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "UrlMapsValidateResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.regions.get":
 
 type RegionsGetCall struct {
@@ -110407,6 +119368,258 @@
 
 }
 
+// method id "compute.sslCertificates.aggregatedList":
+
+type SslCertificatesAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// AggregatedList: Retrieves the list of all SslCertificate resources,
+// regional and global, available to the specified project.
+func (r *SslCertificatesService) AggregatedList(project string) *SslCertificatesAggregatedListCall {
+	c := &SslCertificatesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *SslCertificatesAggregatedListCall) Filter(filter string) *SslCertificatesAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *SslCertificatesAggregatedListCall) MaxResults(maxResults int64) *SslCertificatesAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *SslCertificatesAggregatedListCall) OrderBy(orderBy string) *SslCertificatesAggregatedListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *SslCertificatesAggregatedListCall) PageToken(pageToken string) *SslCertificatesAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SslCertificatesAggregatedListCall) Fields(s ...googleapi.Field) *SslCertificatesAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SslCertificatesAggregatedListCall) IfNoneMatch(entityTag string) *SslCertificatesAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SslCertificatesAggregatedListCall) Context(ctx context.Context) *SslCertificatesAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *SslCertificatesAggregatedListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *SslCertificatesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/sslCertificates")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.sslCertificates.aggregatedList" call.
+// Exactly one of *SslCertificateAggregatedList or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *SslCertificateAggregatedList.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SslCertificatesAggregatedListCall) Do(opts ...googleapi.CallOption) (*SslCertificateAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &SslCertificateAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of all SslCertificate resources, regional and global, available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.sslCertificates.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Name of the project scoping this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/sslCertificates",
+	//   "response": {
+	//     "$ref": "SslCertificateAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SslCertificatesAggregatedListCall) Pages(ctx context.Context, f func(*SslCertificateAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.sslCertificates.delete":
 
 type SslCertificatesDeleteCall struct {
@@ -114251,6 +123464,21 @@
 	return c
 }
 
+// DrainTimeoutSeconds sets the optional parameter
+// "drainTimeoutSeconds": The drain timeout specifies the upper bound in
+// seconds on the amount of time allowed to drain connections from the
+// current ACTIVE subnetwork to the current BACKUP subnetwork. The drain
+// timeout is only applicable when the following conditions are true: -
+// the subnetwork being patched has purpose =
+// INTERNAL_HTTPS_LOAD_BALANCER - the subnetwork being patched has role
+// = BACKUP - the patch request is setting the role to ACTIVE. Note that
+// after this patch operation the roles of the ACTIVE and BACKUP
+// subnetworks will be swapped.
+func (c *SubnetworksPatchCall) DrainTimeoutSeconds(drainTimeoutSeconds int64) *SubnetworksPatchCall {
+	c.urlParams_.Set("drainTimeoutSeconds", fmt.Sprint(drainTimeoutSeconds))
+	return c
+}
+
 // RequestId sets the optional parameter "requestId": An optional
 // request ID to identify requests. Specify a unique request ID so that
 // if you must retry your request, the server will know to ignore the
@@ -114371,6 +123599,12 @@
 	//     "subnetwork"
 	//   ],
 	//   "parameters": {
+	//     "drainTimeoutSeconds": {
+	//       "description": "The drain timeout specifies the upper bound in seconds on the amount of time allowed to drain connections from the current ACTIVE subnetwork to the current BACKUP subnetwork. The drain timeout is only applicable when the following conditions are true: - the subnetwork being patched has purpose = INTERNAL_HTTPS_LOAD_BALANCER - the subnetwork being patched has role = BACKUP - the patch request is setting the role to ACTIVE. Note that after this patch operation the roles of the ACTIVE and BACKUP subnetworks will be swapped.",
+	//       "format": "int32",
+	//       "location": "query",
+	//       "type": "integer"
+	//     },
 	//     "project": {
 	//       "description": "Project ID for this request.",
 	//       "location": "path",
@@ -114925,6 +124159,258 @@
 
 }
 
+// method id "compute.targetHttpProxies.aggregatedList":
+
+type TargetHttpProxiesAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// AggregatedList: Retrieves the list of all TargetHttpProxy resources,
+// regional and global, available to the specified project.
+func (r *TargetHttpProxiesService) AggregatedList(project string) *TargetHttpProxiesAggregatedListCall {
+	c := &TargetHttpProxiesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *TargetHttpProxiesAggregatedListCall) Filter(filter string) *TargetHttpProxiesAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *TargetHttpProxiesAggregatedListCall) MaxResults(maxResults int64) *TargetHttpProxiesAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *TargetHttpProxiesAggregatedListCall) OrderBy(orderBy string) *TargetHttpProxiesAggregatedListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *TargetHttpProxiesAggregatedListCall) PageToken(pageToken string) *TargetHttpProxiesAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *TargetHttpProxiesAggregatedListCall) Fields(s ...googleapi.Field) *TargetHttpProxiesAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *TargetHttpProxiesAggregatedListCall) IfNoneMatch(entityTag string) *TargetHttpProxiesAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *TargetHttpProxiesAggregatedListCall) Context(ctx context.Context) *TargetHttpProxiesAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *TargetHttpProxiesAggregatedListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *TargetHttpProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/targetHttpProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.targetHttpProxies.aggregatedList" call.
+// Exactly one of *TargetHttpProxyAggregatedList or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *TargetHttpProxyAggregatedList.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *TargetHttpProxiesAggregatedListCall) Do(opts ...googleapi.CallOption) (*TargetHttpProxyAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpProxyAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of all TargetHttpProxy resources, regional and global, available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.targetHttpProxies.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Name of the project scoping this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/targetHttpProxies",
+	//   "response": {
+	//     "$ref": "TargetHttpProxyAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *TargetHttpProxiesAggregatedListCall) Pages(ctx context.Context, f func(*TargetHttpProxyAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.targetHttpProxies.delete":
 
 type TargetHttpProxiesDeleteCall struct {
@@ -115992,6 +125478,258 @@
 
 }
 
+// method id "compute.targetHttpsProxies.aggregatedList":
+
+type TargetHttpsProxiesAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// AggregatedList: Retrieves the list of all TargetHttpsProxy resources,
+// regional and global, available to the specified project.
+func (r *TargetHttpsProxiesService) AggregatedList(project string) *TargetHttpsProxiesAggregatedListCall {
+	c := &TargetHttpsProxiesAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *TargetHttpsProxiesAggregatedListCall) Filter(filter string) *TargetHttpsProxiesAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *TargetHttpsProxiesAggregatedListCall) MaxResults(maxResults int64) *TargetHttpsProxiesAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *TargetHttpsProxiesAggregatedListCall) OrderBy(orderBy string) *TargetHttpsProxiesAggregatedListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *TargetHttpsProxiesAggregatedListCall) PageToken(pageToken string) *TargetHttpsProxiesAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *TargetHttpsProxiesAggregatedListCall) Fields(s ...googleapi.Field) *TargetHttpsProxiesAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *TargetHttpsProxiesAggregatedListCall) IfNoneMatch(entityTag string) *TargetHttpsProxiesAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *TargetHttpsProxiesAggregatedListCall) Context(ctx context.Context) *TargetHttpsProxiesAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *TargetHttpsProxiesAggregatedListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *TargetHttpsProxiesAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/targetHttpsProxies")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.targetHttpsProxies.aggregatedList" call.
+// Exactly one of *TargetHttpsProxyAggregatedList or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *TargetHttpsProxyAggregatedList.ServerResponse.Header or (if a
+// response was returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *TargetHttpsProxiesAggregatedListCall) Do(opts ...googleapi.CallOption) (*TargetHttpsProxyAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &TargetHttpsProxyAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of all TargetHttpsProxy resources, regional and global, available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.targetHttpsProxies.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Name of the project scoping this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/targetHttpsProxies",
+	//   "response": {
+	//     "$ref": "TargetHttpsProxyAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *TargetHttpsProxiesAggregatedListCall) Pages(ctx context.Context, f func(*TargetHttpsProxyAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.targetHttpsProxies.delete":
 
 type TargetHttpsProxiesDeleteCall struct {
@@ -125133,6 +134871,258 @@
 
 }
 
+// method id "compute.urlMaps.aggregatedList":
+
+type UrlMapsAggregatedListCall struct {
+	s            *Service
+	project      string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// AggregatedList: Retrieves the list of all UrlMap resources, regional
+// and global, available to the specified project.
+func (r *UrlMapsService) AggregatedList(project string) *UrlMapsAggregatedListCall {
+	c := &UrlMapsAggregatedListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	return c
+}
+
+// Filter sets the optional parameter "filter": A filter expression that
+// filters resources listed in the response. The expression must specify
+// the field name, a comparison operator, and the value that you want to
+// use for filtering. The value must be a string, a number, or a
+// boolean. The comparison operator must be either =, !=, >, or <.
+//
+// For example, if you are filtering Compute Engine instances, you can
+// exclude instances named example-instance by specifying name !=
+// example-instance.
+//
+// You can also filter nested fields. For example, you could specify
+// scheduling.automaticRestart = false to include instances only if they
+// are not scheduled for automatic restarts. You can use filtering on
+// nested fields to filter based on resource labels.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart = true)
+// (cpuPlatform = "Intel Skylake"). By default, each expression is an
+// AND expression. However, you can include AND and OR expressions
+// explicitly. For example, (cpuPlatform = "Intel Skylake") OR
+// (cpuPlatform = "Intel Broadwell") AND (scheduling.automaticRestart =
+// true).
+func (c *UrlMapsAggregatedListCall) Filter(filter string) *UrlMapsAggregatedListCall {
+	c.urlParams_.Set("filter", filter)
+	return c
+}
+
+// MaxResults sets the optional parameter "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)
+func (c *UrlMapsAggregatedListCall) MaxResults(maxResults int64) *UrlMapsAggregatedListCall {
+	c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+	return c
+}
+
+// OrderBy sets the optional parameter "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.
+func (c *UrlMapsAggregatedListCall) OrderBy(orderBy string) *UrlMapsAggregatedListCall {
+	c.urlParams_.Set("orderBy", orderBy)
+	return c
+}
+
+// PageToken sets the optional parameter "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.
+func (c *UrlMapsAggregatedListCall) PageToken(pageToken string) *UrlMapsAggregatedListCall {
+	c.urlParams_.Set("pageToken", pageToken)
+	return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *UrlMapsAggregatedListCall) Fields(s ...googleapi.Field) *UrlMapsAggregatedListCall {
+	c.urlParams_.Set("fields", googleapi.CombineFields(s))
+	return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *UrlMapsAggregatedListCall) IfNoneMatch(entityTag string) *UrlMapsAggregatedListCall {
+	c.ifNoneMatch_ = entityTag
+	return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *UrlMapsAggregatedListCall) Context(ctx context.Context) *UrlMapsAggregatedListCall {
+	c.ctx_ = ctx
+	return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *UrlMapsAggregatedListCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *UrlMapsAggregatedListCall) doRequest(alt string) (*http.Response, error) {
+	reqHeaders := make(http.Header)
+	for k, v := range c.header_ {
+		reqHeaders[k] = v
+	}
+	reqHeaders.Set("User-Agent", c.s.userAgent())
+	if c.ifNoneMatch_ != "" {
+		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+	}
+	var body io.Reader = nil
+	c.urlParams_.Set("alt", alt)
+	c.urlParams_.Set("prettyPrint", "false")
+	urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/urlMaps")
+	urls += "?" + c.urlParams_.Encode()
+	req, err := http.NewRequest("GET", urls, body)
+	if err != nil {
+		return nil, err
+	}
+	req.Header = reqHeaders
+	googleapi.Expand(req.URL, map[string]string{
+		"project": c.project,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.urlMaps.aggregatedList" call.
+// Exactly one of *UrlMapsAggregatedList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *UrlMapsAggregatedList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *UrlMapsAggregatedListCall) Do(opts ...googleapi.CallOption) (*UrlMapsAggregatedList, error) {
+	gensupport.SetOptions(c.urlParams_, opts...)
+	res, err := c.doRequest("json")
+	if res != nil && res.StatusCode == http.StatusNotModified {
+		if res.Body != nil {
+			res.Body.Close()
+		}
+		return nil, &googleapi.Error{
+			Code:   res.StatusCode,
+			Header: res.Header,
+		}
+	}
+	if err != nil {
+		return nil, err
+	}
+	defer googleapi.CloseBody(res)
+	if err := googleapi.CheckResponse(res); err != nil {
+		return nil, err
+	}
+	ret := &UrlMapsAggregatedList{
+		ServerResponse: googleapi.ServerResponse{
+			Header:         res.Header,
+			HTTPStatusCode: res.StatusCode,
+		},
+	}
+	target := &ret
+	if err := gensupport.DecodeResponse(target, res); err != nil {
+		return nil, err
+	}
+	return ret, nil
+	// {
+	//   "description": "Retrieves the list of all UrlMap resources, regional and global, available to the specified project.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.urlMaps.aggregatedList",
+	//   "parameterOrder": [
+	//     "project"
+	//   ],
+	//   "parameters": {
+	//     "filter": {
+	//       "description": "A filter expression that filters resources listed in the response. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, or a boolean. The comparison operator must be either =, !=, \u003e, or \u003c.\n\nFor example, if you are filtering Compute Engine instances, you can exclude instances named example-instance by specifying name != example-instance.\n\nYou can also filter nested fields. For example, you could specify scheduling.automaticRestart = false to include instances only if they are not scheduled for automatic restarts. You can use filtering on nested fields to filter based on resource labels.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart = true) (cpuPlatform = \"Intel Skylake\"). By default, each expression is an AND expression. However, you can include AND and OR expressions explicitly. For example, (cpuPlatform = \"Intel Skylake\") OR (cpuPlatform = \"Intel Broadwell\") AND (scheduling.automaticRestart = true).",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "maxResults": {
+	//       "default": "500",
+	//       "description": "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)",
+	//       "format": "uint32",
+	//       "location": "query",
+	//       "minimum": "0",
+	//       "type": "integer"
+	//     },
+	//     "orderBy": {
+	//       "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou 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.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "pageToken": {
+	//       "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+	//       "location": "query",
+	//       "type": "string"
+	//     },
+	//     "project": {
+	//       "description": "Name of the project scoping this request.",
+	//       "location": "path",
+	//       "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])?))",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/aggregated/urlMaps",
+	//   "response": {
+	//     "$ref": "UrlMapsAggregatedList"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *UrlMapsAggregatedListCall) Pages(ctx context.Context, f func(*UrlMapsAggregatedList) error) error {
+	c.ctx_ = ctx
+	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+	for {
+		x, err := c.Do()
+		if err != nil {
+			return err
+		}
+		if err := f(x); err != nil {
+			return err
+		}
+		if x.NextPageToken == "" {
+			return nil
+		}
+		c.PageToken(x.NextPageToken)
+	}
+}
+
 // method id "compute.urlMaps.delete":
 
 type UrlMapsDeleteCall struct {
diff --git a/compute/v1/compute-api.json b/compute/v1/compute-api.json
index 9de328d..39800a7 100644
--- a/compute/v1/compute-api.json
+++ b/compute/v1/compute-api.json
@@ -29,7 +29,7 @@
   "description": "Creates and runs virtual machines on Google Cloud Platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/L7OHwc6Gh2BR8n3__eQkZu5iQsE\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/isJ5vctr0fRB9VbwWEZjs0c-shw\"",
   "icons": {
     "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
     "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
@@ -1804,6 +1804,7 @@
               "type": "string"
             },
             "guestFlush": {
+              "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
               "location": "query",
               "type": "boolean"
             },
@@ -18314,7 +18315,7 @@
       }
     }
   },
-  "revision": "20190403",
+  "revision": "20190528",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -19345,6 +19346,14 @@
         "sourceImageEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
           "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance 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."
+        },
+        "sourceSnapshot": {
+          "description": "The source snapshot to create this disk. When creating a new instance, one of initializeParams.sourceSnapshot or disks.source is required except for local SSD.\n\nTo create a disk with a snapshot that you created, specify the snapshot name in the following format:\nglobal/snapshots/my-backup\n\n\nIf the source snapshot is deleted later, this field will not be set.",
+          "type": "string"
+        },
+        "sourceSnapshotEncryptionKey": {
+          "$ref": "CustomerEncryptionKey",
+          "description": "The customer-supplied encryption key of the source snapshot."
         }
       },
       "type": "object"
@@ -20282,11 +20291,13 @@
           "enum": [
             "EXTERNAL",
             "INTERNAL",
+            "INTERNAL_SELF_MANAGED",
             "INVALID_LOAD_BALANCING_SCHEME"
           ],
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -21401,7 +21412,7 @@
         },
         "diskEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
+          "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot, to create a disk image, to create a machine image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, 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."
         },
         "guestOsFeatures": {
           "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read  Enabling guest operating system features to see a list of available options.",
@@ -21537,11 +21548,11 @@
           "type": "string"
         },
         "type": {
-          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+          "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: projects/project/zones/zone/diskTypes/pd-standard or pd-ssd",
           "type": "string"
         },
         "users": {
-          "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+          "description": "[Output Only] Links to the users of the disk (attached instances) in form: projects/project/zones/zone/instances/instance",
           "items": {
             "type": "string"
           },
@@ -22731,11 +22742,13 @@
           "enum": [
             "EXTERNAL",
             "INTERNAL",
+            "INTERNAL_SELF_MANAGED",
             "INVALID"
           ],
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -24111,7 +24124,7 @@
               "type": "string"
             },
             "sha1Checksum": {
-              "description": "An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
+              "description": "[Deprecated] This field is deprecated. An optional SHA1 checksum of the disk image before unpackaging provided by the client when the disk image is created.",
               "pattern": "[a-f0-9]{40}",
               "type": "string"
             },
@@ -26564,7 +26577,7 @@
           "type": "array"
         },
         "interconnectType": {
-          "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
+          "description": "Type of interconnect, which can take one of the following values: \n- PARTNER: A partner-managed interconnection shared between customers though a partner. \n- DEDICATED: A dedicated physical interconnection with the customer. Note that a value IT_PRIVATE has been deprecated in favor of DEDICATED.",
           "enum": [
             "DEDICATED",
             "IT_PRIVATE",
@@ -26583,7 +26596,7 @@
           "type": "string"
         },
         "linkType": {
-          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
+          "description": "Type of link requested, which can take one of the following values: \n- LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics \n- LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note that this field indicates the speed of each of the links in the bundle, not the speed of the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_10G_LR"
           ],
@@ -26611,7 +26624,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current status of this Interconnect's functionality, which can take one of the following values: \n- OS_ACTIVE: A valid Interconnect, which is turned up and is ready to use. Attachments may be provisioned on this Interconnect. \n- OS_UNPROVISIONED: An Interconnect that has not completed turnup. No attachments may be provisioned on this Interconnect. \n- OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -26641,7 +26654,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of whether or not this Interconnect is functional.",
+          "description": "[Output Only] The current state of Interconnect functionality, which can take one of the following values: \n- ACTIVE: The Interconnect is valid, turned up and ready to use. Attachments may be provisioned on this Interconnect. \n- UNPROVISIONED: The Interconnect has not completed turnup. No attachments may be provisioned on this Interconnect. \n- UNDER_MAINTENANCE: The Interconnect is undergoing internal maintenance. No attachments may be provisioned or updated on this Interconnect.",
           "enum": [
             "ACTIVE",
             "UNPROVISIONED"
@@ -26664,7 +26677,7 @@
           "type": "boolean"
         },
         "bandwidth": {
-          "description": "Provisioned bandwidth capacity for the interconnectAttachment. Can be set by the partner to update the customer's provisioned bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED.",
+          "description": "Provisioned bandwidth capacity for the interconnect attachment. For attachments of type DEDICATED, the user can set the bandwidth. For attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth. Output only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can take one of the following values: \n- BPS_50M: 50 Mbit/s \n- BPS_100M: 100 Mbit/s \n- BPS_200M: 200 Mbit/s \n- BPS_300M: 300 Mbit/s \n- BPS_400M: 400 Mbit/s \n- BPS_500M: 500 Mbit/s \n- BPS_1G: 1 Gbit/s \n- BPS_2G: 2 Gbit/s \n- BPS_5G: 5 Gbit/s \n- BPS_10G: 10 Gbit/s",
           "enum": [
             "BPS_100M",
             "BPS_10G",
@@ -26715,7 +26728,7 @@
           "type": "string"
         },
         "edgeAvailabilityDomain": {
-          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time. For improved reliability, customers should configure a pair of attachments with one per availability domain. The selected availability domain will be provided to the Partner via the pairing key so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
+          "description": "Desired availability domain for the attachment. Only available for type PARTNER, at creation time, and can take one of the following values: \n- AVAILABILITY_DOMAIN_ANY \n- AVAILABILITY_DOMAIN_1 \n- AVAILABILITY_DOMAIN_2 For improved reliability, customers should configure a pair of attachments, one per availability domain. The selected availability domain will be provided to the Partner via the pairing key, so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
           "enum": [
             "AVAILABILITY_DOMAIN_1",
             "AVAILABILITY_DOMAIN_2",
@@ -26752,7 +26765,7 @@
           "type": "string"
         },
         "operationalStatus": {
-          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+          "description": "[Output Only] The current status of whether or not this interconnect attachment is functional, which can take one of the following values: \n- OS_ACTIVE: The attachment has been turned up and is ready to use. \n- OS_UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete.",
           "enum": [
             "OS_ACTIVE",
             "OS_UNPROVISIONED"
@@ -26768,7 +26781,7 @@
           "type": "string"
         },
         "partnerAsn": {
-          "description": "Optional BGP ASN for the router that should be supplied by a layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
+          "description": "Optional BGP ASN for the router supplied by a Layer 3 Partner if they configured BGP on behalf of the customer. Output only for PARTNER type, input only for PARTNER_PROVIDER, not available for DEDICATED.",
           "format": "int64",
           "type": "string"
         },
@@ -26793,7 +26806,7 @@
           "type": "string"
         },
         "state": {
-          "description": "[Output Only] The current state of this attachment's functionality.",
+          "description": "[Output Only] The current state of this attachment's functionality. Enum values ACTIVE and UNPROVISIONED are shared by DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect attachments, while enum values PENDING_PARTNER, PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only PARTNER and PARTNER_PROVIDER interconnect attachments. This state can take one of the following values: \n- ACTIVE: The attachment has been turned up and is ready to use. \n- UNPROVISIONED: The attachment is not ready to use yet, because turnup is not complete. \n- PENDING_PARTNER: A newly-created PARTNER attachment that has not yet been configured on the Partner side. \n- PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of provisioning after a PARTNER_PROVIDER attachment was created that references it. \n- PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is waiting for a customer to activate it. \n- DEFUNCT: The attachment was deleted externally and is no longer functional. This could be because the associated Interconnect was removed, or because the other side of a Partner attachment was deleted.",
           "enum": [
             "ACTIVE",
             "DEFUNCT",
@@ -26815,6 +26828,7 @@
           "type": "string"
         },
         "type": {
+          "description": "The type of interconnect attachment this is, which can take one of the following values: \n- DEDICATED: an attachment to a Dedicated Interconnect. \n- PARTNER: an attachment to a Partner Interconnect, created by the customer. \n- PARTNER_PROVIDER: an attachment to a Partner Interconnect, created by the partner.",
           "enum": [
             "DEDICATED",
             "PARTNER",
@@ -27072,7 +27086,7 @@
           "type": "string"
         },
         "portalUrl": {
-          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep-link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
+          "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
           "type": "string"
         }
       },
@@ -27255,6 +27269,7 @@
           "type": "string"
         },
         "state": {
+          "description": "The state of a LACP link, which can take one of the following values: \n- ACTIVE: The link is configured and active within the bundle. \n- DETACHED: The link is not configured within the bundle. This means that the rest of the object should be empty.",
           "enum": [
             "ACTIVE",
             "DETACHED"
@@ -27458,7 +27473,7 @@
           "type": "string"
         },
         "continent": {
-          "description": "[Output Only] Continent for this location.",
+          "description": "[Output Only] Continent for this location, which can take one of the following values: \n- AFRICA \n- ASIA_PAC \n- EUROPE \n- NORTH_AMERICA \n- SOUTH_AMERICA",
           "enum": [
             "AFRICA",
             "ASIA_PAC",
@@ -27531,7 +27546,7 @@
           "type": "string"
         },
         "status": {
-          "description": "[Output Only] The status of this InterconnectLocation. If the status is AVAILABLE, new Interconnects may be provisioned in this InterconnectLocation. Otherwise, no new Interconnects may be provisioned.",
+          "description": "[Output Only] The status of this InterconnectLocation, which can take one of the following values: \n- CLOSED: The InterconnectLocation is closed and is unavailable for provisioning new Interconnects. \n- AVAILABLE: The InterconnectLocation is available for provisioning new Interconnects.",
           "enum": [
             "AVAILABLE",
             "CLOSED"
@@ -27710,7 +27725,7 @@
           "type": "string"
         },
         "issueType": {
-          "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "Form this outage is expected to take, which can take one of the following values: \n- OUTAGE: The Interconnect may be completely out of service for some or all of the specified window. \n- PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain up, but with reduced bandwidth. Note that the versions of this enum prefixed with \"IT_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "IT_OUTAGE",
             "IT_PARTIAL_OUTAGE",
@@ -27730,7 +27745,7 @@
           "type": "string"
         },
         "source": {
-          "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
+          "description": "The party that generated this notification, which can take the following value: \n- GOOGLE: this notification as generated by Google. Note that the value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.",
           "enum": [
             "GOOGLE",
             "NSRC_GOOGLE"
@@ -27747,7 +27762,7 @@
           "type": "string"
         },
         "state": {
-          "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+          "description": "State of this notification, which can take one of the following values: \n- ACTIVE: This outage notification is active. The event could be in the past, present, or future. See start_time and end_time for scheduling. \n- CANCELLED: The outage associated with this notification was cancelled before the outage was due to start. Note that the versions of this enum prefixed with \"NS_\" have been deprecated in favor of the unprefixed values.",
           "enum": [
             "ACTIVE",
             "CANCELLED",
@@ -28097,7 +28112,7 @@
       "id": "LogConfigDataAccessOptions",
       "properties": {
         "logMode": {
-          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.\n\nNOTE: Logging to Gin in a fail-closed manner is currently unsupported while work is being done to satisfy the requirements of go/345. Currently, setting LOG_FAIL_CLOSED mode will have no effect, but still exists because there is active work being done to support it (b/115874152).",
+          "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
           "enum": [
             "LOG_FAIL_CLOSED",
             "LOG_MODE_UNSPECIFIED"
@@ -33152,7 +33167,7 @@
           "description": "BGP information specific to this router."
         },
         "bgpPeers": {
-          "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
+          "description": "BGP information that must be configured into the routing stack to establish BGP peering. This information must specify the peer ASN and either the interface name, IP address, or peer IP address. Please refer to RFC4273.",
           "items": {
             "$ref": "RouterBgpPeer"
           },
@@ -33172,7 +33187,7 @@
           "type": "string"
         },
         "interfaces": {
-          "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
+          "description": "Router interfaces. Each interface requires either one linked resource, (for example, linkedVpnTunnel), or IP address and IP address range (for example, ipRange), or both.",
           "items": {
             "$ref": "RouterInterface"
           },
@@ -33194,7 +33209,7 @@
           "type": "string"
         },
         "nats": {
-          "description": "A list of Nat services created in this router.",
+          "description": "A list of NAT services created in this router.",
           "items": {
             "$ref": "RouterNat"
           },
@@ -33352,7 +33367,7 @@
       "id": "RouterBgp",
       "properties": {
         "advertiseMode": {
-          "description": "User-specified flag to indicate which mode to use for advertisement.",
+          "description": "User-specified flag to indicate which mode to use for advertisement. The options are DEFAULT or CUSTOM.",
           "enum": [
             "CUSTOM",
             "DEFAULT"
@@ -33407,7 +33422,7 @@
           "type": "string"
         },
         "advertisedGroups": {
-          "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+          "description": "User-specified list of prefix groups to advertise in custom mode, which can take one of the following options: \n- ALL_SUBNETS: Advertises all available subnets, including peer VPC subnets. \n- ALL_VPC_SUBNETS: Advertises the router's own VPC subnets. \n- ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC network. Note that this field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These groups are advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
           "items": {
             "enum": [
               "ALL_SUBNETS"
@@ -33420,14 +33435,14 @@
           "type": "array"
         },
         "advertisedIpRanges": {
-          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+          "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in the \"bgp\" message). These IP ranges are advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
           "items": {
             "$ref": "RouterAdvertisedIpRange"
           },
           "type": "array"
         },
         "advertisedRoutePriority": {
-          "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
+          "description": "The priority of routes advertised to this BGP peer. Where there is more than one matching route of maximum length, the routes with the lowest priority value win.",
           "format": "uint32",
           "type": "integer"
         },
@@ -33440,7 +33455,7 @@
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this BGP peer. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this BGP peer. \n- MANAGED_BY_USER is the default value and can be managed by you or other users \n- MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of BGP peer when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -33457,12 +33472,12 @@
           "type": "string"
         },
         "peerAsn": {
-          "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
+          "description": "Peer BGP Autonomous System Number (ASN). Each BGP interface may use a different value.",
           "format": "uint32",
           "type": "integer"
         },
         "peerIpAddress": {
-          "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported.",
+          "description": "IP address of the BGP interface outside Google Cloud Platform. Only IPv4 is supported.",
           "type": "string"
         }
       },
@@ -33472,19 +33487,19 @@
       "id": "RouterInterface",
       "properties": {
         "ipRange": {
-          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
+          "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP address space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
           "type": "string"
         },
         "linkedInterconnectAttachment": {
-          "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked Interconnect attachment. It must be in the same region as the router. Each interface can have one linked resource, which can be either be a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "linkedVpnTunnel": {
-          "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+          "description": "URI of the linked VPN tunnel, which must be in the same region as the router. Each interface can have one linked resource, which can be either a VPN tunnel or an Interconnect attachment.",
           "type": "string"
         },
         "managementType": {
-          "description": "[Output Only] The resource that configures and manages this interface. MANAGED_BY_USER is the default value and can be managed by you or other users; MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically by an InterconnectAttachment of type PARTNER. Google will automatically create, update, and delete this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
+          "description": "[Output Only] The resource that configures and manages this interface. \n- MANAGED_BY_USER is the default value and can be managed directly by users. \n- MANAGED_BY_ATTACHMENT is an interface that is configured and managed by Cloud Interconnect, specifically, by an InterconnectAttachment of type PARTNER. Google automatically creates, updates, and deletes this type of interface when the PARTNER InterconnectAttachment is created, updated, or deleted.",
           "enum": [
             "MANAGED_BY_ATTACHMENT",
             "MANAGED_BY_USER"
@@ -33624,8 +33639,12 @@
           "format": "int32",
           "type": "integer"
         },
+        "logConfig": {
+          "$ref": "RouterNatLogConfig",
+          "description": "Configure logging on this NAT."
+        },
         "minPortsPerVm": {
-          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This gets rounded up to the nearest power of 2. Eg. if the value of this field is 50, at least 64 ports will be allocated to a VM.",
+          "description": "Minimum number of ports allocated to a VM from this NAT config. If not set, a default number of ports is allocated to a VM. This is rounded up to the nearest power of 2. For example, if the value of this field is 50, at least 64 ports are allocated to a VM.",
           "format": "int32",
           "type": "integer"
         },
@@ -33635,7 +33654,7 @@
           "type": "string"
         },
         "natIpAllocateOption": {
-          "description": "Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should be empty.",
+          "description": "Specify the NatIpAllocateOption, which can take one of the following values: \n- MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When there are not enough specified Nat IPs, the Nat service fails for new VMs. \n- AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform; customers can't specify any Nat IPs. When choosing AUTO_ONLY, then nat_ip should be empty.",
           "enum": [
             "AUTO_ONLY",
             "MANUAL_ONLY"
@@ -33647,14 +33666,14 @@
           "type": "string"
         },
         "natIps": {
-          "description": "A list of URLs of the IP resources used for this Nat service. These IPs must be valid static external IP addresses assigned to the project. max_length is subject to change post alpha.",
+          "description": "A list of URLs of the IP resources used for this Nat service. These IP addresses must be valid static external IP addresses assigned to the project.",
           "items": {
             "type": "string"
           },
           "type": "array"
         },
         "sourceSubnetworkIpRangesToNat": {
-          "description": "Specify the Nat option. If this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
+          "description": "Specify the Nat option, which can take one of the following values: \n- ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every Subnetwork are allowed to Nat. \n- ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges in every Subnetwork are allowed to Nat. \n- LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat (specified in the field subnetwork below) The default is SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
           "enum": [
             "ALL_SUBNETWORKS_ALL_IP_RANGES",
             "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
@@ -33692,12 +33711,37 @@
       },
       "type": "object"
     },
+    "RouterNatLogConfig": {
+      "description": "Configuration of logging on a NAT.",
+      "id": "RouterNatLogConfig",
+      "properties": {
+        "enable": {
+          "description": "Indicates whether or not to export logs. This is false by default.",
+          "type": "boolean"
+        },
+        "filter": {
+          "description": "Specifies the desired filtering of logs on this NAT. If unspecified, logs are exported for all connections handled by this NAT.",
+          "enum": [
+            "ALL",
+            "ERRORS_ONLY",
+            "TRANSLATIONS_ONLY"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "RouterNatSubnetworkToNat": {
       "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
       "id": "RouterNatSubnetworkToNat",
       "properties": {
         "name": {
-          "description": "URL for the subnetwork resource to use NAT.",
+          "description": "URL for the subnetwork resource that will use NAT.",
           "type": "string"
         },
         "secondaryIpRangeNames": {
@@ -33708,7 +33752,7 @@
           "type": "array"
         },
         "sourceIpRangesToNat": {
-          "description": "Specify the options for NAT ranges in the Subnetwork. All usages of single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
+          "description": "Specify the options for NAT ranges in the Subnetwork. All options of a single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
           "items": {
             "enum": [
               "ALL_IP_RANGES",
@@ -34587,7 +34631,7 @@
         },
         "snapshotEncryptionKey": {
           "$ref": "CustomerEncryptionKey",
-          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
+          "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the snapshot later. For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the snapshot.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
         },
         "sourceDisk": {
           "description": "[Output Only] The source disk used to create this snapshot.",
diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go
index a8d3b1a..2c40ec8 100644
--- a/compute/v1/compute-gen.go
+++ b/compute/v1/compute-gen.go
@@ -2334,6 +2334,23 @@
 	// the source images are encrypted with your own keys.
 	SourceImageEncryptionKey *CustomerEncryptionKey `json:"sourceImageEncryptionKey,omitempty"`
 
+	// SourceSnapshot: The source snapshot to create this disk. When
+	// creating a new instance, one of initializeParams.sourceSnapshot or
+	// disks.source is required except for local SSD.
+	//
+	// To create a disk with a snapshot that you created, specify the
+	// snapshot name in the following
+	// format:
+	// global/snapshots/my-backup
+	//
+	//
+	// If the source snapshot is deleted later, this field will not be set.
+	SourceSnapshot string `json:"sourceSnapshot,omitempty"`
+
+	// SourceSnapshotEncryptionKey: The customer-supplied encryption key of
+	// the source snapshot.
+	SourceSnapshotEncryptionKey *CustomerEncryptionKey `json:"sourceSnapshotEncryptionKey,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Description") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -3818,6 +3835,7 @@
 	// Possible values:
 	//   "EXTERNAL"
 	//   "INTERNAL"
+	//   "INTERNAL_SELF_MANAGED"
 	//   "INVALID_LOAD_BALANCING_SCHEME"
 	LoadBalancingScheme string `json:"loadBalancingScheme,omitempty"`
 
@@ -5460,8 +5478,8 @@
 	//
 	// After you encrypt a disk with a customer-supplied key, you must
 	// provide the same key if you use the disk later (e.g. to create a disk
-	// snapshot or an image, or to attach the disk to a virtual
-	// machine).
+	// snapshot, to create a disk image, to create a machine image, or to
+	// attach the disk to a virtual machine).
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
 	// of the disk.
@@ -5637,11 +5655,11 @@
 
 	// Type: URL of the disk type resource describing which disk type to use
 	// to create the disk. Provide this when creating the disk. For example:
-	// project/zones/zone/diskTypes/pd-standard or pd-ssd
+	// projects/project/zones/zone/diskTypes/pd-standard or pd-ssd
 	Type string `json:"type,omitempty"`
 
 	// Users: [Output Only] Links to the users of the disk (attached
-	// instances) in form: project/zones/zone/instances/instance
+	// instances) in form: projects/project/zones/zone/instances/instance
 	Users []string `json:"users,omitempty"`
 
 	// Zone: [Output Only] URL of the zone where the disk resides. You must
@@ -7473,6 +7491,7 @@
 	// Possible values:
 	//   "EXTERNAL"
 	//   "INTERNAL"
+	//   "INTERNAL_SELF_MANAGED"
 	//   "INVALID"
 	LoadBalancingScheme string `json:"loadBalancingScheme,omitempty"`
 
@@ -9568,8 +9587,9 @@
 	//   "TAR"
 	ContainerType string `json:"containerType,omitempty"`
 
-	// Sha1Checksum: An optional SHA1 checksum of the disk image before
-	// unpackaging provided by the client when the disk image is created.
+	// Sha1Checksum: [Deprecated] This field is deprecated. An optional SHA1
+	// checksum of the disk image before unpackaging provided by the client
+	// when the disk image is created.
 	Sha1Checksum string `json:"sha1Checksum,omitempty"`
 
 	// Source: The full Google Cloud Storage URL where the disk image is
@@ -13074,8 +13094,13 @@
 	// InterconnectAttachments configured to use this Interconnect.
 	InterconnectAttachments []string `json:"interconnectAttachments,omitempty"`
 
-	// InterconnectType: Type of interconnect. Note that "IT_PRIVATE" has
-	// been deprecated in favor of "DEDICATED"
+	// InterconnectType: Type of interconnect, which can take one of the
+	// following values:
+	// - PARTNER: A partner-managed interconnection shared between customers
+	// though a partner.
+	// - DEDICATED: A dedicated physical interconnection with the customer.
+	// Note that a value IT_PRIVATE has been deprecated in favor of
+	// DEDICATED.
 	//
 	// Possible values:
 	//   "DEDICATED"
@@ -13087,8 +13112,12 @@
 	// for interconnects.
 	Kind string `json:"kind,omitempty"`
 
-	// LinkType: Type of link requested. This field indicates speed of each
-	// of the links in the bundle, not the entire bundle.
+	// LinkType: Type of link requested, which can take one of the following
+	// values:
+	// - LINK_TYPE_ETHERNET_10G_LR: A 10G Ethernet with LR optics
+	// - LINK_TYPE_ETHERNET_100G_LR: A 100G Ethernet with LR optics. Note
+	// that this field indicates the speed of each of the links in the
+	// bundle, not the speed of the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_10G_LR"
@@ -13114,8 +13143,16 @@
 	// Notifications.
 	NocContactEmail string `json:"nocContactEmail,omitempty"`
 
-	// OperationalStatus: [Output Only] The current status of whether or not
-	// this Interconnect is functional.
+	// OperationalStatus: [Output Only] The current status of this
+	// Interconnect's functionality, which can take one of the following
+	// values:
+	// - OS_ACTIVE: A valid Interconnect, which is turned up and is ready to
+	// use. Attachments may be provisioned on this Interconnect.
+	// - OS_UNPROVISIONED: An Interconnect that has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - OS_UNDER_MAINTENANCE: An Interconnect that is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -13139,8 +13176,15 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// State: [Output Only] The current state of whether or not this
-	// Interconnect is functional.
+	// State: [Output Only] The current state of Interconnect functionality,
+	// which can take one of the following values:
+	// - ACTIVE: The Interconnect is valid, turned up and ready to use.
+	// Attachments may be provisioned on this Interconnect.
+	// - UNPROVISIONED: The Interconnect has not completed turnup. No
+	// attachments may be provisioned on this Interconnect.
+	// - UNDER_MAINTENANCE: The Interconnect is undergoing internal
+	// maintenance. No attachments may be provisioned or updated on this
+	// Interconnect.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -13183,10 +13227,22 @@
 	// Not present for PARTNER_PROVIDER.
 	AdminEnabled bool `json:"adminEnabled,omitempty"`
 
-	// Bandwidth: Provisioned bandwidth capacity for the
-	// interconnectAttachment. Can be set by the partner to update the
-	// customer's provisioned bandwidth. Output only for PARTNER type,
-	// mutable for PARTNER_PROVIDER and DEDICATED.
+	// Bandwidth: Provisioned bandwidth capacity for the interconnect
+	// attachment. For attachments of type DEDICATED, the user can set the
+	// bandwidth. For attachments of type PARTNER, the Google Partner that
+	// is operating the interconnect must set the bandwidth. Output only for
+	// PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED, and can
+	// take one of the following values:
+	// - BPS_50M: 50 Mbit/s
+	// - BPS_100M: 100 Mbit/s
+	// - BPS_200M: 200 Mbit/s
+	// - BPS_300M: 300 Mbit/s
+	// - BPS_400M: 400 Mbit/s
+	// - BPS_500M: 500 Mbit/s
+	// - BPS_1G: 1 Gbit/s
+	// - BPS_2G: 2 Gbit/s
+	// - BPS_5G: 5 Gbit/s
+	// - BPS_10G: 10 Gbit/s
 	//
 	// Possible values:
 	//   "BPS_100M"
@@ -13229,12 +13285,16 @@
 	Description string `json:"description,omitempty"`
 
 	// EdgeAvailabilityDomain: Desired availability domain for the
-	// attachment. Only available for type PARTNER, at creation time. For
-	// improved reliability, customers should configure a pair of
-	// attachments with one per availability domain. The selected
-	// availability domain will be provided to the Partner via the pairing
-	// key so that the provisioned circuit will lie in the specified domain.
-	// If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
+	// attachment. Only available for type PARTNER, at creation time, and
+	// can take one of the following values:
+	// - AVAILABILITY_DOMAIN_ANY
+	// - AVAILABILITY_DOMAIN_1
+	// - AVAILABILITY_DOMAIN_2 For improved reliability, customers should
+	// configure a pair of attachments, one per availability domain. The
+	// selected availability domain will be provided to the Partner via the
+	// pairing key, so that the provisioned circuit will lie in the
+	// specified domain. If not specified, the value will default to
+	// AVAILABILITY_DOMAIN_ANY.
 	//
 	// Possible values:
 	//   "AVAILABILITY_DOMAIN_1"
@@ -13269,7 +13329,12 @@
 	Name string `json:"name,omitempty"`
 
 	// OperationalStatus: [Output Only] The current status of whether or not
-	// this interconnect attachment is functional.
+	// this interconnect attachment is functional, which can take one of the
+	// following values:
+	// - OS_ACTIVE: The attachment has been turned up and is ready to use.
+	//
+	// - OS_UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
 	//
 	// Possible values:
 	//   "OS_ACTIVE"
@@ -13282,10 +13347,10 @@
 	// selected partner. Of the form "XXXXX/region/domain"
 	PairingKey string `json:"pairingKey,omitempty"`
 
-	// PartnerAsn: Optional BGP ASN for the router that should be supplied
-	// by a layer 3 Partner if they configured BGP on behalf of the
-	// customer. Output only for PARTNER type, input only for
-	// PARTNER_PROVIDER, not available for DEDICATED.
+	// PartnerAsn: Optional BGP ASN for the router supplied by a Layer 3
+	// Partner if they configured BGP on behalf of the customer. Output only
+	// for PARTNER type, input only for PARTNER_PROVIDER, not available for
+	// DEDICATED.
 	PartnerAsn int64 `json:"partnerAsn,omitempty,string"`
 
 	// PartnerMetadata: Informational metadata about Partner attachments
@@ -13314,7 +13379,26 @@
 	SelfLink string `json:"selfLink,omitempty"`
 
 	// State: [Output Only] The current state of this attachment's
-	// functionality.
+	// functionality. Enum values ACTIVE and UNPROVISIONED are shared by
+	// DEDICATED/PRIVATE, PARTNER, and PARTNER_PROVIDER interconnect
+	// attachments, while enum values PENDING_PARTNER,
+	// PARTNER_REQUEST_RECEIVED, and PENDING_CUSTOMER are used for only
+	// PARTNER and PARTNER_PROVIDER interconnect attachments. This state can
+	// take one of the following values:
+	// - ACTIVE: The attachment has been turned up and is ready to use.
+	// - UNPROVISIONED: The attachment is not ready to use yet, because
+	// turnup is not complete.
+	// - PENDING_PARTNER: A newly-created PARTNER attachment that has not
+	// yet been configured on the Partner side.
+	// - PARTNER_REQUEST_RECEIVED: A PARTNER attachment is in the process of
+	// provisioning after a PARTNER_PROVIDER attachment was created that
+	// references it.
+	// - PENDING_CUSTOMER: A PARTNER or PARTNER_PROVIDER attachment that is
+	// waiting for a customer to activate it.
+	// - DEFUNCT: The attachment was deleted externally and is no longer
+	// functional. This could be because the associated Interconnect was
+	// removed, or because the other side of a Partner attachment was
+	// deleted.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -13326,6 +13410,14 @@
 	//   "UNPROVISIONED"
 	State string `json:"state,omitempty"`
 
+	// Type: The type of interconnect attachment this is, which can take one
+	// of the following values:
+	// - DEDICATED: an attachment to a Dedicated Interconnect.
+	// - PARTNER: an attachment to a Partner Interconnect, created by the
+	// customer.
+	// - PARTNER_PROVIDER: an attachment to a Partner Interconnect, created
+	// by the partner.
+	//
 	// Possible values:
 	//   "DEDICATED"
 	//   "PARTNER"
@@ -13694,7 +13786,7 @@
 	PartnerName string `json:"partnerName,omitempty"`
 
 	// PortalUrl: URL of the Partner?s portal for this Attachment. Partners
-	// may customise this to be a deep-link to the specific resource on the
+	// may customise this to be a deep link to the specific resource on the
 	// Partner portal. This value may be validated to match approved Partner
 	// values.
 	PortalUrl string `json:"portalUrl,omitempty"`
@@ -14010,6 +14102,12 @@
 	// LACP exchange.
 	NeighborSystemId string `json:"neighborSystemId,omitempty"`
 
+	// State: The state of a LACP link, which can take one of the following
+	// values:
+	// - ACTIVE: The link is configured and active within the bundle.
+	// - DETACHED: The link is not configured within the bundle. This means
+	// that the rest of the object should be empty.
+	//
 	// Possible values:
 	//   "ACTIVE"
 	//   "DETACHED"
@@ -14328,7 +14426,13 @@
 	// "Amsterdam, Netherlands".
 	City string `json:"city,omitempty"`
 
-	// Continent: [Output Only] Continent for this location.
+	// Continent: [Output Only] Continent for this location, which can take
+	// one of the following values:
+	// - AFRICA
+	// - ASIA_PAC
+	// - EUROPE
+	// - NORTH_AMERICA
+	// - SOUTH_AMERICA
 	//
 	// Possible values:
 	//   "AFRICA"
@@ -14381,10 +14485,12 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
-	// Status: [Output Only] The status of this InterconnectLocation. If the
-	// status is AVAILABLE, new Interconnects may be provisioned in this
-	// InterconnectLocation. Otherwise, no new Interconnects may be
-	// provisioned.
+	// Status: [Output Only] The status of this InterconnectLocation, which
+	// can take one of the following values:
+	// - CLOSED: The InterconnectLocation is closed and is unavailable for
+	// provisioning new Interconnects.
+	// - AVAILABLE: The InterconnectLocation is available for provisioning
+	// new Interconnects.
 	//
 	// Possible values:
 	//   "AVAILABLE"
@@ -14632,9 +14738,14 @@
 	// epoch).
 	EndTime int64 `json:"endTime,omitempty,string"`
 
-	// IssueType: Form this outage is expected to take. Note that the "IT_"
-	// versions of this enum have been deprecated in favor of the unprefixed
-	// values.
+	// IssueType: Form this outage is expected to take, which can take one
+	// of the following values:
+	// - OUTAGE: The Interconnect may be completely out of service for some
+	// or all of the specified window.
+	// - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a
+	// whole should remain up, but with reduced bandwidth. Note that the
+	// versions of this enum prefixed with "IT_" have been deprecated in
+	// favor of the unprefixed values.
 	//
 	// Possible values:
 	//   "IT_OUTAGE"
@@ -14646,8 +14757,10 @@
 	// Name: Unique identifier for this outage notification.
 	Name string `json:"name,omitempty"`
 
-	// Source: The party that generated this notification. Note that
-	// "NSRC_GOOGLE" has been deprecated in favor of "GOOGLE"
+	// Source: The party that generated this notification, which can take
+	// the following value:
+	// - GOOGLE: this notification as generated by Google. Note that the
+	// value of NSRC_GOOGLE has been deprecated in favor of GOOGLE.
 	//
 	// Possible values:
 	//   "GOOGLE"
@@ -14658,8 +14771,15 @@
 	// Unix epoch).
 	StartTime int64 `json:"startTime,omitempty,string"`
 
-	// State: State of this notification. Note that the "NS_" versions of
-	// this enum have been deprecated in favor of the unprefixed values.
+	// State: State of this notification, which can take one of the
+	// following values:
+	// - ACTIVE: This outage notification is active. The event could be in
+	// the past, present, or future. See start_time and end_time for
+	// scheduling.
+	// - CANCELLED: The outage associated with this notification was
+	// cancelled before the outage was due to start. Note that the versions
+	// of this enum prefixed with "NS_" have been deprecated in favor of the
+	// unprefixed values.
 	//
 	// Possible values:
 	//   "ACTIVE"
@@ -15211,12 +15331,6 @@
 	// the caller. This is relevant only in the LocalIAM implementation, for
 	// now.
 	//
-	// NOTE: Logging to Gin in a fail-closed manner is currently unsupported
-	// while work is being done to satisfy the requirements of go/345.
-	// Currently, setting LOG_FAIL_CLOSED mode will have no effect, but
-	// still exists because there is active work being done to support it
-	// (b/115874152).
-	//
 	// Possible values:
 	//   "LOG_FAIL_CLOSED"
 	//   "LOG_MODE_UNSPECIFIED"
@@ -22580,9 +22694,10 @@
 	// Bgp: BGP information specific to this router.
 	Bgp *RouterBgp `json:"bgp,omitempty"`
 
-	// BgpPeers: BGP information that needs to be configured into the
-	// routing stack to establish the BGP peering. It must specify peer ASN
-	// and either interface name, IP, or peer IP. Please refer to RFC4273.
+	// BgpPeers: BGP information that must be configured into the routing
+	// stack to establish BGP peering. This information must specify the
+	// peer ASN and either the interface name, IP address, or peer IP
+	// address. Please refer to RFC4273.
 	BgpPeers []*RouterBgpPeer `json:"bgpPeers,omitempty"`
 
 	// CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
@@ -22598,8 +22713,8 @@
 	Id uint64 `json:"id,omitempty,string"`
 
 	// Interfaces: Router interfaces. Each interface requires either one
-	// linked resource (e.g. linkedVpnTunnel), or IP address and IP address
-	// range (e.g. ipRange), or both.
+	// linked resource, (for example, linkedVpnTunnel), or IP address and IP
+	// address range (for example, ipRange), or both.
 	Interfaces []*RouterInterface `json:"interfaces,omitempty"`
 
 	// Kind: [Output Only] Type of resource. Always compute#router for
@@ -22615,7 +22730,7 @@
 	// last character, which cannot be a dash.
 	Name string `json:"name,omitempty"`
 
-	// Nats: A list of Nat services created in this router.
+	// Nats: A list of NAT services created in this router.
 	Nats []*RouterNat `json:"nats,omitempty"`
 
 	// Network: URI of the network to which this router belongs.
@@ -22846,7 +22961,7 @@
 
 type RouterBgp struct {
 	// AdvertiseMode: User-specified flag to indicate which mode to use for
-	// advertisement.
+	// advertisement. The options are DEFAULT or CUSTOM.
 	//
 	// Possible values:
 	//   "CUSTOM"
@@ -22910,11 +23025,15 @@
 	AdvertiseMode string `json:"advertiseMode,omitempty"`
 
 	// AdvertisedGroups: User-specified list of prefix groups to advertise
-	// in custom mode. This field can only be populated if advertise_mode is
-	// CUSTOM and overrides the list defined for the router (in Bgp
-	// message). These groups will be advertised in addition to any
-	// specified prefixes. Leave this field blank to advertise no custom
-	// groups.
+	// in custom mode, which can take one of the following options:
+	// - ALL_SUBNETS: Advertises all available subnets, including peer VPC
+	// subnets.
+	// - ALL_VPC_SUBNETS: Advertises the router's own VPC subnets.
+	// - ALL_PEER_VPC_SUBNETS: Advertises peer subnets of the router's VPC
+	// network. Note that this field can only be populated if advertise_mode
+	// is CUSTOM and overrides the list defined for the router (in the "bgp"
+	// message). These groups are advertised in addition to any specified
+	// prefixes. Leave this field blank to advertise no custom groups.
 	//
 	// Possible values:
 	//   "ALL_SUBNETS"
@@ -22923,14 +23042,14 @@
 	// AdvertisedIpRanges: User-specified list of individual IP ranges to
 	// advertise in custom mode. This field can only be populated if
 	// advertise_mode is CUSTOM and overrides the list defined for the
-	// router (in Bgp message). These IP ranges will be advertised in
+	// router (in the "bgp" message). These IP ranges are advertised in
 	// addition to any specified groups. Leave this field blank to advertise
 	// no custom IP ranges.
 	AdvertisedIpRanges []*RouterAdvertisedIpRange `json:"advertisedIpRanges,omitempty"`
 
 	// AdvertisedRoutePriority: The priority of routes advertised to this
-	// BGP peer. In the case where there is more than one matching route of
-	// maximum length, the routes with lowest priority value win.
+	// BGP peer. Where there is more than one matching route of maximum
+	// length, the routes with the lowest priority value win.
 	AdvertisedRoutePriority int64 `json:"advertisedRoutePriority,omitempty"`
 
 	// InterfaceName: Name of the interface the BGP peer is associated with.
@@ -22941,12 +23060,14 @@
 	IpAddress string `json:"ipAddress,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this BGP peer. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is a BGP peer
-	// that is configured and managed by Cloud Interconnect, specifically by
-	// an InterconnectAttachment of type PARTNER. Google will automatically
-	// create, update, and delete this type of BGP peer when the PARTNER
-	// InterconnectAttachment is created, updated, or deleted.
+	// manages this BGP peer.
+	// - MANAGED_BY_USER is the default value and can be managed by you or
+	// other users
+	// - MANAGED_BY_ATTACHMENT is a BGP peer that is configured and managed
+	// by Cloud Interconnect, specifically by an InterconnectAttachment of
+	// type PARTNER. Google automatically creates, updates, and deletes this
+	// type of BGP peer when the PARTNER InterconnectAttachment is created,
+	// updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -22957,12 +23078,12 @@
 	// and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// PeerAsn: Peer BGP Autonomous System Number (ASN). For VPN use case,
-	// this value can be different for every tunnel.
+	// PeerAsn: Peer BGP Autonomous System Number (ASN). Each BGP interface
+	// may use a different value.
 	PeerAsn int64 `json:"peerAsn,omitempty"`
 
-	// PeerIpAddress: IP address of the BGP interface outside Google cloud.
-	// Only IPv4 is supported.
+	// PeerIpAddress: IP address of the BGP interface outside Google Cloud
+	// Platform. Only IPv4 is supported.
 	PeerIpAddress string `json:"peerIpAddress,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AdvertiseMode") to
@@ -22990,32 +23111,33 @@
 
 type RouterInterface struct {
 	// IpRange: IP address and range of the interface. The IP range must be
-	// in the RFC3927 link-local IP space. The value must be a
+	// in the RFC3927 link-local IP address space. The value must be a
 	// CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not
 	// truncate the address as it represents the IP address of the
 	// interface.
 	IpRange string `json:"ipRange,omitempty"`
 
-	// LinkedInterconnectAttachment: URI of the linked interconnect
+	// LinkedInterconnectAttachment: URI of the linked Interconnect
 	// attachment. It must be in the same region as the router. Each
-	// interface can have at most one linked resource and it could either be
-	// a VPN Tunnel or an interconnect attachment.
+	// interface can have one linked resource, which can be either be a VPN
+	// tunnel or an Interconnect attachment.
 	LinkedInterconnectAttachment string `json:"linkedInterconnectAttachment,omitempty"`
 
-	// LinkedVpnTunnel: URI of the linked VPN tunnel. It must be in the same
-	// region as the router. Each interface can have at most one linked
-	// resource and it could either be a VPN Tunnel or an interconnect
+	// LinkedVpnTunnel: URI of the linked VPN tunnel, which must be in the
+	// same region as the router. Each interface can have one linked
+	// resource, which can be either a VPN tunnel or an Interconnect
 	// attachment.
 	LinkedVpnTunnel string `json:"linkedVpnTunnel,omitempty"`
 
 	// ManagementType: [Output Only] The resource that configures and
-	// manages this interface. MANAGED_BY_USER is the default value and can
-	// be managed by you or other users; MANAGED_BY_ATTACHMENT is an
-	// interface that is configured and managed by Cloud Interconnect,
-	// specifically by an InterconnectAttachment of type PARTNER. Google
-	// will automatically create, update, and delete this type of interface
-	// when the PARTNER InterconnectAttachment is created, updated, or
-	// deleted.
+	// manages this interface.
+	// - MANAGED_BY_USER is the default value and can be managed directly by
+	// users.
+	// - MANAGED_BY_ATTACHMENT is an interface that is configured and
+	// managed by Cloud Interconnect, specifically, by an
+	// InterconnectAttachment of type PARTNER. Google automatically creates,
+	// updates, and deletes this type of interface when the PARTNER
+	// InterconnectAttachment is created, updated, or deleted.
 	//
 	// Possible values:
 	//   "MANAGED_BY_ATTACHMENT"
@@ -23215,18 +23337,27 @@
 	// Defaults to 30s if not set.
 	IcmpIdleTimeoutSec int64 `json:"icmpIdleTimeoutSec,omitempty"`
 
+	// LogConfig: Configure logging on this NAT.
+	LogConfig *RouterNatLogConfig `json:"logConfig,omitempty"`
+
 	// MinPortsPerVm: Minimum number of ports allocated to a VM from this
 	// NAT config. If not set, a default number of ports is allocated to a
-	// VM. This gets rounded up to the nearest power of 2. Eg. if the value
-	// of this field is 50, at least 64 ports will be allocated to a VM.
+	// VM. This is rounded up to the nearest power of 2. For example, if the
+	// value of this field is 50, at least 64 ports are allocated to a VM.
 	MinPortsPerVm int64 `json:"minPortsPerVm,omitempty"`
 
 	// Name: Unique name of this Nat service. The name must be 1-63
 	// characters long and comply with RFC1035.
 	Name string `json:"name,omitempty"`
 
-	// NatIpAllocateOption: Specify the NatIpAllocateOption. If it is
-	// AUTO_ONLY, then nat_ip should be empty.
+	// NatIpAllocateOption: Specify the NatIpAllocateOption, which can take
+	// one of the following values:
+	// - MANUAL_ONLY: Uses only Nat IP addresses provided by customers. When
+	// there are not enough specified Nat IPs, the Nat service fails for new
+	// VMs.
+	// - AUTO_ONLY: Nat IPs are allocated by Google Cloud Platform;
+	// customers can't specify any Nat IPs. When choosing AUTO_ONLY, then
+	// nat_ip should be empty.
 	//
 	// Possible values:
 	//   "AUTO_ONLY"
@@ -23234,12 +23365,20 @@
 	NatIpAllocateOption string `json:"natIpAllocateOption,omitempty"`
 
 	// NatIps: A list of URLs of the IP resources used for this Nat service.
-	// These IPs must be valid static external IP addresses assigned to the
-	// project. max_length is subject to change post alpha.
+	// These IP addresses must be valid static external IP addresses
+	// assigned to the project.
 	NatIps []string `json:"natIps,omitempty"`
 
-	// SourceSubnetworkIpRangesToNat: Specify the Nat option. If this field
-	// contains ALL_SUBNETWORKS_ALL_IP_RANGES or
+	// SourceSubnetworkIpRangesToNat: Specify the Nat option, which can take
+	// one of the following values:
+	// - ALL_SUBNETWORKS_ALL_IP_RANGES: All of the IP ranges in every
+	// Subnetwork are allowed to Nat.
+	// - ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES: All of the primary IP ranges
+	// in every Subnetwork are allowed to Nat.
+	// - LIST_OF_SUBNETWORKS: A list of Subnetworks are allowed to Nat
+	// (specified in the field subnetwork below) The default is
+	// SUBNETWORK_IP_RANGE_TO_NAT_OPTION_UNSPECIFIED. Note that if this
+	// field contains ALL_SUBNETWORKS_ALL_IP_RANGES or
 	// ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any
 	// other Router.Nat section in any Router for this network in this
 	// region.
@@ -23291,10 +23430,49 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// RouterNatLogConfig: Configuration of logging on a NAT.
+type RouterNatLogConfig struct {
+	// Enable: Indicates whether or not to export logs. This is false by
+	// default.
+	Enable bool `json:"enable,omitempty"`
+
+	// Filter: Specifies the desired filtering of logs on this NAT. If
+	// unspecified, logs are exported for all connections handled by this
+	// NAT.
+	//
+	// Possible values:
+	//   "ALL"
+	//   "ERRORS_ONLY"
+	//   "TRANSLATIONS_ONLY"
+	Filter string `json:"filter,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Enable") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "Enable") to include in API
+	// requests with the JSON null value. By default, fields with empty
+	// values are omitted from API requests. However, any field with an
+	// empty value appearing in NullFields will be sent to the server as
+	// null. It is an error if a field in this list has a non-empty value.
+	// This may be used to include null fields in Patch requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *RouterNatLogConfig) MarshalJSON() ([]byte, error) {
+	type NoMethod RouterNatLogConfig
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // RouterNatSubnetworkToNat: Defines the IP ranges that want to use NAT
 // for a subnetwork.
 type RouterNatSubnetworkToNat struct {
-	// Name: URL for the subnetwork resource to use NAT.
+	// Name: URL for the subnetwork resource that will use NAT.
 	Name string `json:"name,omitempty"`
 
 	// SecondaryIpRangeNames: A list of the secondary ranges of the
@@ -23304,7 +23482,7 @@
 	SecondaryIpRangeNames []string `json:"secondaryIpRangeNames,omitempty"`
 
 	// SourceIpRangesToNat: Specify the options for NAT ranges in the
-	// Subnetwork. All usages of single value are valid except
+	// Subnetwork. All options of a single value are valid except
 	// NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple
 	// values is: ["PRIMARY_IP_RANGE", "LIST_OF_SECONDARY_IP_RANGES"]
 	// Default: [ALL_IP_RANGES]
@@ -24629,12 +24807,12 @@
 	// customer-supplied encryption key.
 	//
 	// After you encrypt a snapshot using a customer-supplied key, you must
-	// provide the same key if you use the image later For example, you must
-	// provide the encryption key when you create a disk from the encrypted
-	// snapshot in a future request.
+	// provide the same key if you use the snapshot later. For example, you
+	// must provide the encryption key when you create a disk from the
+	// encrypted snapshot in a future request.
 	//
 	// Customer-supplied encryption keys do not protect access to metadata
-	// of the disk.
+	// of the snapshot.
 	//
 	// If you do not provide an encryption key when creating the snapshot,
 	// then the snapshot will be encrypted using an automatically generated
@@ -38913,7 +39091,10 @@
 	return c
 }
 
-// GuestFlush sets the optional parameter "guestFlush":
+// GuestFlush sets the optional parameter "guestFlush": [Input Only]
+// Specifies to create an application consistent snapshot by informing
+// the OS to prepare for the snapshot process. Currently only supported
+// on Windows instances using the Volume Shadow Copy Service (VSS).
 func (c *DisksCreateSnapshotCall) GuestFlush(guestFlush bool) *DisksCreateSnapshotCall {
 	c.urlParams_.Set("guestFlush", fmt.Sprint(guestFlush))
 	return c
@@ -39047,6 +39228,7 @@
 	//       "type": "string"
 	//     },
 	//     "guestFlush": {
+	//       "description": "[Input Only] Specifies to create an application consistent snapshot by informing the OS to prepare for the snapshot process. Currently only supported on Windows instances using the Volume Shadow Copy Service (VSS).",
 	//       "location": "query",
 	//       "type": "boolean"
 	//     },
diff --git a/container/v1beta1/container-api.json b/container/v1beta1/container-api.json
index 089d009..3355e31 100644
--- a/container/v1beta1/container-api.json
+++ b/container/v1beta1/container-api.json
@@ -2483,7 +2483,7 @@
       }
     }
   },
-  "revision": "20190514",
+  "revision": "20190524",
   "rootUrl": "https://container.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -2918,6 +2918,13 @@
       "description": "ClusterAutoscaling contains global, per-cluster information\nrequired by Cluster Autoscaler to automatically adjust\nthe size of the cluster and create/delete\nnode pools based on the current needs.",
       "id": "ClusterAutoscaling",
       "properties": {
+        "autoprovisioningLocations": {
+          "description": "The list of Google Compute Engine [zones](/compute/docs/zones#available)\nin which the NodePool's nodes can be created by NAP.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
         "autoprovisioningNodePoolDefaults": {
           "$ref": "AutoprovisioningNodePoolDefaults",
           "description": "AutoprovisioningNodePoolDefaults contains defaults for a node pool\ncreated by NAP."
@@ -3819,6 +3826,13 @@
           },
           "type": "array"
         },
+        "locations": {
+          "description": "The list of Google Compute Engine [zones](/compute/docs/zones#available)\nin which the NodePool's nodes should be located.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
         "management": {
           "$ref": "NodeManagement",
           "description": "NodeManagement configuration for this NodePool."
@@ -4734,6 +4748,13 @@
           "description": "The desired image type for the node pool.",
           "type": "string"
         },
+        "locations": {
+          "description": "The desired list of Google Compute Engine\n[zones](/compute/docs/zones#available) in which the node pool's nodes\nshould be located. Changing the locations for a node pool will result\nin nodes being either created or removed from the node pool, depending\non whether locations are being added or removed.",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
         "name": {
           "description": "The name (project, location, cluster, node pool) of the node pool to\nupdate. Specified in the format\n'projects/*/locations/*/clusters/*/nodePools/*'.",
           "type": "string"
diff --git a/container/v1beta1/container-gen.go b/container/v1beta1/container-gen.go
index 6b5a581..89704de 100644
--- a/container/v1beta1/container-gen.go
+++ b/container/v1beta1/container-gen.go
@@ -1089,6 +1089,11 @@
 // the size of the cluster and create/delete
 // node pools based on the current needs.
 type ClusterAutoscaling struct {
+	// AutoprovisioningLocations: The list of Google Compute Engine
+	// [zones](/compute/docs/zones#available)
+	// in which the NodePool's nodes can be created by NAP.
+	AutoprovisioningLocations []string `json:"autoprovisioningLocations,omitempty"`
+
 	// AutoprovisioningNodePoolDefaults: AutoprovisioningNodePoolDefaults
 	// contains defaults for a node pool
 	// created by NAP.
@@ -1104,7 +1109,7 @@
 	ResourceLimits []*ResourceLimit `json:"resourceLimits,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g.
-	// "AutoprovisioningNodePoolDefaults") to unconditionally include in API
+	// "AutoprovisioningLocations") to unconditionally include in API
 	// requests. By default, fields with empty values are omitted from API
 	// requests. However, any non-pointer, non-interface field appearing in
 	// ForceSendFields will be sent to the server regardless of whether the
@@ -1113,10 +1118,10 @@
 	ForceSendFields []string `json:"-"`
 
 	// NullFields is a list of field names (e.g.
-	// "AutoprovisioningNodePoolDefaults") to include in API requests with
-	// the JSON null value. By default, fields with empty values are omitted
-	// from API requests. However, any field with an empty value appearing
-	// in NullFields will be sent to the server as null. It is an error if a
+	// "AutoprovisioningLocations") to include in API requests with the JSON
+	// null value. By default, fields with empty values are omitted from API
+	// requests. However, any field with an empty value appearing in
+	// NullFields will be sent to the server as null. It is an error if a
 	// field in this list has a non-empty value. This may be used to include
 	// null fields in Patch requests.
 	NullFields []string `json:"-"`
@@ -2984,6 +2989,11 @@
 	// associated with this node pool.
 	InstanceGroupUrls []string `json:"instanceGroupUrls,omitempty"`
 
+	// Locations: The list of Google Compute Engine
+	// [zones](/compute/docs/zones#available)
+	// in which the NodePool's nodes should be located.
+	Locations []string `json:"locations,omitempty"`
+
 	// Management: NodeManagement configuration for this NodePool.
 	Management *NodeManagement `json:"management,omitempty"`
 
@@ -4561,6 +4571,17 @@
 	// ImageType: The desired image type for the node pool.
 	ImageType string `json:"imageType,omitempty"`
 
+	// Locations: The desired list of Google Compute
+	// Engine
+	// [zones](/compute/docs/zones#available) in which the node pool's
+	// nodes
+	// should be located. Changing the locations for a node pool will
+	// result
+	// in nodes being either created or removed from the node pool,
+	// depending
+	// on whether locations are being added or removed.
+	Locations []string `json:"locations,omitempty"`
+
 	// Name: The name (project, location, cluster, node pool) of the node
 	// pool to
 	// update. Specified in the
diff --git a/containeranalysis/v1alpha1/containeranalysis-api.json b/containeranalysis/v1alpha1/containeranalysis-api.json
index 3a937cd..c22f21d 100644
--- a/containeranalysis/v1alpha1/containeranalysis-api.json
+++ b/containeranalysis/v1alpha1/containeranalysis-api.json
@@ -1204,7 +1204,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190524",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "Artifact": {
@@ -1653,7 +1653,7 @@
         },
         "maxAffectedVersion": {
           "$ref": "Version",
-          "description": "The max version of the package in which the vulnerability exists.\nThis field can be used as a filter in list requests."
+          "description": "Deprecated, do not use. Use fixed_location instead.\n\nThe max version of the package in which the vulnerability exists."
         },
         "minAffectedVersion": {
           "$ref": "Version",
@@ -2389,7 +2389,7 @@
         },
         "resource": {
           "$ref": "Resource",
-          "description": "The resource for which the `Occurrence` applies."
+          "description": "\nThe resource for which the `Occurrence` applies."
         },
         "resourceUrl": {
           "description": "The unique URL of the image or the container for which the `Occurrence`\napplies. For example, https://gcr.io/project/image@sha256:foo This field\ncan be used as a filter in list requests.",
@@ -2579,7 +2579,7 @@
       "type": "object"
     },
     "Resource": {
-      "description": "Resource is an entity that can have metadata. E.g., a Docker image.",
+      "description": "\nResource is an entity that can have metadata. E.g., a Docker image.",
       "id": "Resource",
       "properties": {
         "contentHash": {
@@ -2913,7 +2913,7 @@
         },
         "version": {
           "$ref": "Version",
-          "description": "The version of the package being described.\nThis field can be used as a filter in list requests."
+          "description": "The version of the package being described. This field can be used as a\nfilter in list requests."
         }
       },
       "type": "object"
diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go
index 8b419bd..375de2d 100644
--- a/containeranalysis/v1alpha1/containeranalysis-gen.go
+++ b/containeranalysis/v1alpha1/containeranalysis-gen.go
@@ -1155,9 +1155,10 @@
 	// obsolete details.
 	IsObsolete bool `json:"isObsolete,omitempty"`
 
-	// MaxAffectedVersion: The max version of the package in which the
-	// vulnerability exists.
-	// This field can be used as a filter in list requests.
+	// MaxAffectedVersion: Deprecated, do not use. Use fixed_location
+	// instead.
+	//
+	// The max version of the package in which the vulnerability exists.
 	MaxAffectedVersion *Version `json:"maxAffectedVersion,omitempty"`
 
 	// MinAffectedVersion: The min version of the package in which the
@@ -2318,7 +2319,8 @@
 	// `Note`
 	Remediation string `json:"remediation,omitempty"`
 
-	// Resource: The resource for which the `Occurrence` applies.
+	// Resource:
+	// The resource for which the `Occurrence` applies.
 	Resource *Resource `json:"resource,omitempty"`
 
 	// ResourceUrl: The unique URL of the image or the container for which
@@ -2784,8 +2786,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Resource: Resource is an entity that can have metadata. E.g., a
-// Docker image.
+// Resource:
+// Resource is an entity that can have metadata. E.g., a Docker image.
 type Resource struct {
 	// ContentHash: The hash of the resource content. E.g., the Docker
 	// digest.
@@ -3432,8 +3434,9 @@
 	// Package: The package being described.
 	Package string `json:"package,omitempty"`
 
-	// Version: The version of the package being described.
-	// This field can be used as a filter in list requests.
+	// Version: The version of the package being described. This field can
+	// be used as a
+	// filter in list requests.
 	Version *Version `json:"version,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "CpeUri") to
diff --git a/containeranalysis/v1beta1/containeranalysis-api.json b/containeranalysis/v1beta1/containeranalysis-api.json
index 2a68c27..49f5061 100644
--- a/containeranalysis/v1beta1/containeranalysis-api.json
+++ b/containeranalysis/v1beta1/containeranalysis-api.json
@@ -852,7 +852,7 @@
       }
     }
   },
-  "revision": "20190419",
+  "revision": "20190524",
   "rootUrl": "https://containeranalysis.googleapis.com/",
   "schemas": {
     "AliasContext": {
@@ -1501,7 +1501,7 @@
         },
         "maxAffectedVersion": {
           "$ref": "Version",
-          "description": "The max version of the package in which the vulnerability exists."
+          "description": "Deprecated, do not use. Use fixed_location instead.\n\nThe max version of the package in which the vulnerability exists."
         },
         "minAffectedVersion": {
           "$ref": "Version",
@@ -2534,10 +2534,10 @@
       "properties": {
         "contentHash": {
           "$ref": "Hash",
-          "description": "The hash of the resource content. For example, the Docker digest."
+          "description": "Deprecated, do not use. Use uri instead.\n\nThe hash of the resource content. For example, the Docker digest."
         },
         "name": {
-          "description": "The name of the resource. For example, the name of a Docker image -\n\"Debian\".",
+          "description": "Deprecated, do not use. Use uri instead.\n\nThe name of the resource. For example, the name of a Docker image -\n\"Debian\".",
           "type": "string"
         },
         "uri": {
diff --git a/containeranalysis/v1beta1/containeranalysis-gen.go b/containeranalysis/v1beta1/containeranalysis-gen.go
index e09f92f..4a39183 100644
--- a/containeranalysis/v1beta1/containeranalysis-gen.go
+++ b/containeranalysis/v1beta1/containeranalysis-gen.go
@@ -1285,8 +1285,10 @@
 	// obsolete details.
 	IsObsolete bool `json:"isObsolete,omitempty"`
 
-	// MaxAffectedVersion: The max version of the package in which the
-	// vulnerability exists.
+	// MaxAffectedVersion: Deprecated, do not use. Use fixed_location
+	// instead.
+	//
+	// The max version of the package in which the vulnerability exists.
 	MaxAffectedVersion *Version `json:"maxAffectedVersion,omitempty"`
 
 	// MinAffectedVersion: The min version of the package in which the
@@ -3118,12 +3120,15 @@
 // Resource: An entity that can have metadata. For example, a Docker
 // image.
 type Resource struct {
-	// ContentHash: The hash of the resource content. For example, the
-	// Docker digest.
+	// ContentHash: Deprecated, do not use. Use uri instead.
+	//
+	// The hash of the resource content. For example, the Docker digest.
 	ContentHash *Hash `json:"contentHash,omitempty"`
 
-	// Name: The name of the resource. For example, the name of a Docker
-	// image -
+	// Name: Deprecated, do not use. Use uri instead.
+	//
+	// The name of the resource. For example, the name of a Docker image
+	// -
 	// "Debian".
 	Name string `json:"name,omitempty"`
 
diff --git a/content/v2.1/content-api.json b/content/v2.1/content-api.json
index 958318d..5fe2f65 100644
--- a/content/v2.1/content-api.json
+++ b/content/v2.1/content-api.json
@@ -15,7 +15,7 @@
   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/shopping-content",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/jqePbIodVf2BtUKP8NhT41qx4FU\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/EiQvOfWXNZl6Gyiq-W0yDN3qLHY\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -2878,7 +2878,7 @@
       }
     }
   },
-  "revision": "20190513",
+  "revision": "20190524",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -5063,7 +5063,7 @@
         },
         "deliveryDetails": {
           "$ref": "OrderDeliveryDetails",
-          "description": "The details for the delivery."
+          "description": "Delivery details for shipments."
         },
         "id": {
           "description": "The REST ID of the order. Globally unique.",
diff --git a/content/v2.1/content-gen.go b/content/v2.1/content-gen.go
index 44f7734..01bf4a9 100644
--- a/content/v2.1/content-gen.go
+++ b/content/v2.1/content-gen.go
@@ -3902,7 +3902,7 @@
 	// Customer: The details of the customer who placed the order.
 	Customer *OrderCustomer `json:"customer,omitempty"`
 
-	// DeliveryDetails: The details for the delivery.
+	// DeliveryDetails: Delivery details for shipments.
 	DeliveryDetails *OrderDeliveryDetails `json:"deliveryDetails,omitempty"`
 
 	// Id: The REST ID of the order. Globally unique.
diff --git a/content/v2/content-api.json b/content/v2/content-api.json
index 32e7c42..511d7ac 100644
--- a/content/v2/content-api.json
+++ b/content/v2/content-api.json
@@ -15,7 +15,7 @@
   "description": "Manages product items, inventory, and Merchant Center accounts for Google Shopping.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/shopping-content",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/M-eUGu8yDica_9ccnNfXXlRzlBg\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/qpuiLdG4oQ2v0d8oUBW_24p9Luc\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -3476,7 +3476,7 @@
       }
     }
   },
-  "revision": "20190513",
+  "revision": "20190524",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -6039,7 +6039,7 @@
         },
         "deliveryDetails": {
           "$ref": "OrderDeliveryDetails",
-          "description": "The details for the delivery."
+          "description": "Delivery details for shipments."
         },
         "id": {
           "description": "The REST ID of the order. Globally unique.",
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index a9e735f..f57a953 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -4449,7 +4449,7 @@
 	// Customer: The details of the customer who placed the order.
 	Customer *OrderCustomer `json:"customer,omitempty"`
 
-	// DeliveryDetails: The details for the delivery.
+	// DeliveryDetails: Delivery details for shipments.
 	DeliveryDetails *OrderDeliveryDetails `json:"deliveryDetails,omitempty"`
 
 	// Id: The REST ID of the order. Globally unique.
diff --git a/dlp/v2/dlp-api.json b/dlp/v2/dlp-api.json
index 3802f8f..db7d960 100644
--- a/dlp/v2/dlp-api.json
+++ b/dlp/v2/dlp-api.json
@@ -1519,7 +1519,7 @@
       }
     }
   },
-  "revision": "20190511",
+  "revision": "20190526",
   "rootUrl": "https://dlp.googleapis.com/",
   "schemas": {
     "GooglePrivacyDlpV2Action": {
@@ -3822,6 +3822,18 @@
       },
       "type": "object"
     },
+    "GooglePrivacyDlpV2LargeCustomDictionaryStats": {
+      "description": "Summary statistics of a custom dictionary.",
+      "id": "GooglePrivacyDlpV2LargeCustomDictionaryStats",
+      "properties": {
+        "approxNumPhrases": {
+          "description": "Approximate number of distinct phrases in the dictionary.",
+          "format": "int64",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "GooglePrivacyDlpV2LikelihoodAdjustment": {
       "description": "Message for specifying an adjustment to the likelihood of a finding as\npart of a detection rule.",
       "id": "GooglePrivacyDlpV2LikelihoodAdjustment",
@@ -4645,6 +4657,17 @@
       },
       "type": "object"
     },
+    "GooglePrivacyDlpV2StoredInfoTypeStats": {
+      "description": "Statistics for a StoredInfoType.",
+      "id": "GooglePrivacyDlpV2StoredInfoTypeStats",
+      "properties": {
+        "largeCustomDictionary": {
+          "$ref": "GooglePrivacyDlpV2LargeCustomDictionaryStats",
+          "description": "StoredInfoType where findings are defined by a dictionary of phrases."
+        }
+      },
+      "type": "object"
+    },
     "GooglePrivacyDlpV2StoredInfoTypeVersion": {
       "description": "Version of a StoredInfoType, including the configuration used to build it,\ncreate timestamp, and current state.",
       "id": "GooglePrivacyDlpV2StoredInfoTypeVersion",
@@ -4682,6 +4705,10 @@
             "StoredInfoType is no longer valid because artifacts stored in\nuser-controlled storage were modified. To fix an invalid StoredInfoType,\nuse the `UpdateStoredInfoType` method to create a new version."
           ],
           "type": "string"
+        },
+        "stats": {
+          "$ref": "GooglePrivacyDlpV2StoredInfoTypeStats",
+          "description": "Statistics about this storedInfoType version."
         }
       },
       "type": "object"
diff --git a/dlp/v2/dlp-gen.go b/dlp/v2/dlp-gen.go
index d5c4d5d..9f46302 100644
--- a/dlp/v2/dlp-gen.go
+++ b/dlp/v2/dlp-gen.go
@@ -4988,6 +4988,37 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GooglePrivacyDlpV2LargeCustomDictionaryStats: Summary statistics of a
+// custom dictionary.
+type GooglePrivacyDlpV2LargeCustomDictionaryStats struct {
+	// ApproxNumPhrases: Approximate number of distinct phrases in the
+	// dictionary.
+	ApproxNumPhrases int64 `json:"approxNumPhrases,omitempty,string"`
+
+	// ForceSendFields is a list of field names (e.g. "ApproxNumPhrases") to
+	// unconditionally include in API requests. By default, fields with
+	// empty values are omitted from API requests. However, any non-pointer,
+	// non-interface field appearing in ForceSendFields will be sent to the
+	// server regardless of whether the field is empty or not. This may be
+	// used to include empty fields in Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "ApproxNumPhrases") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GooglePrivacyDlpV2LargeCustomDictionaryStats) MarshalJSON() ([]byte, error) {
+	type NoMethod GooglePrivacyDlpV2LargeCustomDictionaryStats
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // GooglePrivacyDlpV2LikelihoodAdjustment: Message for specifying an
 // adjustment to the likelihood of a finding as
 // part of a detection rule.
@@ -6718,6 +6749,38 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// GooglePrivacyDlpV2StoredInfoTypeStats: Statistics for a
+// StoredInfoType.
+type GooglePrivacyDlpV2StoredInfoTypeStats struct {
+	// LargeCustomDictionary: StoredInfoType where findings are defined by a
+	// dictionary of phrases.
+	LargeCustomDictionary *GooglePrivacyDlpV2LargeCustomDictionaryStats `json:"largeCustomDictionary,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g.
+	// "LargeCustomDictionary") to unconditionally include in API requests.
+	// By default, fields with empty values are omitted from API requests.
+	// However, any non-pointer, non-interface field appearing in
+	// ForceSendFields will be sent to the server regardless of whether the
+	// field is empty or not. This may be used to include empty fields in
+	// Patch requests.
+	ForceSendFields []string `json:"-"`
+
+	// NullFields is a list of field names (e.g. "LargeCustomDictionary") to
+	// include in API requests with the JSON null value. By default, fields
+	// with empty values are omitted from API requests. However, any field
+	// with an empty value appearing in NullFields will be sent to the
+	// server as null. It is an error if a field in this list has a
+	// non-empty value. This may be used to include null fields in Patch
+	// requests.
+	NullFields []string `json:"-"`
+}
+
+func (s *GooglePrivacyDlpV2StoredInfoTypeStats) MarshalJSON() ([]byte, error) {
+	type NoMethod GooglePrivacyDlpV2StoredInfoTypeStats
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // GooglePrivacyDlpV2StoredInfoTypeVersion: Version of a StoredInfoType,
 // including the configuration used to build it,
 // create timestamp, and current state.
@@ -6770,6 +6833,9 @@
 	// use the `UpdateStoredInfoType` method to create a new version.
 	State string `json:"state,omitempty"`
 
+	// Stats: Statistics about this storedInfoType version.
+	Stats *GooglePrivacyDlpV2StoredInfoTypeStats `json:"stats,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Config") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
diff --git a/docs/v1/docs-api.json b/docs/v1/docs-api.json
index 11447ba..1e03be6 100644
--- a/docs/v1/docs-api.json
+++ b/docs/v1/docs-api.json
@@ -209,7 +209,7 @@
       }
     }
   },
-  "revision": "20190501",
+  "revision": "20190529",
   "rootUrl": "https://docs.googleapis.com/",
   "schemas": {
     "AutoText": {
@@ -3113,12 +3113,12 @@
       "type": "object"
     },
     "TableCellBorder": {
-      "description": "A border around a table cell.\n\nTable cell borders cannot be transparent. To hide a table cell border, make\nits width 0.",
+      "description": "A border around a table cell.",
       "id": "TableCellBorder",
       "properties": {
         "color": {
           "$ref": "OptionalColor",
-          "description": "The color of the border. This color cannot be transparent."
+          "description": "The color of the border."
         },
         "dashStyle": {
           "description": "The dash style of the border.",
diff --git a/docs/v1/docs-gen.go b/docs/v1/docs-gen.go
index 51dc7dc..0f1f35b 100644
--- a/docs/v1/docs-gen.go
+++ b/docs/v1/docs-gen.go
@@ -5570,12 +5570,8 @@
 }
 
 // TableCellBorder: A border around a table cell.
-//
-// Table cell borders cannot be transparent. To hide a table cell
-// border, make
-// its width 0.
 type TableCellBorder struct {
-	// Color: The color of the border. This color cannot be transparent.
+	// Color: The color of the border.
 	Color *OptionalColor `json:"color,omitempty"`
 
 	// DashStyle: The dash style of the border.
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-api.json b/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
index 7599da1..4ccd231 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
@@ -15,7 +15,7 @@
   "description": "API for viewing and managing your reports in DoubleClick Bid Manager.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/bid-manager/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/d9mCHR1VHs7ODb47MnFQ-Wyz-Y0\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/xoxKVGyG96QSfwJ57MjgWSZsRxI\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -257,7 +257,7 @@
       }
     }
   },
-  "revision": "20190424",
+  "revision": "20190529",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "DownloadLineItemsRequest": {
@@ -1039,6 +1039,7 @@
               "METRIC_BILLABLE_COST_ADVERTISER",
               "METRIC_BILLABLE_COST_PARTNER",
               "METRIC_BILLABLE_COST_USD",
+              "METRIC_BILLABLE_IMPRESSIONS",
               "METRIC_CLICKS",
               "METRIC_CLICK_TO_POST_CLICK_CONVERSION_RATE",
               "METRIC_CM_POST_CLICK_REVENUE",
@@ -1636,6 +1637,7 @@
               "",
               "",
               "",
+              "",
               ""
             ],
             "type": "string"
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
index d86293e..2b68775 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
@@ -777,6 +777,7 @@
 	//   "METRIC_BILLABLE_COST_ADVERTISER"
 	//   "METRIC_BILLABLE_COST_PARTNER"
 	//   "METRIC_BILLABLE_COST_USD"
+	//   "METRIC_BILLABLE_IMPRESSIONS"
 	//   "METRIC_CLICKS"
 	//   "METRIC_CLICK_TO_POST_CLICK_CONVERSION_RATE"
 	//   "METRIC_CM_POST_CLICK_REVENUE"
diff --git a/healthcare/v1alpha2/healthcare-api.json b/healthcare/v1alpha2/healthcare-api.json
index 28cc979..e5d95ce 100644
--- a/healthcare/v1alpha2/healthcare-api.json
+++ b/healthcare/v1alpha2/healthcare-api.json
@@ -3236,7 +3236,7 @@
       }
     }
   },
-  "revision": "20190522",
+  "revision": "20190527",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "Annotation": {
@@ -4338,7 +4338,7 @@
       "id": "Message",
       "properties": {
         "createTime": {
-          "description": "The datetime when the message was created. Set by the server.",
+          "description": "Output only. The datetime when the message was created. Set by the server.",
           "format": "google-datetime",
           "type": "string"
         },
@@ -4364,7 +4364,7 @@
         },
         "parsedData": {
           "$ref": "ParsedData",
-          "description": "The parsed version of the raw message data."
+          "description": "Output only. The parsed version of the raw message data."
         },
         "patientIds": {
           "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this\nmessage.",
@@ -4477,7 +4477,7 @@
           "type": "boolean"
         },
         "segmentTerminator": {
-          "description": "Byte(s) to be used as the segment terminator. If this is unset, '\\r' will\nbe used as segment terminator.",
+          "description": "Byte(s) to be used as the segment terminator. If this is unset, '\\r' will\nbe used as the segment terminator, matching the HL7 version 2\nspecification.",
           "format": "byte",
           "type": "string"
         }
@@ -4575,7 +4575,7 @@
       "type": "object"
     },
     "SchemaConfig": {
-      "description": "Configuration for the FHIR BigQuery and GCS schema. Determines how the server\ngenerates the schema.",
+      "description": "Configuration for the FHIR BigQuery and Cloud Storage schema. Determines\nhow the server generates the schema.",
       "id": "SchemaConfig",
       "properties": {
         "recursiveStructureDepth": {
diff --git a/healthcare/v1alpha2/healthcare-gen.go b/healthcare/v1alpha2/healthcare-gen.go
index 0826c8b..f28ca3f 100644
--- a/healthcare/v1alpha2/healthcare-gen.go
+++ b/healthcare/v1alpha2/healthcare-gen.go
@@ -3024,8 +3024,8 @@
 // details
 // on the standard.
 type Message struct {
-	// CreateTime: The datetime when the message was created. Set by the
-	// server.
+	// CreateTime: Output only. The datetime when the message was created.
+	// Set by the server.
 	CreateTime string `json:"createTime,omitempty"`
 
 	// Data: Raw message bytes.
@@ -3060,7 +3060,7 @@
 	// Assigned by the server.
 	Name string `json:"name,omitempty"`
 
-	// ParsedData: The parsed version of the raw message data.
+	// ParsedData: Output only. The parsed version of the raw message data.
 	ParsedData *ParsedData `json:"parsedData,omitempty"`
 
 	// PatientIds: All patient IDs listed in the PID-2, PID-3, and PID-4
@@ -3304,7 +3304,9 @@
 
 	// SegmentTerminator: Byte(s) to be used as the segment terminator. If
 	// this is unset, '\r' will
-	// be used as segment terminator.
+	// be used as the segment terminator, matching the HL7 version
+	// 2
+	// specification.
 	SegmentTerminator string `json:"segmentTerminator,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AllowNullHeader") to
@@ -3547,9 +3549,9 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// SchemaConfig: Configuration for the FHIR BigQuery and GCS schema.
-// Determines how the server
-// generates the schema.
+// SchemaConfig: Configuration for the FHIR BigQuery and Cloud Storage
+// schema. Determines
+// how the server generates the schema.
 type SchemaConfig struct {
 	// RecursiveStructureDepth: The depth for all recursive structures in
 	// the output analytics
diff --git a/healthcare/v1beta1/healthcare-api.json b/healthcare/v1beta1/healthcare-api.json
index 39379ae..bf50524 100644
--- a/healthcare/v1beta1/healthcare-api.json
+++ b/healthcare/v1beta1/healthcare-api.json
@@ -2743,7 +2743,7 @@
       }
     }
   },
-  "revision": "20190522",
+  "revision": "20190527",
   "rootUrl": "https://healthcare.googleapis.com/",
   "schemas": {
     "AuditConfig": {
@@ -3658,7 +3658,7 @@
       "id": "Message",
       "properties": {
         "createTime": {
-          "description": "The datetime when the message was created. Set by the server.",
+          "description": "Output only. The datetime when the message was created. Set by the server.",
           "format": "google-datetime",
           "type": "string"
         },
@@ -3684,7 +3684,7 @@
         },
         "parsedData": {
           "$ref": "ParsedData",
-          "description": "The parsed version of the raw message data."
+          "description": "Output only. The parsed version of the raw message data."
         },
         "patientIds": {
           "description": "All patient IDs listed in the PID-2, PID-3, and PID-4 segments of this\nmessage.",
diff --git a/healthcare/v1beta1/healthcare-gen.go b/healthcare/v1beta1/healthcare-gen.go
index 77cfab8..151266a 100644
--- a/healthcare/v1beta1/healthcare-gen.go
+++ b/healthcare/v1beta1/healthcare-gen.go
@@ -2549,8 +2549,8 @@
 // details
 // on the standard.
 type Message struct {
-	// CreateTime: The datetime when the message was created. Set by the
-	// server.
+	// CreateTime: Output only. The datetime when the message was created.
+	// Set by the server.
 	CreateTime string `json:"createTime,omitempty"`
 
 	// Data: Raw message bytes.
@@ -2585,7 +2585,7 @@
 	// Assigned by the server.
 	Name string `json:"name,omitempty"`
 
-	// ParsedData: The parsed version of the raw message data.
+	// ParsedData: Output only. The parsed version of the raw message data.
 	ParsedData *ParsedData `json:"parsedData,omitempty"`
 
 	// PatientIds: All patient IDs listed in the PID-2, PID-3, and PID-4
diff --git a/logging/v2/logging-api.json b/logging/v2/logging-api.json
index 06f3014..6aaca0f 100644
--- a/logging/v2/logging-api.json
+++ b/logging/v2/logging-api.json
@@ -2535,7 +2535,7 @@
       }
     }
   },
-  "revision": "20190518",
+  "revision": "20190525",
   "rootUrl": "https://logging.googleapis.com/",
   "schemas": {
     "BucketOptions": {
@@ -2913,7 +2913,7 @@
             "description": "Properties of the object. Contains field @type with type URL.",
             "type": "any"
           },
-          "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.",
+          "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.The following protocol buffer types are supported; user-defined types are not supported:\"type.googleapis.com/google.cloud.audit.AuditLog\"  \"type.googleapis.com/google.appengine.logging.v1.RequestLog\"",
           "type": "object"
         },
         "receiveTimestamp": {
diff --git a/logging/v2/logging-gen.go b/logging/v2/logging-gen.go
index 628939f..f4874eb 100644
--- a/logging/v2/logging-gen.go
+++ b/logging/v2/logging-gen.go
@@ -1127,7 +1127,10 @@
 
 	// ProtoPayload: The log entry payload, represented as a protocol
 	// buffer. Some Google Cloud Platform services use this field for their
-	// log entry payloads.
+	// log entry payloads.The following protocol buffer types are supported;
+	// user-defined types are not
+	// supported:"type.googleapis.com/google.cloud.audit.AuditLog"
+	// "type.googleapis.com/google.appengine.logging.v1.RequestLog"
 	ProtoPayload googleapi.RawMessage `json:"protoPayload,omitempty"`
 
 	// ReceiveTimestamp: Output only. The time the log entry was received by
diff --git a/ml/v1/ml-api.json b/ml/v1/ml-api.json
index bdca598..163a9dc 100644
--- a/ml/v1/ml-api.json
+++ b/ml/v1/ml-api.json
@@ -1019,7 +1019,7 @@
       }
     }
   },
-  "revision": "20190514",
+  "revision": "20190530",
   "rootUrl": "https://ml.googleapis.com/",
   "schemas": {
     "GoogleApi__HttpBody": {
@@ -2065,6 +2065,10 @@
           "description": "Optional. The AI Platform runtime version to use for this deployment.\nIf not set, AI Platform uses the default stable version, 1.0. For more\ninformation, see the\n[runtime version list](/ml-engine/docs/runtime-version-list) and\n[how to manage runtime versions](/ml-engine/docs/versioning).",
           "type": "string"
         },
+        "serviceAccount": {
+          "description": "Optional. Specifies the service account for resource access control.",
+          "type": "string"
+        },
         "state": {
           "description": "Output only. The state of a version.",
           "enum": [
diff --git a/ml/v1/ml-gen.go b/ml/v1/ml-gen.go
index f18b754..22b0ee4 100644
--- a/ml/v1/ml-gen.go
+++ b/ml/v1/ml-gen.go
@@ -2425,6 +2425,10 @@
 	// [how to manage runtime versions](/ml-engine/docs/versioning).
 	RuntimeVersion string `json:"runtimeVersion,omitempty"`
 
+	// ServiceAccount: Optional. Specifies the service account for resource
+	// access control.
+	ServiceAccount string `json:"serviceAccount,omitempty"`
+
 	// State: Output only. The state of a version.
 	//
 	// Possible values:
diff --git a/monitoring/v3/monitoring-api.json b/monitoring/v3/monitoring-api.json
index 358c0f5..b6c05e0 100644
--- a/monitoring/v3/monitoring-api.json
+++ b/monitoring/v3/monitoring-api.json
@@ -1201,7 +1201,7 @@
                   "type": "string"
                 },
                 "filter": {
-                  "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.label.instance_name = \"my-instance-name\"\n",
+                  "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.labels.instance_name = \"my-instance-name\"\n",
                   "location": "query",
                   "type": "string"
                 },
@@ -1457,7 +1457,7 @@
       }
     }
   },
-  "revision": "20190511",
+  "revision": "20190526",
   "rootUrl": "https://monitoring.googleapis.com/",
   "schemas": {
     "Aggregation": {
diff --git a/monitoring/v3/monitoring-gen.go b/monitoring/v3/monitoring-gen.go
index f6032b9..2730508 100644
--- a/monitoring/v3/monitoring-gen.go
+++ b/monitoring/v3/monitoring-gen.go
@@ -8907,7 +8907,7 @@
 // specify a single metric type, and can additionally specify metric
 // labels and other information. For example:
 // metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND
-//     metric.label.instance_name = "my-instance-name"
+//     metric.labels.instance_name = "my-instance-name"
 func (c *ProjectsTimeSeriesListCall) Filter(filter string) *ProjectsTimeSeriesListCall {
 	c.urlParams_.Set("filter", filter)
 	return c
@@ -9134,7 +9134,7 @@
 	//       "type": "string"
 	//     },
 	//     "filter": {
-	//       "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.label.instance_name = \"my-instance-name\"\n",
+	//       "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n    metric.labels.instance_name = \"my-instance-name\"\n",
 	//       "location": "query",
 	//       "type": "string"
 	//     },
diff --git a/redis/v1/redis-api.json b/redis/v1/redis-api.json
index 83b4596..ddbfa1b 100644
--- a/redis/v1/redis-api.json
+++ b/redis/v1/redis-api.json
@@ -486,7 +486,7 @@
       }
     }
   },
-  "revision": "20190502",
+  "revision": "20190524",
   "rootUrl": "https://redis.googleapis.com/",
   "schemas": {
     "Empty": {
@@ -803,7 +803,7 @@
           "type": "object"
         },
         "name": {
-          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should be a resource name ending with `operations/{unique_id}`.",
           "type": "string"
         },
         "response": {
diff --git a/redis/v1/redis-gen.go b/redis/v1/redis-gen.go
index 80b55a4..baaf3eb 100644
--- a/redis/v1/redis-gen.go
+++ b/redis/v1/redis-gen.go
@@ -727,7 +727,8 @@
 	// service that
 	// originally returns it. If you use the default HTTP mapping,
 	// the
-	// `name` should have the format of `operations/some/unique/name`.
+	// `name` should be a resource name ending with
+	// `operations/{unique_id}`.
 	Name string `json:"name,omitempty"`
 
 	// Response: The normal response of the operation in case of success.
diff --git a/redis/v1beta1/redis-api.json b/redis/v1beta1/redis-api.json
index d83f5a1..f89ed01 100644
--- a/redis/v1beta1/redis-api.json
+++ b/redis/v1beta1/redis-api.json
@@ -458,7 +458,7 @@
       }
     }
   },
-  "revision": "20190502",
+  "revision": "20190524",
   "rootUrl": "https://redis.googleapis.com/",
   "schemas": {
     "Empty": {
@@ -756,7 +756,7 @@
           "type": "object"
         },
         "name": {
-          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.",
+          "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should be a resource name ending with `operations/{unique_id}`.",
           "type": "string"
         },
         "response": {
diff --git a/redis/v1beta1/redis-gen.go b/redis/v1beta1/redis-gen.go
index 0d01b22..f6eff76 100644
--- a/redis/v1beta1/redis-gen.go
+++ b/redis/v1beta1/redis-gen.go
@@ -701,7 +701,8 @@
 	// service that
 	// originally returns it. If you use the default HTTP mapping,
 	// the
-	// `name` should have the format of `operations/some/unique/name`.
+	// `name` should be a resource name ending with
+	// `operations/{unique_id}`.
 	Name string `json:"name,omitempty"`
 
 	// Response: The normal response of the operation in case of success.
diff --git a/securitycenter/v1/securitycenter-api.json b/securitycenter/v1/securitycenter-api.json
index 7d4d313..4b5cb03 100644
--- a/securitycenter/v1/securitycenter-api.json
+++ b/securitycenter/v1/securitycenter-api.json
@@ -898,7 +898,7 @@
       }
     }
   },
-  "revision": "20190522",
+  "revision": "20190530",
   "rootUrl": "https://securitycenter.googleapis.com/",
   "schemas": {
     "Asset": {
@@ -1082,7 +1082,7 @@
           "type": "string"
         },
         "eventTime": {
-          "description": "The time at which the event took place. For example, if the finding\nrepresents an open firewall it would capture the time the open firewall was\ndetected.",
+          "description": "The time at which the event took place. For example, if the finding\nrepresents an open firewall it would capture the time the detector believes\nthe firewall became open. The accuracy is determined by the detector.",
           "format": "google-datetime",
           "type": "string"
         },
@@ -1695,7 +1695,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/securitycenter/v1/securitycenter-gen.go b/securitycenter/v1/securitycenter-gen.go
index efb4534..f7e4141 100644
--- a/securitycenter/v1/securitycenter-gen.go
+++ b/securitycenter/v1/securitycenter-gen.go
@@ -620,9 +620,9 @@
 
 	// EventTime: The time at which the event took place. For example, if
 	// the finding
-	// represents an open firewall it would capture the time the open
-	// firewall was
-	// detected.
+	// represents an open firewall it would capture the time the detector
+	// believes
+	// the firewall became open. The accuracy is determined by the detector.
 	EventTime string `json:"eventTime,omitempty"`
 
 	// ExternalUri: The URI that, if available, points to a web page outside
@@ -2024,81 +2024,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/securitycenter/v1beta1/securitycenter-api.json b/securitycenter/v1beta1/securitycenter-api.json
index c88256b..e195981 100644
--- a/securitycenter/v1beta1/securitycenter-api.json
+++ b/securitycenter/v1beta1/securitycenter-api.json
@@ -895,7 +895,7 @@
       }
     }
   },
-  "revision": "20190522",
+  "revision": "20190530",
   "rootUrl": "https://securitycenter.googleapis.com/",
   "schemas": {
     "Asset": {
@@ -1081,7 +1081,7 @@
           "type": "string"
         },
         "eventTime": {
-          "description": "The time at which the event took place. For example, if the finding\nrepresents an open firewall it would capture the time the open firewall was\ndetected.",
+          "description": "The time at which the event took place. For example, if the finding\nrepresents an open firewall it would capture the time the detector believes\nthe firewall became open. The accuracy is determined by the detector.",
           "format": "google-datetime",
           "type": "string"
         },
@@ -1641,7 +1641,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/securitycenter/v1beta1/securitycenter-gen.go b/securitycenter/v1beta1/securitycenter-gen.go
index edeb3ad..8038239 100644
--- a/securitycenter/v1beta1/securitycenter-gen.go
+++ b/securitycenter/v1beta1/securitycenter-gen.go
@@ -618,9 +618,9 @@
 
 	// EventTime: The time at which the event took place. For example, if
 	// the finding
-	// represents an open firewall it would capture the time the open
-	// firewall was
-	// detected.
+	// represents an open firewall it would capture the time the detector
+	// believes
+	// the firewall became open. The accuracy is determined by the detector.
 	EventTime string `json:"eventTime,omitempty"`
 
 	// ExternalUri: The URI that, if available, points to a web page outside
@@ -1848,81 +1848,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
index 030517a..e71633c 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
@@ -541,7 +541,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190530",
   "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
   "schemas": {
     "AddTenantProjectRequest": {
@@ -2139,7 +2139,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index c5c202d..9969981 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -4165,81 +4165,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/servicenetworking/v1/servicenetworking-api.json b/servicenetworking/v1/servicenetworking-api.json
index 74368d2..207291d 100644
--- a/servicenetworking/v1/servicenetworking-api.json
+++ b/servicenetworking/v1/servicenetworking-api.json
@@ -403,7 +403,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190530",
   "rootUrl": "https://servicenetworking.googleapis.com/",
   "schemas": {
     "AddSubnetworkRequest": {
@@ -1973,7 +1973,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/servicenetworking/v1/servicenetworking-gen.go b/servicenetworking/v1/servicenetworking-gen.go
index a8b2a20..563a999 100644
--- a/servicenetworking/v1/servicenetworking-gen.go
+++ b/servicenetworking/v1/servicenetworking-gen.go
@@ -4095,81 +4095,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/servicenetworking/v1beta/servicenetworking-api.json b/servicenetworking/v1beta/servicenetworking-api.json
index 80c9260..50f1386 100644
--- a/servicenetworking/v1beta/servicenetworking-api.json
+++ b/servicenetworking/v1beta/servicenetworking-api.json
@@ -306,7 +306,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190530",
   "rootUrl": "https://servicenetworking.googleapis.com/",
   "schemas": {
     "AddSubnetworkRequest": {
@@ -1846,7 +1846,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/servicenetworking/v1beta/servicenetworking-gen.go b/servicenetworking/v1beta/servicenetworking-gen.go
index 5c1d325..172b8b9 100644
--- a/servicenetworking/v1beta/servicenetworking-gen.go
+++ b/servicenetworking/v1beta/servicenetworking-gen.go
@@ -4030,81 +4030,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/serviceusage/v1/serviceusage-api.json b/serviceusage/v1/serviceusage-api.json
index 800268b..b65660b 100644
--- a/serviceusage/v1/serviceusage-api.json
+++ b/serviceusage/v1/serviceusage-api.json
@@ -393,7 +393,7 @@
       }
     }
   },
-  "revision": "20190514",
+  "revision": "20190530",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -2090,7 +2090,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/serviceusage/v1/serviceusage-gen.go b/serviceusage/v1/serviceusage-gen.go
index 13dd923..8abc9be 100644
--- a/serviceusage/v1/serviceusage-gen.go
+++ b/serviceusage/v1/serviceusage-gen.go
@@ -4354,81 +4354,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/serviceusage/v1beta1/serviceusage-api.json b/serviceusage/v1beta1/serviceusage-api.json
index fd1de20..79a9021 100644
--- a/serviceusage/v1beta1/serviceusage-api.json
+++ b/serviceusage/v1beta1/serviceusage-api.json
@@ -338,7 +338,7 @@
       }
     }
   },
-  "revision": "20190507",
+  "revision": "20190530",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -2102,7 +2102,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/serviceusage/v1beta1/serviceusage-gen.go b/serviceusage/v1beta1/serviceusage-gen.go
index 5edf506..98ec4b2 100644
--- a/serviceusage/v1beta1/serviceusage-gen.go
+++ b/serviceusage/v1beta1/serviceusage-gen.go
@@ -4432,81 +4432,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/speech/v1p1beta1/speech-api.json b/speech/v1p1beta1/speech-api.json
index e78e049..2578026 100644
--- a/speech/v1p1beta1/speech-api.json
+++ b/speech/v1p1beta1/speech-api.json
@@ -322,7 +322,7 @@
       }
     }
   },
-  "revision": "20190510",
+  "revision": "20190524",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
@@ -512,7 +512,7 @@
             "Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
             "Opus encoded audio frames in Ogg container\n([OggOpus](https://wiki.xiph.org/OggOpus)).\n`sample_rate_hertz` must be one of 8000, 12000, 16000, 24000, or 48000.",
             "Although the use of lossy encodings is not recommended, if a very low\nbitrate encoding is required, `OGG_OPUS` is highly preferred over\nSpeex encoding. The [Speex](https://speex.org/)  encoding supported by\nCloud Speech API has a header byte in each block, as in MIME type\n`audio/x-speex-with-header-byte`.\nIt is a variant of the RTP Speex encoding defined in\n[RFC 5574](https://tools.ietf.org/html/rfc5574).\nThe stream is a sequence of blocks, one block per RTP packet. Each block\nstarts with a byte containing the length of the block, in bytes, followed\nby one or more frames of Speex data, padded to an integral number of\nbytes (octets) as specified in RFC 5574. In other words, each RTP header\nis replaced with a single byte containing the block length. Only Speex\nwideband is supported. `sample_rate_hertz` must be 16000.",
-            "MP3 audio. Support all standard MP3 bitrates (which range from 32-320\nkbps)\nIf using this encoding, then 'sample_rate_hertz' can be optionally unset\nif not known."
+            "MP3 audio. Support all standard MP3 bitrates (which range from 32-320\nkbps). When using this encoding, `sample_rate_hertz` can be optionally\nunset if not known."
           ],
           "type": "string"
         },
@@ -720,6 +720,11 @@
       "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.",
       "id": "SpeechContext",
       "properties": {
+        "boost": {
+          "description": "Hint Boost. Positive value will increase the probability that a specific\nphrase will be recognized over other similar sounding phrases. The higher\nthe boost, the higher the chance of false positive recognition as well.\nNegative boost values would correspond to anti-biasing. Anti-biasing is not\nenabled, so negative boost will simply be ignored. Though `boost` can\naccept a wide range of positive values, most use cases are best served with\nvalues between 0 and 20. We recommend using a binary search approach to\nfinding the optimal value for your use case.",
+          "format": "float",
+          "type": "number"
+        },
         "phrases": {
           "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](/speech-to-text/quotas#content).",
           "items": {
diff --git a/speech/v1p1beta1/speech-gen.go b/speech/v1p1beta1/speech-gen.go
index 69f86c8..fbc0189 100644
--- a/speech/v1p1beta1/speech-gen.go
+++ b/speech/v1p1beta1/speech-gen.go
@@ -659,10 +659,9 @@
 	// wideband is supported. `sample_rate_hertz` must be 16000.
 	//   "MP3" - MP3 audio. Support all standard MP3 bitrates (which range
 	// from 32-320
-	// kbps)
-	// If using this encoding, then 'sample_rate_hertz' can be optionally
-	// unset
-	// if not known.
+	// kbps). When using this encoding, `sample_rate_hertz` can be
+	// optionally
+	// unset if not known.
 	Encoding string `json:"encoding,omitempty"`
 
 	// LanguageCode: *Required* The language of the supplied audio as
@@ -1062,6 +1061,23 @@
 // specific words and phrases
 // in the results.
 type SpeechContext struct {
+	// Boost: Hint Boost. Positive value will increase the probability that
+	// a specific
+	// phrase will be recognized over other similar sounding phrases. The
+	// higher
+	// the boost, the higher the chance of false positive recognition as
+	// well.
+	// Negative boost values would correspond to anti-biasing. Anti-biasing
+	// is not
+	// enabled, so negative boost will simply be ignored. Though `boost`
+	// can
+	// accept a wide range of positive values, most use cases are best
+	// served with
+	// values between 0 and 20. We recommend using a binary search approach
+	// to
+	// finding the optimal value for your use case.
+	Boost float64 `json:"boost,omitempty"`
+
 	// Phrases: *Optional* A list of strings containing words and phrases
 	// "hints" so that
 	// the speech recognition is more likely to recognize them. This can be
@@ -1075,7 +1091,7 @@
 	// [usage limits](/speech-to-text/quotas#content).
 	Phrases []string `json:"phrases,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "Phrases") to
+	// ForceSendFields is a list of field names (e.g. "Boost") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
 	// non-interface field appearing in ForceSendFields will be sent to the
@@ -1083,8 +1099,8 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "Phrases") to include in
-	// API requests with the JSON null value. By default, fields with empty
+	// NullFields is a list of field names (e.g. "Boost") to include in API
+	// requests with the JSON null value. By default, fields with empty
 	// values are omitted from API requests. However, any field with an
 	// empty value appearing in NullFields will be sent to the server as
 	// null. It is an error if a field in this list has a non-empty value.
@@ -1098,6 +1114,20 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+func (s *SpeechContext) UnmarshalJSON(data []byte) error {
+	type NoMethod SpeechContext
+	var s1 struct {
+		Boost gensupport.JSONFloat64 `json:"boost"`
+		*NoMethod
+	}
+	s1.NoMethod = (*NoMethod)(s)
+	if err := json.Unmarshal(data, &s1); err != nil {
+		return err
+	}
+	s.Boost = float64(s1.Boost)
+	return nil
+}
+
 // SpeechRecognitionAlternative: Alternative hypotheses (a.k.a. n-best
 // list).
 type SpeechRecognitionAlternative struct {
diff --git a/streetviewpublish/v1/streetviewpublish-api.json b/streetviewpublish/v1/streetviewpublish-api.json
index a101ff0..5474f78 100644
--- a/streetviewpublish/v1/streetviewpublish-api.json
+++ b/streetviewpublish/v1/streetviewpublish-api.json
@@ -362,7 +362,7 @@
       }
     }
   },
-  "revision": "20190506",
+  "revision": "20190530",
   "rootUrl": "https://streetviewpublish.googleapis.com/",
   "schemas": {
     "BatchDeletePhotosRequest": {
@@ -717,7 +717,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error\nmessage, and error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed.  The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n    it may embed the `Status` in the normal response to indicate the partial\n    errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n    have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n    `Status` message should be used directly inside batch response, one for\n    each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n    results in its response, the status of those operations should be\n    represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n    be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for\ndifferent programming environments, including REST APIs and RPC APIs. It is\nused by [gRPC](https://github.com/grpc). Each `Status` message contains\nthree pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the\n[API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/streetviewpublish/v1/streetviewpublish-gen.go b/streetviewpublish/v1/streetviewpublish-gen.go
index d5dd8e0..784b78d 100644
--- a/streetviewpublish/v1/streetviewpublish-gen.go
+++ b/streetviewpublish/v1/streetviewpublish-gen.go
@@ -911,81 +911,14 @@
 // suitable for
 // different programming environments, including REST APIs and RPC APIs.
 // It is
-// used by [gRPC](https://github.com/grpc). The error model is designed
-// to be:
+// used by [gRPC](https://github.com/grpc). Each `Status` message
+// contains
+// three pieces of data: error code, error message, and error
+// details.
 //
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code,
-// error
-// message, and error details. The error code should be an enum value
-// of
-// google.rpc.Code, but it may accept additional error codes if needed.
-// The
-// error message should be a developer-facing English message that
-// helps
-// developers *understand* and *resolve* the error. If a localized
-// user-facing
-// error message is needed, put the localized message in the error
-// details or
-// localize it in the client. The optional error details may contain
-// arbitrary
-// information about the error. There is a predefined set of error
-// detail types
-// in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it
-// is not necessarily the actual wire format. When the `Status` message
-// is
-// exposed in different client libraries and different wire protocols,
-// it can be
-// mapped differently. For example, it will likely be mapped to some
-// exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety
-// of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different
-// environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client,
-//     it may embed the `Status` in the normal response to indicate the
-// partial
-//     errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may
-//     have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the
-//     `Status` message should be used directly inside batch response,
-// one for
-//     each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation
-//     results in its response, the status of those operations should
-// be
-//     represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could
-//     be used directly after any stripping needed for security/privacy
-// reasons.
+// You can find out more about this error model and how to work with it
+// in the
+// [API Design Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// google.rpc.Code.
diff --git a/testing/v1/testing-api.json b/testing/v1/testing-api.json
index 8f6c944..cd0d24b 100644
--- a/testing/v1/testing-api.json
+++ b/testing/v1/testing-api.json
@@ -272,7 +272,7 @@
       }
     }
   },
-  "revision": "20190430",
+  "revision": "20190529",
   "rootUrl": "https://testing.googleapis.com/",
   "schemas": {
     "Account": {
@@ -847,11 +847,11 @@
       "properties": {
         "obbFile": {
           "$ref": "ObbFile",
-          "description": "A reference to an opaque binary blob file"
+          "description": "A reference to an opaque binary blob file."
         },
         "regularFile": {
           "$ref": "RegularFile",
-          "description": "A reference to a regular file"
+          "description": "A reference to a regular file."
         }
       },
       "type": "object"
@@ -945,7 +945,7 @@
       "type": "object"
     },
     "GoogleAuto": {
-      "description": "Enables automatic Google account login.\nIf set, the service will automatically generate a Google test account and add\nit to the device, before executing the test. Note that test accounts might be\nreused.\nMany applications show their full set of functionalities when an account is\npresent on the device. Logging into the device with these generated accounts\nallows testing more functionalities.",
+      "description": "Enables automatic Google account login.\nIf set, the service automatically generates a Google test account and adds\nit to the device, before executing the test. Note that test accounts might be\nreused.\nMany applications show their full set of functionalities when an account is\npresent on the device. Logging into the device with these generated accounts\nallows testing more functionalities.",
       "id": "GoogleAuto",
       "properties": {},
       "type": "object"
@@ -1129,7 +1129,7 @@
       "type": "object"
     },
     "IosTestSetup": {
-      "description": "A description of how to set up an iOS device prior to a test.",
+      "description": "A description of how to set up an iOS device prior to running the test.",
       "id": "IosTestSetup",
       "properties": {
         "networkProfile": {
@@ -1330,6 +1330,10 @@
           "$ref": "GoogleCloudStorage",
           "description": "Required."
         },
+        "resultsUrl": {
+          "description": "Output only. URL to the results in the Firebase Web Console.",
+          "type": "string"
+        },
         "toolResultsExecution": {
           "$ref": "ToolResultsExecution",
           "description": "Output only. The tool results execution that results are written to."
@@ -1377,10 +1381,12 @@
       "id": "RoboStartingIntent",
       "properties": {
         "launcherActivity": {
-          "$ref": "LauncherActivityIntent"
+          "$ref": "LauncherActivityIntent",
+          "description": "An intent that starts the main launcher activity."
         },
         "startActivity": {
-          "$ref": "StartActivityIntent"
+          "$ref": "StartActivityIntent",
+          "description": "An intent that starts an activity with specific details."
         },
         "timeout": {
           "description": "Timeout in seconds for each intent.",
@@ -1454,7 +1460,7 @@
       "type": "object"
     },
     "TestExecution": {
-      "description": "Specifies a single test to be executed in a single environment.",
+      "description": "A single test executed in a single environment.",
       "id": "TestExecution",
       "properties": {
         "environment": {
@@ -1462,7 +1468,7 @@
           "description": "Output only. How the host machine(s) are configured."
         },
         "id": {
-          "description": "Output only. Unique id set by the backend.",
+          "description": "Output only. Unique id set by the service.",
           "type": "string"
         },
         "matrixId": {
@@ -1524,7 +1530,7 @@
       "type": "object"
     },
     "TestMatrix": {
-      "description": "A group of one or more TestExecutions, built by taking a\nproduct of values over a pre-defined set of axes.",
+      "description": "TestMatrix captures all details about a test. It contains the environment\nconfiguration, test specification, test executions and overall state and\noutcome.",
       "id": "TestMatrix",
       "properties": {
         "clientInfo": {
@@ -1533,7 +1539,7 @@
         },
         "environmentMatrix": {
           "$ref": "EnvironmentMatrix",
-          "description": "Required. How the host machine(s) are configured."
+          "description": "Required. The devices the tests are being executed on."
         },
         "flakyTestAttempts": {
           "description": "The number of times a TestExecution should be re-attempted if one or more\nof its test cases fail for any reason.\nThe maximum number of reruns allowed is 10.\n\nDefault is 0, which implies no reruns.",
@@ -1595,7 +1601,7 @@
             "There is a conflict in the provided robo_directives.",
             "There is at least one invalid resource name in the provided\nrobo directives",
             "Invalid definition of action in the robo directives\n(e.g. a click or ignore action includes an input text field)",
-            "There there is no test loop intent filter, or the one that is given is\nnot formatted correctly.",
+            "There is no test loop intent filter, or the one that is given is\nnot formatted correctly.",
             "The request contains a scenario label that was not declared in the\nmanifest.",
             "There was an error when parsing a label's value.",
             "The request contains a scenario number that was not declared in the\nmanifest.",
@@ -1614,6 +1620,24 @@
           ],
           "type": "string"
         },
+        "outcomeSummary": {
+          "description": "Output Only. The overall outcome of the test.\nOnly set when the test matrix state is FINISHED.",
+          "enum": [
+            "OUTCOME_SUMMARY_UNSPECIFIED",
+            "SUCCESS",
+            "FAILURE",
+            "INCONCLUSIVE",
+            "SKIPPED"
+          ],
+          "enumDescriptions": [
+            "Do not use. For proto versioning only.",
+            "The test matrix run was successful, for instance:\n- All the test cases passed.\n- Robo did not detect a crash of the application under test.",
+            "A run failed, for instance:\n- One or more test case failed.\n- A test timed out.\n- The application under test crashed.",
+            "Something unexpected happened. The run should still be considered\nunsuccessful but this is likely a transient problem and re-running the\ntest might be successful.",
+            "All tests were skipped, for instance:\n- All device configurations were incompatible."
+          ],
+          "type": "string"
+        },
         "projectId": {
           "description": "The cloud project that owns the test matrix.",
           "type": "string"
@@ -1623,7 +1647,7 @@
           "description": "Required. Where the results for the matrix are written."
         },
         "state": {
-          "description": "Output only. Indicates the current progress of the test matrix\n(e.g., FINISHED).",
+          "description": "Output only. Indicates the current progress of the test matrix.",
           "enum": [
             "TEST_STATE_UNSPECIFIED",
             "VALIDATING",
@@ -1735,11 +1759,11 @@
           "description": "An Android Application with a Test Loop."
         },
         "disablePerformanceMetrics": {
-          "description": "Disables performance metrics recording; may reduce test latency.",
+          "description": "Disables performance metrics recording. May reduce test latency.",
           "type": "boolean"
         },
         "disableVideoRecording": {
-          "description": "Disables video recording; may reduce test latency.",
+          "description": "Disables video recording. May reduce test latency.",
           "type": "boolean"
         },
         "iosTestSetup": {
diff --git a/testing/v1/testing-gen.go b/testing/v1/testing-gen.go
index 4a0d7f7..74c4111 100644
--- a/testing/v1/testing-gen.go
+++ b/testing/v1/testing-gen.go
@@ -1153,10 +1153,10 @@
 
 // DeviceFile: A single device file description.
 type DeviceFile struct {
-	// ObbFile: A reference to an opaque binary blob file
+	// ObbFile: A reference to an opaque binary blob file.
 	ObbFile *ObbFile `json:"obbFile,omitempty"`
 
-	// RegularFile: A reference to a regular file
+	// RegularFile: A reference to a regular file.
 	RegularFile *RegularFile `json:"regularFile,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "ObbFile") to
@@ -1397,8 +1397,8 @@
 }
 
 // GoogleAuto: Enables automatic Google account login.
-// If set, the service will automatically generate a Google test account
-// and add
+// If set, the service automatically generates a Google test account and
+// adds
 // it to the device, before executing the test. Note that test accounts
 // might be
 // reused.
@@ -1683,8 +1683,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// IosTestSetup: A description of how to set up an iOS device prior to a
-// test.
+// IosTestSetup: A description of how to set up an iOS device prior to
+// running the test.
 type IosTestSetup struct {
 	// NetworkProfile: The network traffic profile used for running the
 	// test.
@@ -2107,6 +2107,10 @@
 	// GoogleCloudStorage: Required.
 	GoogleCloudStorage *GoogleCloudStorage `json:"googleCloudStorage,omitempty"`
 
+	// ResultsUrl: Output only. URL to the results in the Firebase Web
+	// Console.
+	ResultsUrl string `json:"resultsUrl,omitempty"`
+
 	// ToolResultsExecution: Output only. The tool results execution that
 	// results are written to.
 	ToolResultsExecution *ToolResultsExecution `json:"toolResultsExecution,omitempty"`
@@ -2206,8 +2210,11 @@
 // RoboStartingIntent: Message for specifying the start activities to
 // crawl.
 type RoboStartingIntent struct {
+	// LauncherActivity: An intent that starts the main launcher activity.
 	LauncherActivity *LauncherActivityIntent `json:"launcherActivity,omitempty"`
 
+	// StartActivity: An intent that starts an activity with specific
+	// details.
 	StartActivity *StartActivityIntent `json:"startActivity,omitempty"`
 
 	// Timeout: Timeout in seconds for each intent.
@@ -2356,13 +2363,12 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// TestExecution: Specifies a single test to be executed in a single
-// environment.
+// TestExecution: A single test executed in a single environment.
 type TestExecution struct {
 	// Environment: Output only. How the host machine(s) are configured.
 	Environment *Environment `json:"environment,omitempty"`
 
-	// Id: Output only. Unique id set by the backend.
+	// Id: Output only. Unique id set by the service.
 	Id string `json:"id,omitempty"`
 
 	// MatrixId: Output only. Id of the containing TestMatrix.
@@ -2463,14 +2469,17 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// TestMatrix: A group of one or more TestExecutions, built by taking
-// a
-// product of values over a pre-defined set of axes.
+// TestMatrix: TestMatrix captures all details about a test. It contains
+// the environment
+// configuration, test specification, test executions and overall state
+// and
+// outcome.
 type TestMatrix struct {
 	// ClientInfo: Information about the client which invoked the test.
 	ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
 
-	// EnvironmentMatrix: Required. How the host machine(s) are configured.
+	// EnvironmentMatrix: Required. The devices the tests are being executed
+	// on.
 	EnvironmentMatrix *EnvironmentMatrix `json:"environmentMatrix,omitempty"`
 
 	// FlakyTestAttempts: The number of times a TestExecution should be
@@ -2532,8 +2541,8 @@
 	//   "INVALID_DIRECTIVE_ACTION" - Invalid definition of action in the
 	// robo directives
 	// (e.g. a click or ignore action includes an input text field)
-	//   "TEST_LOOP_INTENT_FILTER_NOT_FOUND" - There there is no test loop
-	// intent filter, or the one that is given is
+	//   "TEST_LOOP_INTENT_FILTER_NOT_FOUND" - There is no test loop intent
+	// filter, or the one that is given is
 	// not formatted correctly.
 	//   "SCENARIO_LABEL_NOT_DECLARED" - The request contains a scenario
 	// label that was not declared in the
@@ -2581,6 +2590,28 @@
 	// unsupported
 	InvalidMatrixDetails string `json:"invalidMatrixDetails,omitempty"`
 
+	// OutcomeSummary: Output Only. The overall outcome of the test.
+	// Only set when the test matrix state is FINISHED.
+	//
+	// Possible values:
+	//   "OUTCOME_SUMMARY_UNSPECIFIED" - Do not use. For proto versioning
+	// only.
+	//   "SUCCESS" - The test matrix run was successful, for instance:
+	// - All the test cases passed.
+	// - Robo did not detect a crash of the application under test.
+	//   "FAILURE" - A run failed, for instance:
+	// - One or more test case failed.
+	// - A test timed out.
+	// - The application under test crashed.
+	//   "INCONCLUSIVE" - Something unexpected happened. The run should
+	// still be considered
+	// unsuccessful but this is likely a transient problem and re-running
+	// the
+	// test might be successful.
+	//   "SKIPPED" - All tests were skipped, for instance:
+	// - All device configurations were incompatible.
+	OutcomeSummary string `json:"outcomeSummary,omitempty"`
+
 	// ProjectId: The cloud project that owns the test matrix.
 	ProjectId string `json:"projectId,omitempty"`
 
@@ -2589,8 +2620,7 @@
 	ResultStorage *ResultStorage `json:"resultStorage,omitempty"`
 
 	// State: Output only. Indicates the current progress of the test
-	// matrix
-	// (e.g., FINISHED).
+	// matrix.
 	//
 	// Possible values:
 	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
@@ -2763,11 +2793,11 @@
 	// AndroidTestLoop: An Android Application with a Test Loop.
 	AndroidTestLoop *AndroidTestLoop `json:"androidTestLoop,omitempty"`
 
-	// DisablePerformanceMetrics: Disables performance metrics recording;
-	// may reduce test latency.
+	// DisablePerformanceMetrics: Disables performance metrics recording.
+	// May reduce test latency.
 	DisablePerformanceMetrics bool `json:"disablePerformanceMetrics,omitempty"`
 
-	// DisableVideoRecording: Disables video recording; may reduce test
+	// DisableVideoRecording: Disables video recording. May reduce test
 	// latency.
 	DisableVideoRecording bool `json:"disableVideoRecording,omitempty"`
 
diff --git a/toolresults/v1beta3/toolresults-api.json b/toolresults/v1beta3/toolresults-api.json
index f94f530..7df67d2 100644
--- a/toolresults/v1beta3/toolresults-api.json
+++ b/toolresults/v1beta3/toolresults-api.json
@@ -15,7 +15,7 @@
   "description": "Reads and publishes results from Firebase Test Lab.",
   "discoveryVersion": "v1",
   "documentationLink": "https://firebase.google.com/docs/test-lab/",
-  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/L2NlhyPOGzwB1sm_TzrKH1MPv5M\"",
+  "etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/JTmZoC2nLuL_cjgyK29xhSrshLU\"",
   "icons": {
     "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
     "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
@@ -1271,7 +1271,7 @@
       }
     }
   },
-  "revision": "20190508",
+  "revision": "20190530",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AndroidAppInfo": {
@@ -2287,7 +2287,7 @@
       "type": "object"
     },
     "Status": {
-      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users - Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of [google.rpc.Code][], but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons.",
+      "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details.\n\nYou can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
       "id": "Status",
       "properties": {
         "code": {
diff --git a/toolresults/v1beta3/toolresults-gen.go b/toolresults/v1beta3/toolresults-gen.go
index 629cd1f..829a1b7 100644
--- a/toolresults/v1beta3/toolresults-gen.go
+++ b/toolresults/v1beta3/toolresults-gen.go
@@ -2234,60 +2234,13 @@
 
 // Status: The `Status` type defines a logical error model that is
 // suitable for different programming environments, including REST APIs
-// and RPC APIs. It is used by [gRPC](https://github.com/grpc). The
-// error model is designed to be:
+// and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each
+// `Status` message contains three pieces of data: error code, error
+// message, and error details.
 //
-// - Simple to use and understand for most users - Flexible enough to
-// meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code, error
-// message, and error details. The error code should be an enum value of
-// [google.rpc.Code][], but it may accept additional error codes if
-// needed. The error message should be a developer-facing English
-// message that helps developers *understand* and *resolve* the error.
-// If a localized user-facing error message is needed, put the localized
-// message in the error details or localize it in the client. The
-// optional error details may contain arbitrary information about the
-// error. There is a predefined set of error detail types in the package
-// `google.rpc` that can be used for common error conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error
-// model, but it is not necessarily the actual wire format. When the
-// `Status` message is exposed in different client libraries and
-// different wire protocols, it can be mapped differently. For example,
-// it will likely be mapped to some exceptions in Java, but more likely
-// mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety of
-// environments, either with or without APIs, to provide a consistent
-// developer experience across different environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the
-// client, it may embed the `Status` in the normal response to indicate
-// the partial errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step
-// may have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch
-// response, the `Status` message should be used directly inside batch
-// response, one for each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous
-// operation results in its response, the status of those operations
-// should be represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message
-// `Status` could be used directly after any stripping needed for
-// security/privacy reasons.
+// You can find out more about this error model and how to work with it
+// in the [API Design
+// Guide](https://cloud.google.com/apis/design/errors).
 type Status struct {
 	// Code: The status code, which should be an enum value of
 	// [google.rpc.Code][].
diff --git a/vision/v1/vision-api.json b/vision/v1/vision-api.json
index bb76ed6..4dcbce8 100644
--- a/vision/v1/vision-api.json
+++ b/vision/v1/vision-api.json
@@ -1004,7 +1004,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190527",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AddProductToProductSetRequest": {
@@ -2567,7 +2567,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -2779,7 +2779,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -3941,7 +3941,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -4153,7 +4153,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -5371,7 +5371,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -5583,7 +5583,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -6848,7 +6848,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -7060,7 +7060,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -8339,7 +8339,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -8586,7 +8586,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -9350,7 +9350,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -9828,7 +9828,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -9854,7 +9854,7 @@
           "type": "string"
         },
         "productCategories": {
-          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods\", \"apparel\", or \"toys\" should be\nspecified.",
+          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\"\nshould be specified. The legacy categories \"homegoods\", \"apparel\", and\n\"toys\" are still supported but will be deprecated. For new products, please\nuse \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\" for better product search\naccuracy. It is recommended to migrate existing products to these\ncategories as well.",
           "items": {
             "type": "string"
           },
diff --git a/vision/v1/vision-gen.go b/vision/v1/vision-gen.go
index e8d8174..397046c 100644
--- a/vision/v1/vision-gen.go
+++ b/vision/v1/vision-gen.go
@@ -3071,9 +3071,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p1beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -3537,7 +3537,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -5527,9 +5531,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p2beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -5993,7 +5997,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -8087,9 +8095,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p3beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -8553,7 +8561,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -10768,9 +10780,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p4beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -11234,7 +11246,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -13470,9 +13486,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p5beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -14002,7 +14018,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -15614,9 +15634,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -16535,7 +16555,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -16607,9 +16631,17 @@
 
 	// ProductCategories: The list of product categories to search in.
 	// Currently, we only consider
-	// the first category, and either "homegoods", "apparel", or "toys"
-	// should be
-	// specified.
+	// the first category, and either "homegoods-v2", "apparel-v2", or
+	// "toys-v2"
+	// should be specified. The legacy categories "homegoods", "apparel",
+	// and
+	// "toys" are still supported but will be deprecated. For new products,
+	// please
+	// use "homegoods-v2", "apparel-v2", or "toys-v2" for better product
+	// search
+	// accuracy. It is recommended to migrate existing products to
+	// these
+	// categories as well.
 	ProductCategories []string `json:"productCategories,omitempty"`
 
 	// ProductSet: The resource name of a ProductSet to be searched for
diff --git a/vision/v1p1beta1/vision-api.json b/vision/v1p1beta1/vision-api.json
index d6382ac..4d6f8f4 100644
--- a/vision/v1p1beta1/vision-api.json
+++ b/vision/v1p1beta1/vision-api.json
@@ -192,7 +192,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190527",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AnnotateFileResponse": {
@@ -1807,7 +1807,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -2034,7 +2034,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -2075,7 +2075,7 @@
           "type": "string"
         },
         "productCategories": {
-          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods\", \"apparel\", or \"toys\" should be\nspecified.",
+          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\"\nshould be specified. The legacy categories \"homegoods\", \"apparel\", and\n\"toys\" are still supported but will be deprecated. For new products, please\nuse \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\" for better product search\naccuracy. It is recommended to migrate existing products to these\ncategories as well.",
           "items": {
             "type": "string"
           },
@@ -3233,7 +3233,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -3445,7 +3445,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -4663,7 +4663,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -4875,7 +4875,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -6140,7 +6140,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -6352,7 +6352,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -7631,7 +7631,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -7878,7 +7878,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -8548,7 +8548,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -8916,7 +8916,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
diff --git a/vision/v1p1beta1/vision-gen.go b/vision/v1p1beta1/vision-gen.go
index f9fa0ca..e8bbe99 100644
--- a/vision/v1p1beta1/vision-gen.go
+++ b/vision/v1p1beta1/vision-gen.go
@@ -3076,9 +3076,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p1beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -3574,7 +3574,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -3679,9 +3683,17 @@
 
 	// ProductCategories: The list of product categories to search in.
 	// Currently, we only consider
-	// the first category, and either "homegoods", "apparel", or "toys"
-	// should be
-	// specified.
+	// the first category, and either "homegoods-v2", "apparel-v2", or
+	// "toys-v2"
+	// should be specified. The legacy categories "homegoods", "apparel",
+	// and
+	// "toys" are still supported but will be deprecated. For new products,
+	// please
+	// use "homegoods-v2", "apparel-v2", or "toys-v2" for better product
+	// search
+	// accuracy. It is recommended to migrate existing products to
+	// these
+	// categories as well.
 	ProductCategories []string `json:"productCategories,omitempty"`
 
 	// ProductSet: The resource name of a ProductSet to be searched for
@@ -5657,9 +5669,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p2beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -6123,7 +6135,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -8217,9 +8233,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p3beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -8683,7 +8699,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -10898,9 +10918,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p4beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -11364,7 +11384,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -13600,9 +13624,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p5beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -14132,7 +14156,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -15417,9 +15445,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -16116,7 +16144,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
diff --git a/vision/v1p2beta1/vision-api.json b/vision/v1p2beta1/vision-api.json
index 52482cb..e597527 100644
--- a/vision/v1p2beta1/vision-api.json
+++ b/vision/v1p2beta1/vision-api.json
@@ -192,7 +192,7 @@
       }
     }
   },
-  "revision": "20190503",
+  "revision": "20190527",
   "rootUrl": "https://vision.googleapis.com/",
   "schemas": {
     "AnnotateFileResponse": {
@@ -1515,7 +1515,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -1727,7 +1727,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -3181,7 +3181,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -3408,7 +3408,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -3449,7 +3449,7 @@
           "type": "string"
         },
         "productCategories": {
-          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods\", \"apparel\", or \"toys\" should be\nspecified.",
+          "description": "The list of product categories to search in. Currently, we only consider\nthe first category, and either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\"\nshould be specified. The legacy categories \"homegoods\", \"apparel\", and\n\"toys\" are still supported but will be deprecated. For new products, please\nuse \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\" for better product search\naccuracy. It is recommended to migrate existing products to these\ncategories as well.",
           "items": {
             "type": "string"
           },
@@ -4663,7 +4663,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -4875,7 +4875,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -6140,7 +6140,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -6352,7 +6352,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -7631,7 +7631,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -7878,7 +7878,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
@@ -8548,7 +8548,7 @@
           "description": "The Google Cloud Storage location to read the input from."
         },
         "mimeType": {
-          "description": "The type of the file. Currently only \"application/pdf\" and \"image/tiff\"\nare supported. Wildcards are not supported.",
+          "description": "The type of the file. Currently only \"application/pdf\", \"image/tiff\" and\n\"image/gif\" are supported. Wildcards are not supported.",
           "type": "string"
         }
       },
@@ -8916,7 +8916,7 @@
           "type": "string"
         },
         "productCategory": {
-          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods\", \"apparel\", or \"toys\".\n\nThis field is immutable.",
+          "description": "The category for the product identified by the reference image. This should\nbe either \"homegoods-v2\", \"apparel-v2\", or \"toys-v2\". The legacy categories\n\"homegoods\", \"apparel\", and \"toys\" are still supported, but these should\nnot be used for new products.\n\nThis field is immutable.",
           "type": "string"
         },
         "productLabels": {
diff --git a/vision/v1p2beta1/vision-gen.go b/vision/v1p2beta1/vision-gen.go
index 78b770a..2d89237 100644
--- a/vision/v1p2beta1/vision-gen.go
+++ b/vision/v1p2beta1/vision-gen.go
@@ -2485,9 +2485,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p1beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -2951,7 +2951,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -5532,9 +5536,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p2beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -6030,7 +6034,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -6135,9 +6143,17 @@
 
 	// ProductCategories: The list of product categories to search in.
 	// Currently, we only consider
-	// the first category, and either "homegoods", "apparel", or "toys"
-	// should be
-	// specified.
+	// the first category, and either "homegoods-v2", "apparel-v2", or
+	// "toys-v2"
+	// should be specified. The legacy categories "homegoods", "apparel",
+	// and
+	// "toys" are still supported but will be deprecated. For new products,
+	// please
+	// use "homegoods-v2", "apparel-v2", or "toys-v2" for better product
+	// search
+	// accuracy. It is recommended to migrate existing products to
+	// these
+	// categories as well.
 	ProductCategories []string `json:"productCategories,omitempty"`
 
 	// ProductSet: The resource name of a ProductSet to be searched for
@@ -8217,9 +8233,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p3beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -8683,7 +8699,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -10898,9 +10918,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p4beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -11364,7 +11384,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -13600,9 +13624,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GoogleCloudVisionV1p5beta1GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -14132,7 +14156,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`
@@ -15417,9 +15445,9 @@
 	// GcsSource: The Google Cloud Storage location to read the input from.
 	GcsSource *GcsSource `json:"gcsSource,omitempty"`
 
-	// MimeType: The type of the file. Currently only "application/pdf" and
-	// "image/tiff"
-	// are supported. Wildcards are not supported.
+	// MimeType: The type of the file. Currently only "application/pdf",
+	// "image/tiff" and
+	// "image/gif" are supported. Wildcards are not supported.
 	MimeType string `json:"mimeType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Content") to
@@ -16116,7 +16144,11 @@
 
 	// ProductCategory: The category for the product identified by the
 	// reference image. This should
-	// be either "homegoods", "apparel", or "toys".
+	// be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy
+	// categories
+	// "homegoods", "apparel", and "toys" are still supported, but these
+	// should
+	// not be used for new products.
 	//
 	// This field is immutable.
 	ProductCategory string `json:"productCategory,omitempty"`