all: autogenerated update (2019-01-11)

Update:
- cloudkms/v1
- compute/v0.alpha
- compute/v0.beta
- compute/v1
- container/v1beta1
- content/v2
- content/v2.1
- dialogflow/v2
- dialogflow/v2beta1
- dns/v1
- dns/v1beta2
- dns/v2beta1
- doubleclickbidmanager/v1
- firestore/v1
- firestore/v1beta1
- fitness/v1
- oslogin/v1
- oslogin/v1beta
- serviceconsumermanagement/v1
- servicenetworking/v1beta
- serviceusage/v1
- serviceusage/v1beta1
- sheets/v4
- slides/v1
- speech/v1
- speech/v1p1beta1
diff --git a/cloudkms/v1/cloudkms-api.json b/cloudkms/v1/cloudkms-api.json
index b6063ef..90fd9fc 100644
--- a/cloudkms/v1/cloudkms-api.json
+++ b/cloudkms/v1/cloudkms-api.json
@@ -4,6 +4,9 @@
       "scopes": {
         "https://www.googleapis.com/auth/cloud-platform": {
           "description": "View and manage your data across Google Cloud Platform services"
+        },
+        "https://www.googleapis.com/auth/cloudkms": {
+          "description": "View and manage your keys and secrets stored in Cloud Key Management Service"
         }
       }
     }
@@ -130,7 +133,8 @@
                 "$ref": "Location"
               },
               "scopes": [
-                "https://www.googleapis.com/auth/cloud-platform"
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloudkms"
               ]
             },
             "list": {
@@ -171,7 +175,8 @@
                 "$ref": "ListLocationsResponse"
               },
               "scopes": [
-                "https://www.googleapis.com/auth/cloud-platform"
+                "https://www.googleapis.com/auth/cloud-platform",
+                "https://www.googleapis.com/auth/cloudkms"
               ]
             }
           },
@@ -208,7 +213,8 @@
                     "$ref": "KeyRing"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 },
                 "get": {
@@ -233,7 +239,8 @@
                     "$ref": "KeyRing"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 },
                 "getIamPolicy": {
@@ -258,7 +265,8 @@
                     "$ref": "Policy"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 },
                 "list": {
@@ -294,7 +302,8 @@
                     "$ref": "ListKeyRingsResponse"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 },
                 "setIamPolicy": {
@@ -322,7 +331,8 @@
                     "$ref": "Policy"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 },
                 "testIamPermissions": {
@@ -350,7 +360,8 @@
                     "$ref": "TestIamPermissionsResponse"
                   },
                   "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
+                    "https://www.googleapis.com/auth/cloud-platform",
+                    "https://www.googleapis.com/auth/cloudkms"
                   ]
                 }
               },
@@ -387,7 +398,8 @@
                         "$ref": "CryptoKey"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "decrypt": {
@@ -415,7 +427,8 @@
                         "$ref": "DecryptResponse"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "encrypt": {
@@ -443,7 +456,8 @@
                         "$ref": "EncryptResponse"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "get": {
@@ -468,7 +482,8 @@
                         "$ref": "CryptoKey"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "getIamPolicy": {
@@ -493,7 +508,8 @@
                         "$ref": "Policy"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "list": {
@@ -538,7 +554,8 @@
                         "$ref": "ListCryptoKeysResponse"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "patch": {
@@ -572,7 +589,8 @@
                         "$ref": "CryptoKey"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "setIamPolicy": {
@@ -600,7 +618,8 @@
                         "$ref": "Policy"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "testIamPermissions": {
@@ -628,7 +647,8 @@
                         "$ref": "TestIamPermissionsResponse"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "updatePrimaryVersion": {
@@ -656,7 +676,8 @@
                         "$ref": "CryptoKey"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     }
                   },
@@ -688,7 +709,8 @@
                             "$ref": "AsymmetricDecryptResponse"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "asymmetricSign": {
@@ -716,7 +738,8 @@
                             "$ref": "AsymmetricSignResponse"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "create": {
@@ -744,7 +767,8 @@
                             "$ref": "CryptoKeyVersion"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "destroy": {
@@ -772,7 +796,8 @@
                             "$ref": "CryptoKeyVersion"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "get": {
@@ -797,7 +822,8 @@
                             "$ref": "CryptoKeyVersion"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "getPublicKey": {
@@ -822,7 +848,8 @@
                             "$ref": "PublicKey"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "list": {
@@ -867,7 +894,8 @@
                             "$ref": "ListCryptoKeyVersionsResponse"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "patch": {
@@ -901,7 +929,8 @@
                             "$ref": "CryptoKeyVersion"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         },
                         "restore": {
@@ -929,7 +958,8 @@
                             "$ref": "CryptoKeyVersion"
                           },
                           "scopes": [
-                            "https://www.googleapis.com/auth/cloud-platform"
+                            "https://www.googleapis.com/auth/cloud-platform",
+                            "https://www.googleapis.com/auth/cloudkms"
                           ]
                         }
                       }
@@ -960,7 +990,8 @@
                         "$ref": "Policy"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "setIamPolicy": {
@@ -988,7 +1019,8 @@
                         "$ref": "Policy"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     },
                     "testIamPermissions": {
@@ -1016,7 +1048,8 @@
                         "$ref": "TestIamPermissionsResponse"
                       },
                       "scopes": [
-                        "https://www.googleapis.com/auth/cloud-platform"
+                        "https://www.googleapis.com/auth/cloud-platform",
+                        "https://www.googleapis.com/auth/cloudkms"
                       ]
                     }
                   }
@@ -1028,7 +1061,7 @@
       }
     }
   },
-  "revision": "20181210",
+  "revision": "20190104",
   "rootUrl": "https://cloudkms.googleapis.com/",
   "schemas": {
     "AsymmetricDecryptRequest": {
diff --git a/cloudkms/v1/cloudkms-gen.go b/cloudkms/v1/cloudkms-gen.go
index ea9bedc..dc4e759 100644
--- a/cloudkms/v1/cloudkms-gen.go
+++ b/cloudkms/v1/cloudkms-gen.go
@@ -56,6 +56,10 @@
 const (
 	// View and manage your data across Google Cloud Platform services
 	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
+
+	// View and manage your keys and secrets stored in Cloud Key Management
+	// Service
+	CloudkmsScope = "https://www.googleapis.com/auth/cloudkms"
 )
 
 func New(client *http.Client) (*Service, error) {
@@ -1903,7 +1907,8 @@
 	//     "$ref": "Location"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2084,7 +2089,8 @@
 	//     "$ref": "ListLocationsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2257,7 +2263,8 @@
 	//     "$ref": "KeyRing"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2400,7 +2407,8 @@
 	//     "$ref": "KeyRing"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2546,7 +2554,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2721,7 +2730,8 @@
 	//     "$ref": "ListKeyRingsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -2883,7 +2893,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3032,7 +3043,8 @@
 	//     "$ref": "TestIamPermissionsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3188,7 +3200,8 @@
 	//     "$ref": "CryptoKey"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3329,7 +3342,8 @@
 	//     "$ref": "DecryptResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3471,7 +3485,8 @@
 	//     "$ref": "EncryptResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3615,7 +3630,8 @@
 	//     "$ref": "CryptoKey"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3761,7 +3777,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -3957,7 +3974,8 @@
 	//     "$ref": "ListCryptoKeysResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4130,7 +4148,8 @@
 	//     "$ref": "CryptoKey"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4271,7 +4290,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4420,7 +4440,8 @@
 	//     "$ref": "TestIamPermissionsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4562,7 +4583,8 @@
 	//     "$ref": "CryptoKey"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4705,7 +4727,8 @@
 	//     "$ref": "AsymmetricDecryptResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4848,7 +4871,8 @@
 	//     "$ref": "AsymmetricSignResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -4991,7 +5015,8 @@
 	//     "$ref": "CryptoKeyVersion"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5142,7 +5167,8 @@
 	//     "$ref": "CryptoKeyVersion"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5285,7 +5311,8 @@
 	//     "$ref": "CryptoKeyVersion"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5432,7 +5459,8 @@
 	//     "$ref": "PublicKey"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5628,7 +5656,8 @@
 	//     "$ref": "ListCryptoKeyVersionsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5808,7 +5837,8 @@
 	//     "$ref": "CryptoKeyVersion"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -5954,7 +5984,8 @@
 	//     "$ref": "CryptoKeyVersion"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -6100,7 +6131,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -6241,7 +6273,8 @@
 	//     "$ref": "Policy"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
@@ -6390,7 +6423,8 @@
 	//     "$ref": "TestIamPermissionsResponse"
 	//   },
 	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/cloudkms"
 	//   ]
 	// }
 
diff --git a/compute/v0.alpha/compute-api.json b/compute/v0.alpha/compute-api.json
index 2b613a8..0c19a90 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/Pblb0-q42Qtp25GnNdbN5oVoa5U\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/ZT96Bm2RJj8H_3UsGNmErvb_EFw\"",
   "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"
@@ -150,7 +150,7 @@
             "acceleratorType": {
               "description": "Name of the accelerator type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -302,7 +302,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -348,7 +348,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -635,7 +635,7 @@
             "allocation": {
               "description": "Name of the allocation to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -681,7 +681,7 @@
             "allocation": {
               "description": "Name of the allocation to retrieve.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -952,7 +952,7 @@
             "allocation": {
               "description": "Name of the allocation to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1054,7 +1054,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1100,7 +1100,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1239,7 +1239,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -1331,7 +1331,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -1422,7 +1422,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1504,7 +1504,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1654,7 +1654,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to patch.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1768,7 +1768,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1902,7 +1902,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1984,7 +1984,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2018,7 +2018,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to which the queried instance belongs.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2254,7 +2254,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2349,7 +2349,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3401,7 +3401,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3447,7 +3447,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3587,7 +3587,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to patch.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3685,7 +3685,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3782,7 +3782,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3820,7 +3820,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -4013,7 +4013,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -4051,7 +4051,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -4167,7 +4167,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to patch.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -4244,7 +4244,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -7458,7 +7458,7 @@
     "instanceTemplates": {
       "methods": {
         "delete": {
-          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
           "httpMethod": "DELETE",
           "id": "compute.instanceTemplates.delete",
           "parameterOrder": [
@@ -7597,7 +7597,7 @@
           ]
         },
         "list": {
-          "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+          "description": "Retrieves a list of instance templates that are contained within the specified project.",
           "httpMethod": "GET",
           "id": "compute.instanceTemplates.list",
           "parameterOrder": [
@@ -13048,6 +13048,55 @@
             "https://www.googleapis.com/auth/compute.readonly"
           ]
         },
+        "setAutoscalingPolicy": {
+          "description": "Sets the autoscaling policy of the node group.",
+          "httpMethod": "POST",
+          "id": "compute.nodeGroups.setAutoscalingPolicy",
+          "parameterOrder": [
+            "project",
+            "zone",
+            "nodeGroup"
+          ],
+          "parameters": {
+            "nodeGroup": {
+              "description": "Name of the NodeGroup resource to update.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "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"
+            },
+            "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"
+            },
+            "zone": {
+              "description": "The name of the zone for this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            }
+          },
+          "path": "{project}/zones/{zone}/nodeGroups/{nodeGroup}/setAutoscalingPolicy",
+          "request": {
+            "$ref": "NodeGroupsSetAutoscalingPolicyRequest"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
         "setIamPolicy": {
           "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
           "httpMethod": "POST",
@@ -13103,7 +13152,7 @@
           ],
           "parameters": {
             "nodeGroup": {
-              "description": "Name of the NodeGroup resource to delete.",
+              "description": "Name of the NodeGroup resource to update.",
               "location": "path",
               "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
               "required": true,
@@ -14577,7 +14626,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -14623,7 +14672,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -14762,7 +14811,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -14854,7 +14903,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -14906,7 +14955,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -14952,7 +15001,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -14994,7 +15043,7 @@
             "backendService": {
               "description": "Name of the BackendService resource for which to get health.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -15230,7 +15279,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -15332,7 +15381,7 @@
             "commitment": {
               "description": "Name of the commitment to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -15521,7 +15570,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -15800,6 +15849,48 @@
             "https://www.googleapis.com/auth/compute.readonly"
           ]
         },
+        "getIamPolicy": {
+          "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+          "httpMethod": "GET",
+          "id": "compute.regionDisks.getIamPolicy",
+          "parameterOrder": [
+            "project",
+            "region",
+            "resource"
+          ],
+          "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": "The name of the region for this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "resource": {
+              "description": "Name or id of the resource for 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}/disks/{resource}/getIamPolicy",
+          "response": {
+            "$ref": "Policy"
+          },
+          "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 persistent regional disk in the specified project using the data included in the request.",
           "httpMethod": "POST",
@@ -16001,6 +16092,50 @@
             "https://www.googleapis.com/auth/compute"
           ]
         },
+        "setIamPolicy": {
+          "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+          "httpMethod": "POST",
+          "id": "compute.regionDisks.setIamPolicy",
+          "parameterOrder": [
+            "project",
+            "region",
+            "resource"
+          ],
+          "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": "The name of the region for this request.",
+              "location": "path",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "required": true,
+              "type": "string"
+            },
+            "resource": {
+              "description": "Name or id of the resource for 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}/disks/{resource}/setIamPolicy",
+          "request": {
+            "$ref": "RegionSetPolicyRequest"
+          },
+          "response": {
+            "$ref": "Policy"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
         "setLabels": {
           "description": "Sets the labels on the target regional disk.",
           "httpMethod": "POST",
@@ -16521,6 +16656,53 @@
             "https://www.googleapis.com/auth/compute"
           ]
         },
+        "createInstances": {
+          "description": "Creates instances with per-instance configs in this regional managed instance group. Instances are created using the current instance template. The create instances operation is marked DONE if the createInstances request is successful. The underlying actions take additional time. You must separately verify the status of the creating or actions with the listmanagedinstances method.",
+          "httpMethod": "POST",
+          "id": "compute.regionInstanceGroupManagers.createInstances",
+          "parameterOrder": [
+            "project",
+            "region",
+            "instanceGroupManager"
+          ],
+          "parameters": {
+            "instanceGroupManager": {
+              "description": "The name of the managed instance group. It should conform to RFC1035.",
+              "location": "path",
+              "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": "The name of the region where the managed instance group is located. It should conform to RFC1035.",
+              "location": "path",
+              "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.\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}/instanceGroupManagers/{instanceGroupManager}/createInstances",
+          "request": {
+            "$ref": "RegionInstanceGroupManagersCreateInstancesRequest"
+          },
+          "response": {
+            "$ref": "Operation"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute"
+          ]
+        },
         "delete": {
           "description": "Deletes the specified managed instance group and all of the instances in that group.",
           "httpMethod": "DELETE",
@@ -25971,7 +26153,7 @@
       }
     }
   },
-  "revision": "20181130",
+  "revision": "20181217",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -25984,7 +26166,7 @@
           "type": "integer"
         },
         "acceleratorType": {
-          "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types.",
           "type": "string"
         }
       },
@@ -26030,6 +26212,10 @@
           "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource's resource id.",
+          "type": "string"
+        },
         "zone": {
           "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a. 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"
@@ -26541,6 +26727,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "status": {
           "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
           "enum": [
@@ -26941,6 +27131,10 @@
           "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "specificAllocation": {
           "$ref": "AllocationSpecificSKUAllocation"
         },
@@ -27410,7 +27604,7 @@
           "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 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-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
           "type": "string"
         },
         "diskEncryptionKey": {
@@ -27683,6 +27877,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "status": {
           "description": "[Output Only] The status of the autoscaler configuration.",
           "enum": [
@@ -28196,7 +28394,7 @@
       "id": "AutoscalingPolicyLoadBalancingUtilization",
       "properties": {
         "utilizationTarget": {
-          "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
           "format": "double",
           "type": "number"
         }
@@ -28354,6 +28552,10 @@
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
+        },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
         }
       },
       "type": "object"
@@ -28635,6 +28837,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "sessionAffinity": {
           "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
           "enum": [
@@ -29283,6 +29489,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "startTimestamp": {
           "description": "[Output Only] Commitment start time in RFC3339 text format.",
           "type": "string"
@@ -29736,6 +29946,61 @@
       },
       "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",
@@ -29744,6 +30009,9 @@
           "description": "The name of the encryption key that is stored in Google Cloud KMS.",
           "type": "string"
         },
+        "kmsKeyServiceAccount": {
+          "type": "string"
+        },
         "rawKey": {
           "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource.",
           "type": "string"
@@ -29952,6 +30220,7 @@
           "description": "[Output Only] The status of disk creation.",
           "enum": [
             "CREATING",
+            "DELETING",
             "FAILED",
             "READY",
             "RESTORING"
@@ -29960,6 +30229,7 @@
             "",
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -30317,6 +30587,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "validDiskSize": {
           "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\".",
           "type": "string"
@@ -30817,6 +31091,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": {
@@ -31105,6 +31396,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "sourceRanges": {
           "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
           "items": {
@@ -31437,6 +31732,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "serviceLabel": {
           "description": "An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.\n\nThe label must be 1-63 characters long, and comply with RFC1035. Specifically, the label 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.\n\nThis field is only used for internal load balancing.",
           "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
@@ -31896,6 +32195,7 @@
           "description": "The ID of a supported feature. Read  Enabling guest operating system features to see a list of available options.",
           "enum": [
             "FEATURE_TYPE_UNSPECIFIED",
+            "GVNIC",
             "MULTI_IP_SUBNET",
             "SECURE_BOOT",
             "UEFI_COMPATIBLE",
@@ -31908,6 +32208,7 @@
             "",
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -32594,6 +32895,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",
@@ -32773,6 +33215,203 @@
       },
       "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 percentage of traffic that flows to their corresponding backend service. The weights must add up to 100. If all traffic needs to go to a single backend service, there must be one weightedBackendService with weight set to 100.\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 routes the request to the backend service specified by this  routeAction.\nOnly one of routeAction or urlRedirect must be set."
+        },
+        "urlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "In response to a route rule match, the load balancer redirects the request to a URL specified by the following HttpRedirectAction.\nOnly one of urlRedirect or routeAction must 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",
@@ -33074,6 +33713,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource's resource id.",
+          "type": "string"
+        },
         "sourceDisk": {
           "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:  \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
           "type": "string"
@@ -33124,6 +33767,7 @@
         "status": {
           "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
           "enum": [
+            "DELETING",
             "FAILED",
             "PENDING",
             "READY"
@@ -33131,9 +33775,17 @@
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
+        },
+        "storageLocations": {
+          "description": "GCS bucket storage location of the image (regional or multi-regional).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
         }
       },
       "type": "object"
@@ -33379,6 +34031,10 @@
           "description": "[Output Only] Server-defined URL for this resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "serviceAccounts": {
           "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
           "items": {
@@ -33607,6 +34263,10 @@
           "description": "[Output Only] The URL for this instance group. The server generates this URL.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "size": {
           "description": "[Output Only] The total number of instances in the instance group.",
           "format": "int32",
@@ -33949,6 +34609,10 @@
           "description": "[Output Only] The URL for this managed instance group. The server defines this URL.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "serviceAccount": {
           "description": "The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
           "type": "string"
@@ -34445,7 +35109,7 @@
           "type": "array"
         },
         "maximalAction": {
-          "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
+          "description": "The maximal action that should be performed on the instances. By default REPLACE. This field is deprecated, please use most_disruptive_allowed_action.",
           "enum": [
             "NONE",
             "REFRESH",
@@ -35841,6 +36505,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",
@@ -35927,7 +36608,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. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
+          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_10G_LR"
           ],
@@ -38427,6 +39108,24 @@
     "ManagedInstanceInstanceHealth": {
       "id": "ManagedInstanceInstanceHealth",
       "properties": {
+        "detailedHealthState": {
+          "description": "[Output Only] The current detailed instance health state.",
+          "enum": [
+            "DRAINING",
+            "HEALTHY",
+            "TIMEOUT",
+            "UNHEALTHY",
+            "UNKNOWN"
+          ],
+          "enumDescriptions": [
+            "",
+            "",
+            "",
+            "",
+            ""
+          ],
+          "type": "string"
+        },
         "healthCheck": {
           "description": "[Output Only] The URL for the health check that verifies whether the instance is healthy.",
           "type": "string"
@@ -38622,6 +39321,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",
@@ -38723,6 +39465,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "subnetworks": {
           "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this VPC network.",
           "items": {
@@ -40210,6 +40956,15 @@
       },
       "type": "object"
     },
+    "NodeGroupsSetAutoscalingPolicyRequest": {
+      "id": "NodeGroupsSetAutoscalingPolicyRequest",
+      "properties": {
+        "autoscalingPolicy": {
+          "$ref": "NodeGroupAutoscalingPolicy"
+        }
+      },
+      "type": "object"
+    },
     "NodeGroupsSetNodeTemplateRequest": {
       "id": "NodeGroupsSetNodeTemplateRequest",
       "properties": {
@@ -41547,14 +42302,26 @@
       "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": "The default HttpRouteAction to follow if none of the pathRules or routeRules defined by this pathMatcher are matched. Use defaultRouteAction instead of defaultService when more advanced default routing actions like traffic splitting and URL rewrites are desired.\nOnly one of defaultService, 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  \nUse defaultService instead of defaultRouteAction when simple routing to a backend service is desired and other advanced capabilities like traffic splitting and URL rewrites are not required.\nOnly one of defaultService, defaultRouteAction or defaultUrlRedirect 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": "The request is redirected by default to a URL specified by defaultUrlRedirect when none of the specified pathRules or routeRules match.\nOnly one of defaultService, defaultRouteAction or defaultUrlRedirect must 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"
@@ -41565,6 +42332,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"
@@ -41580,9 +42354,17 @@
           },
           "type": "array"
         },
+        "routeAction": {
+          "$ref": "HttpRouteAction",
+          "description": "The HttpRouteAction to follow if this rule is matched. Use routeAction instead of service when more advanced default routing actions like traffic splitting and Url rewrites are desired.\nOnly one of service, routeAction or urlRedirect should must be set."
+        },
         "service": {
           "description": "The URL of the backend service resource if this rule is matched.\nUse service instead of routeAction when simple routing to a backend service is desired and other advanced capabilities like traffic splitting and rewrites are not required.\nOnly one of service, routeAction or urlRedirect should must be set.",
           "type": "string"
+        },
+        "urlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "The request is redirected to a URL specified by urlRedirect if this rule is matched.\nOnly one of service, routeAction or urlRedirect should must be set."
         }
       },
       "type": "object"
@@ -42047,6 +42829,10 @@
           ],
           "type": "string"
         },
+        "owner": {
+          "description": "[Output Only] Owning resource. This is the resource on which this quota is applied.",
+          "type": "string"
+        },
         "usage": {
           "description": "[Output Only] Current usage of this metric.",
           "format": "double",
@@ -42686,7 +43472,7 @@
           "type": "array"
         },
         "maximalAction": {
-          "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
+          "description": "The maximal action that should be performed on the instances. By default REPLACE. This field is deprecated, please use most_disruptive_allowed_action.",
           "enum": [
             "NONE",
             "REFRESH",
@@ -42720,6 +43506,20 @@
       },
       "type": "object"
     },
+    "RegionInstanceGroupManagersCreateInstancesRequest": {
+      "description": "RegionInstanceGroupManagers.createInstances",
+      "id": "RegionInstanceGroupManagersCreateInstancesRequest",
+      "properties": {
+        "instances": {
+          "description": "[Required] List of specifications of per-instance configs.",
+          "items": {
+            "$ref": "PerInstanceConfig"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "RegionInstanceGroupManagersDeleteInstancesRequest": {
       "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
       "properties": {
@@ -43228,6 +44028,17 @@
       },
       "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"
+    },
     "ResourceCommitment": {
       "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
       "id": "ResourceCommitment",
@@ -43948,6 +44759,10 @@
           "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource with the resource id.",
+          "type": "string"
+        },
         "tags": {
           "annotations": {
             "required": [
@@ -45806,7 +46621,7 @@
       "type": "object"
     },
     "ShieldedVmIdentityEntry": {
-      "description": "A Shielded VM Identity Entry.",
+      "description": "A Shielded Instance Identity Entry.",
       "id": "ShieldedVmIdentityEntry",
       "properties": {
         "ekCert": {
@@ -45921,6 +46736,10 @@
           "description": "[Output Only] Server-defined URL for the resource.",
           "type": "string"
         },
+        "selfLinkWithId": {
+          "description": "[Output Only] Server-defined URL for this resource's resource id.",
+          "type": "string"
+        },
         "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."
@@ -50169,10 +50988,18 @@
           "description": "[Output Only] Creation timestamp in RFC3339 text format.",
           "type": "string"
         },
+        "defaultRouteAction": {
+          "$ref": "HttpRouteAction",
+          "description": "The default HttpRouteAction to follow if none of the hostRules match. Use defaultRouteAction instead of defaultService when more advanced default routing actions like traffic splitting and Url rewrites are desired.\nOnly one of defaultService, defaultRouteAction or defaultUrlRedirect should must be set."
+        },
         "defaultService": {
           "description": "The URL of the backendService resource if none of the hostRules match.\nUse defaultService instead of defaultRouteAction when simple routing to a backendService is desired and other advanced capabilities like traffic splitting and rewrites are not required.\nOnly one of defaultService, defaultRouteAction or defaultUrlRedirect should must be set.",
           "type": "string"
         },
+        "defaultUrlRedirect": {
+          "$ref": "HttpRedirectAction",
+          "description": "The request is redirected to a default URL specified by defaultUrlRedirect if none of the HostRules match.\nOnly one of defaultService, defaultRouteAction or defaultUrlRedirect should must be set."
+        },
         "description": {
           "description": "An optional description of this resource. Provide this property when you create the resource.",
           "type": "string"
@@ -50182,6 +51009,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": {
@@ -50354,10 +51185,19 @@
       "description": "Message for the expected URL mappings.",
       "id": "UrlMapTest",
       "properties": {
+        "backendServiceWeight": {
+          "description": "The weight to use for the supplied host and path when using advanced routing rules that involve traffic splitting.",
+          "format": "uint32",
+          "type": "integer"
+        },
         "description": {
           "description": "Description of this test case.",
           "type": "string"
         },
+        "expectedUrlRedirect": {
+          "description": "The expected URL that should be redirected to for the host and path being tested.",
+          "type": "string"
+        },
         "host": {
           "description": "Host portion of the URL.",
           "type": "string"
@@ -50625,6 +51465,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",
@@ -51844,6 +52699,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. The sum of all weights specified in weightedBackendServices within HttpRouteAction must equal 100.\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.",
+          "format": "uint32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "XpnHostList": {
       "id": "XpnHostList",
       "properties": {
diff --git a/compute/v0.alpha/compute-gen.go b/compute/v0.alpha/compute-gen.go
index 1b02604..a13cc74 100644
--- a/compute/v0.alpha/compute-gen.go
+++ b/compute/v0.alpha/compute-gen.go
@@ -940,8 +940,11 @@
 	AcceleratorCount int64 `json:"acceleratorCount,omitempty"`
 
 	// AcceleratorType: Full or partial URL of the accelerator type resource
-	// to attach to this instance. If you are creating an instance template,
-	// specify only the accelerator name.
+	// to attach to this instance. For example:
+	// projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-
+	// p100 If you are creating an instance template, specify only the
+	// accelerator name. See GPUs on Compute Engine for a full list of
+	// accelerator types.
 	AcceleratorType string `json:"acceleratorType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
@@ -1002,6 +1005,10 @@
 	// resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource's
+	// resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Zone: [Output Only] The name of the zone where the accelerator type
 	// resides, such as us-central1-a. You must specify this field as part
 	// of the HTTP request URL. It is not settable as a field in the request
@@ -1677,6 +1684,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Status: [Output Only] The status of the address, which can be one of
 	// RESERVING, RESERVED, or IN_USE. An address that is RESERVING is
 	// currently in the process of being reserved. A RESERVED address is
@@ -2243,6 +2254,10 @@
 	// resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	SpecificAllocation *AllocationSpecificSKUAllocation `json:"specificAllocation,omitempty"`
 
 	// SpecificAllocationRequired: Indicates whether the allocation can be
@@ -2932,7 +2947,7 @@
 	// 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
+	// to this disk, in the form persistent-disk-x, where x is a number
 	// assigned by Google Compute Engine. This field is only applicable for
 	// persistent disks.
 	DeviceName string `json:"deviceName,omitempty"`
@@ -3393,6 +3408,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Status: [Output Only] The status of the autoscaler configuration.
 	//
 	// Possible values:
@@ -4190,7 +4209,7 @@
 // of autoscaling based on load balancing.
 type AutoscalingPolicyLoadBalancingUtilization struct {
 	// UtilizationTarget: Fraction of backend capacity utilization (set in
-	// HTTP(s) load balancing configuration) that autoscaler should
+	// HTTP(S) load balancing configuration) that autoscaler should
 	// maintain. Must be a positive float value. If not defined, the default
 	// is 0.8.
 	UtilizationTarget float64 `json:"utilizationTarget,omitempty"`
@@ -4529,6 +4548,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -4903,6 +4926,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// SessionAffinity: Type of session affinity to use. The default is
 	// NONE.
 	//
@@ -5998,6 +6025,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// StartTimestamp: [Output Only] Commitment start time in RFC3339 text
 	// format.
 	StartTimestamp string `json:"startTimestamp,omitempty"`
@@ -6598,12 +6629,83 @@
 	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
 	// Cloud KMS.
 	KmsKeyName string `json:"kmsKeyName,omitempty"`
 
+	KmsKeyServiceAccount string `json:"kmsKeyServiceAccount,omitempty"`
+
 	// RawKey: Specifies a 256-bit customer-supplied encryption key, encoded
 	// in RFC 4648 base64 to either encrypt or decrypt this resource.
 	RawKey string `json:"rawKey,omitempty"`
@@ -6934,6 +7036,7 @@
 	//
 	// Possible values:
 	//   "CREATING"
+	//   "DELETING"
 	//   "FAILED"
 	//   "READY"
 	//   "RESTORING"
@@ -7444,6 +7547,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// ValidDiskSize: [Output Only] An optional textual description of the
 	// valid disk size, such as "10GB-10TB".
 	ValidDiskSize string `json:"validDiskSize,omitempty"`
@@ -8226,6 +8333,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"`
@@ -8571,6 +8717,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// SourceRanges: If source ranges are specified, the firewall will apply
 	// only to traffic that has source IP address in these ranges. These
 	// ranges must be expressed in CIDR format. One or both of sourceRanges
@@ -9188,6 +9338,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// ServiceLabel: An optional prefix to the service name for this
 	// Forwarding Rule. If specified, will be the first label of the fully
 	// qualified service name.
@@ -9926,6 +10080,7 @@
 	//
 	// Possible values:
 	//   "FEATURE_TYPE_UNSPECIFIED"
+	//   "GVNIC"
 	//   "MULTI_IP_SUBNET"
 	//   "SECURE_BOOT"
 	//   "UEFI_COMPATIBLE"
@@ -10913,6 +11068,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.
@@ -11159,6 +11621,395 @@
 	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
+	// percentage of traffic that flows to their corresponding backend
+	// service. The weights must add up to 100. If all traffic needs to go
+	// to a single backend service, there must be one weightedBackendService
+	// with weight set to 100.
+	// 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
+	// routes the request to the backend service specified by this
+	// routeAction.
+	// Only one of routeAction or urlRedirect must be set.
+	RouteAction *HttpRouteAction `json:"routeAction,omitempty"`
+
+	// UrlRedirect: In response to a route rule match, the load balancer
+	// redirects the request to a URL specified by the following
+	// HttpRedirectAction.
+	// Only one of urlRedirect or routeAction must 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.
@@ -11499,6 +12350,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource's
+	// resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// SourceDisk: URL of the source disk used to create this image. This
 	// can be a full or valid partial URL. You must provide either this
 	// property or the rawDisk.source property but not both to create an
@@ -11570,11 +12425,16 @@
 	// Possible values are FAILED, PENDING, or READY.
 	//
 	// Possible values:
+	//   "DELETING"
 	//   "FAILED"
 	//   "PENDING"
 	//   "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:"-"`
@@ -11947,6 +12807,10 @@
 	// SelfLink: [Output Only] Server-defined URL for this resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// ServiceAccounts: A list of service accounts, with their specified
 	// scopes, authorized for this instance. Only one service account per VM
 	// instance is supported.
@@ -12235,6 +13099,10 @@
 	// generates this URL.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Size: [Output Only] The total number of instances in the instance
 	// group.
 	Size int64 `json:"size,omitempty"`
@@ -12675,6 +13543,10 @@
 	// server defines this URL.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// ServiceAccount: The service account to be used as credentials for all
 	// operations performed by the managed instance group on instances. The
 	// service accounts needs all permissions required to create and delete
@@ -13461,8 +14333,9 @@
 	// zones/[ZONE]/instances/[INSTANCE_NAME].
 	Instances []string `json:"instances,omitempty"`
 
-	// MaximalAction: The maximal action that should be perfomed on the
-	// instances. By default REPLACE.
+	// MaximalAction: The maximal action that should be performed on the
+	// instances. By default REPLACE. This field is deprecated, please use
+	// most_disruptive_allowed_action.
 	//
 	// Possible values:
 	//   "NONE"
@@ -15720,6 +16593,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
@@ -15801,8 +16708,7 @@
 	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. Only 10G per link
-	// is allowed for a dedicated interconnect. Options: Ethernet_10G_LR
+	// of the links in the bundle, not the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_10G_LR"
@@ -19232,6 +20138,17 @@
 }
 
 type ManagedInstanceInstanceHealth struct {
+	// DetailedHealthState: [Output Only] The current detailed instance
+	// health state.
+	//
+	// Possible values:
+	//   "DRAINING"
+	//   "HEALTHY"
+	//   "TIMEOUT"
+	//   "UNHEALTHY"
+	//   "UNKNOWN"
+	DetailedHealthState string `json:"detailedHealthState,omitempty"`
+
 	// HealthCheck: [Output Only] The URL for the health check that verifies
 	// whether the instance is healthy.
 	HealthCheck string `json:"healthCheck,omitempty"`
@@ -19243,20 +20160,21 @@
 	//   "UNHEALTHY"
 	HealthState string `json:"healthState,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "HealthCheck") to
-	// unconditionally include in API requests. By default, fields with
+	// ForceSendFields is a list of field names (e.g. "DetailedHealthState")
+	// 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. "HealthCheck") 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 is a list of field names (e.g. "DetailedHealthState") 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:"-"`
 }
 
@@ -19592,6 +20510,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
@@ -19698,6 +20713,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Subnetworks: [Output Only] Server-defined fully-qualified URLs for
 	// all subnetworks in this VPC network.
 	Subnetworks []string `json:"subnetworks,omitempty"`
@@ -21920,6 +22939,33 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type NodeGroupsSetAutoscalingPolicyRequest struct {
+	AutoscalingPolicy *NodeGroupAutoscalingPolicy `json:"autoscalingPolicy,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "AutoscalingPolicy")
+	// 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. "AutoscalingPolicy") 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 *NodeGroupsSetAutoscalingPolicyRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod NodeGroupsSetAutoscalingPolicyRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type NodeGroupsSetNodeTemplateRequest struct {
 	// NodeTemplate: Full or partial URL of the node template resource to be
 	// updated for this node group.
@@ -23786,6 +24832,15 @@
 // 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: The default HttpRouteAction to follow if none of
+	// the pathRules or routeRules defined by this pathMatcher are matched.
+	// Use defaultRouteAction instead of defaultService when more advanced
+	// default routing actions like traffic splitting and URL rewrites are
+	// desired.
+	// Only one of defaultService, 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
@@ -23806,10 +24861,23 @@
 	// - compute.backendServices.use
 	DefaultService string `json:"defaultService,omitempty"`
 
+	// DefaultUrlRedirect: The request is redirected by default to a URL
+	// specified by defaultUrlRedirect when none of the specified pathRules
+	// or routeRules match.
+	// Only one of defaultService, defaultRouteAction or defaultUrlRedirect
+	// must 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"`
 
@@ -23823,15 +24891,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
@@ -23856,6 +24932,12 @@
 	// or #, and those chars are not allowed here.
 	Paths []string `json:"paths,omitempty"`
 
+	// RouteAction: The HttpRouteAction to follow if this rule is matched.
+	// Use routeAction instead of service when more advanced default routing
+	// actions like traffic splitting and Url rewrites are desired.
+	// Only one of service, routeAction or urlRedirect should must be set.
+	RouteAction *HttpRouteAction `json:"routeAction,omitempty"`
+
 	// Service: The URL of the backend service resource if this rule is
 	// matched.
 	// Use service instead of routeAction when simple routing to a backend
@@ -23864,6 +24946,11 @@
 	// Only one of service, routeAction or urlRedirect should must be set.
 	Service string `json:"service,omitempty"`
 
+	// UrlRedirect: The request is redirected to a URL specified by
+	// urlRedirect if this rule is matched.
+	// Only one of service, routeAction or urlRedirect should must 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,
@@ -24506,6 +25593,10 @@
 	//   "VPN_TUNNELS"
 	Metric string `json:"metric,omitempty"`
 
+	// Owner: [Output Only] Owning resource. This is the resource on which
+	// this quota is applied.
+	Owner string `json:"owner,omitempty"`
+
 	// Usage: [Output Only] Current usage of this metric.
 	Usage float64 `json:"usage,omitempty"`
 
@@ -25466,8 +26557,9 @@
 	// on this managed instance group.
 	Instances []string `json:"instances,omitempty"`
 
-	// MaximalAction: The maximal action that should be perfomed on the
-	// instances. By default REPLACE.
+	// MaximalAction: The maximal action that should be performed on the
+	// instances. By default REPLACE. This field is deprecated, please use
+	// most_disruptive_allowed_action.
 	//
 	// Possible values:
 	//   "NONE"
@@ -25509,6 +26601,35 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// RegionInstanceGroupManagersCreateInstancesRequest:
+// RegionInstanceGroupManagers.createInstances
+type RegionInstanceGroupManagersCreateInstancesRequest struct {
+	// Instances: [Required] List of specifications of per-instance configs.
+	Instances []*PerInstanceConfig `json:"instances,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Instances") 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. "Instances") 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 *RegionInstanceGroupManagersCreateInstancesRequest) MarshalJSON() ([]byte, error) {
+	type NoMethod RegionInstanceGroupManagersCreateInstancesRequest
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type RegionInstanceGroupManagersDeleteInstancesRequest struct {
 	// Instances: The URLs of one or more instances to delete. This can be a
 	// full URL or a partial URL, such as
@@ -26354,6 +27475,40 @@
 	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)
+}
+
 // ResourceCommitment: Commitment for a particular resource (a
 // Commitment is composed of one or more of these).
 type ResourceCommitment struct {
@@ -27418,6 +28573,10 @@
 	// resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource
+	// with the resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// Tags: A list of instance tags to which this route applies.
 	Tags []string `json:"tags,omitempty"`
 
@@ -30047,7 +31206,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ShieldedVmIdentityEntry: A Shielded VM Identity Entry.
+// ShieldedVmIdentityEntry: A Shielded Instance Identity Entry.
 type ShieldedVmIdentityEntry struct {
 	// EkCert: A PEM-encoded X.509 certificate. This field can be empty.
 	EkCert string `json:"ekCert,omitempty"`
@@ -30217,6 +31376,10 @@
 	// SelfLink: [Output Only] Server-defined URL for the resource.
 	SelfLink string `json:"selfLink,omitempty"`
 
+	// SelfLinkWithId: [Output Only] Server-defined URL for this resource's
+	// resource id.
+	SelfLinkWithId string `json:"selfLinkWithId,omitempty"`
+
 	// SnapshotEncryptionKey: Encrypts the snapshot using a
 	// customer-supplied encryption key.
 	//
@@ -36468,6 +37631,14 @@
 	// format.
 	CreationTimestamp string `json:"creationTimestamp,omitempty"`
 
+	// DefaultRouteAction: The default HttpRouteAction to follow if none of
+	// the hostRules match. Use defaultRouteAction instead of defaultService
+	// when more advanced default routing actions like traffic splitting and
+	// Url rewrites are desired.
+	// Only one of defaultService, defaultRouteAction or defaultUrlRedirect
+	// should must be set.
+	DefaultRouteAction *HttpRouteAction `json:"defaultRouteAction,omitempty"`
+
 	// DefaultService: The URL of the backendService resource if none of the
 	// hostRules match.
 	// Use defaultService instead of defaultRouteAction when simple routing
@@ -36477,6 +37648,12 @@
 	// should must be set.
 	DefaultService string `json:"defaultService,omitempty"`
 
+	// DefaultUrlRedirect: The request is redirected to a default URL
+	// specified by defaultUrlRedirect if none of the HostRules match.
+	// Only one of defaultService, defaultRouteAction or defaultUrlRedirect
+	// should must 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"`
@@ -36491,6 +37668,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"`
 
@@ -36738,9 +37921,18 @@
 
 // UrlMapTest: Message for the expected URL mappings.
 type UrlMapTest struct {
+	// BackendServiceWeight: The weight to use for the supplied host and
+	// path when using advanced routing rules that involve traffic
+	// splitting.
+	BackendServiceWeight int64 `json:"backendServiceWeight,omitempty"`
+
 	// Description: Description of this test case.
 	Description string `json:"description,omitempty"`
 
+	// ExpectedUrlRedirect: The expected URL that should be redirected to
+	// for the host and path being tested.
+	ExpectedUrlRedirect string `json:"expectedUrlRedirect,omitempty"`
+
 	// Host: Host portion of the URL.
 	Host string `json:"host,omitempty"`
 
@@ -36751,20 +37943,22 @@
 	// mapped to.
 	Service string `json:"service,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,
-	// 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 is a list of field names (e.g.
+	// "BackendServiceWeight") 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. "Description") 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 is a list of field names (e.g. "BackendServiceWeight") 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:"-"`
 }
 
@@ -37157,6 +38351,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 {
@@ -38888,6 +40120,57 @@
 	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. The
+	// sum of all weights specified in weightedBackendServices within
+	// HttpRouteAction must equal 100.
+	// 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.
+	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.
@@ -39764,7 +41047,7 @@
 	//     "acceleratorType": {
 	//       "description": "Name of the accelerator type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40451,7 +41734,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40622,7 +41905,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41833,7 +43116,7 @@
 	//     "allocation": {
 	//       "description": "Name of the allocation to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -42003,7 +43286,7 @@
 	//     "allocation": {
 	//       "description": "Name of the allocation to retrieve.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -43110,7 +44393,7 @@
 	//     "allocation": {
 	//       "description": "Name of the allocation to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -43539,7 +44822,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -43710,7 +44993,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -44331,7 +45614,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -44682,7 +45965,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -45029,7 +46312,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -45361,7 +46644,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -46102,7 +47385,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to patch.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -46580,7 +47863,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -47174,7 +48457,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -47507,7 +48790,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -47657,7 +48940,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to which the queried instance belongs.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -48756,7 +50039,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -49176,7 +50459,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -53595,7 +54878,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -53766,7 +55049,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -54387,7 +55670,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to patch.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -54760,7 +56043,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -55098,7 +56381,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -55259,7 +56542,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -56140,7 +57423,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -56301,7 +57584,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -56889,7 +58172,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to patch.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -57216,7 +58499,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -71048,8 +72331,8 @@
 }
 
 // Delete: Deletes the specified instance template. Deleting an instance
-// template is permanent and cannot be undone. It's not possible to
-// delete templates which are in use by an instance group.
+// template is permanent and cannot be undone. It is not possible to
+// delete templates that are already in use by a managed instance group.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/delete
 func (r *InstanceTemplatesService) Delete(project string, instanceTemplate string) *InstanceTemplatesDeleteCall {
 	c := &InstanceTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -71163,7 +72446,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceTemplates.delete",
 	//   "parameterOrder": [
@@ -71696,7 +72979,7 @@
 }
 
 // List: Retrieves a list of instance templates that are contained
-// within the specified project and zone.
+// within the specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/list
 func (r *InstanceTemplatesService) List(project string) *InstanceTemplatesListCall {
 	c := &InstanceTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -71865,7 +73148,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+	//   "description": "Retrieves a list of instance templates that are contained within the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.instanceTemplates.list",
 	//   "parameterOrder": [
@@ -94072,6 +95355,191 @@
 	}
 }
 
+// method id "compute.nodeGroups.setAutoscalingPolicy":
+
+type NodeGroupsSetAutoscalingPolicyCall struct {
+	s                                     *Service
+	project                               string
+	zone                                  string
+	nodeGroup                             string
+	nodegroupssetautoscalingpolicyrequest *NodeGroupsSetAutoscalingPolicyRequest
+	urlParams_                            gensupport.URLParams
+	ctx_                                  context.Context
+	header_                               http.Header
+}
+
+// SetAutoscalingPolicy: Sets the autoscaling policy of the node group.
+func (r *NodeGroupsService) SetAutoscalingPolicy(project string, zone string, nodeGroup string, nodegroupssetautoscalingpolicyrequest *NodeGroupsSetAutoscalingPolicyRequest) *NodeGroupsSetAutoscalingPolicyCall {
+	c := &NodeGroupsSetAutoscalingPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.zone = zone
+	c.nodeGroup = nodeGroup
+	c.nodegroupssetautoscalingpolicyrequest = nodegroupssetautoscalingpolicyrequest
+	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 *NodeGroupsSetAutoscalingPolicyCall) RequestId(requestId string) *NodeGroupsSetAutoscalingPolicyCall {
+	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 *NodeGroupsSetAutoscalingPolicyCall) Fields(s ...googleapi.Field) *NodeGroupsSetAutoscalingPolicyCall {
+	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 *NodeGroupsSetAutoscalingPolicyCall) Context(ctx context.Context) *NodeGroupsSetAutoscalingPolicyCall {
+	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 *NodeGroupsSetAutoscalingPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *NodeGroupsSetAutoscalingPolicyCall) 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.nodegroupssetautoscalingpolicyrequest)
+	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}/zones/{zone}/nodeGroups/{nodeGroup}/setAutoscalingPolicy")
+	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,
+		"zone":      c.zone,
+		"nodeGroup": c.nodeGroup,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.nodeGroups.setAutoscalingPolicy" 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 *NodeGroupsSetAutoscalingPolicyCall) 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": "Sets the autoscaling policy of the node group.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.nodeGroups.setAutoscalingPolicy",
+	//   "parameterOrder": [
+	//     "project",
+	//     "zone",
+	//     "nodeGroup"
+	//   ],
+	//   "parameters": {
+	//     "nodeGroup": {
+	//       "description": "Name of the NodeGroup resource to update.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "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"
+	//     },
+	//     "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"
+	//     },
+	//     "zone": {
+	//       "description": "The name of the zone for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "{project}/zones/{zone}/nodeGroups/{nodeGroup}/setAutoscalingPolicy",
+	//   "request": {
+	//     "$ref": "NodeGroupsSetAutoscalingPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.nodeGroups.setIamPolicy":
 
 type NodeGroupsSetIamPolicyCall struct {
@@ -94378,7 +95846,7 @@
 	//   ],
 	//   "parameters": {
 	//     "nodeGroup": {
-	//       "description": "Name of the NodeGroup resource to delete.",
+	//       "description": "Name of the NodeGroup resource to update.",
 	//       "location": "path",
 	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
 	//       "required": true,
@@ -101196,7 +102664,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -101366,7 +102834,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -101987,7 +103455,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -102338,7 +103806,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -102515,7 +103983,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -102685,7 +104153,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -102845,7 +104313,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource for which to get health.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -103822,7 +105290,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -104247,7 +105715,7 @@
 	//     "commitment": {
 	//       "description": "Name of the commitment to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -105015,7 +106483,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -106035,6 +107503,173 @@
 
 }
 
+// method id "compute.regionDisks.getIamPolicy":
+
+type RegionDisksGetIamPolicyCall struct {
+	s            *Service
+	project      string
+	region       string
+	resource     string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a resource. May be
+// empty if no such policy or resource exists.
+func (r *RegionDisksService) GetIamPolicy(project string, region string, resource string) *RegionDisksGetIamPolicyCall {
+	c := &RegionDisksGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.resource = resource
+	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 *RegionDisksGetIamPolicyCall) Fields(s ...googleapi.Field) *RegionDisksGetIamPolicyCall {
+	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 *RegionDisksGetIamPolicyCall) IfNoneMatch(entityTag string) *RegionDisksGetIamPolicyCall {
+	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 *RegionDisksGetIamPolicyCall) Context(ctx context.Context) *RegionDisksGetIamPolicyCall {
+	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 *RegionDisksGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionDisksGetIamPolicyCall) 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}/disks/{resource}/getIamPolicy")
+	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,
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *RegionDisksGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.regionDisks.getIamPolicy",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "resource"
+	//   ],
+	//   "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": "The name of the region for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "resource": {
+	//       "description": "Name or id of the resource for 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}/disks/{resource}/getIamPolicy",
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
 // method id "compute.regionDisks.insert":
 
 type RegionDisksInsertCall struct {
@@ -106856,6 +108491,168 @@
 
 }
 
+// method id "compute.regionDisks.setIamPolicy":
+
+type RegionDisksSetIamPolicyCall struct {
+	s                      *Service
+	project                string
+	region                 string
+	resource               string
+	regionsetpolicyrequest *RegionSetPolicyRequest
+	urlParams_             gensupport.URLParams
+	ctx_                   context.Context
+	header_                http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified
+// resource. Replaces any existing policy.
+func (r *RegionDisksService) SetIamPolicy(project string, region string, resource string, regionsetpolicyrequest *RegionSetPolicyRequest) *RegionDisksSetIamPolicyCall {
+	c := &RegionDisksSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.resource = resource
+	c.regionsetpolicyrequest = regionsetpolicyrequest
+	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 *RegionDisksSetIamPolicyCall) Fields(s ...googleapi.Field) *RegionDisksSetIamPolicyCall {
+	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 *RegionDisksSetIamPolicyCall) Context(ctx context.Context) *RegionDisksSetIamPolicyCall {
+	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 *RegionDisksSetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionDisksSetIamPolicyCall) 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.regionsetpolicyrequest)
+	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}/disks/{resource}/setIamPolicy")
+	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,
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *RegionDisksSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionDisks.setIamPolicy",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "resource"
+	//   ],
+	//   "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": "The name of the region for this request.",
+	//       "location": "path",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "required": true,
+	//       "type": "string"
+	//     },
+	//     "resource": {
+	//       "description": "Name or id of the resource for 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}/disks/{resource}/setIamPolicy",
+	//   "request": {
+	//     "$ref": "RegionSetPolicyRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.regionDisks.setLabels":
 
 type RegionDisksSetLabelsCall struct {
@@ -108879,6 +110676,193 @@
 
 }
 
+// method id "compute.regionInstanceGroupManagers.createInstances":
+
+type RegionInstanceGroupManagersCreateInstancesCall struct {
+	s                                                 *Service
+	project                                           string
+	region                                            string
+	instanceGroupManager                              string
+	regioninstancegroupmanagerscreateinstancesrequest *RegionInstanceGroupManagersCreateInstancesRequest
+	urlParams_                                        gensupport.URLParams
+	ctx_                                              context.Context
+	header_                                           http.Header
+}
+
+// CreateInstances: Creates instances with per-instance configs in this
+// regional managed instance group. Instances are created using the
+// current instance template. The create instances operation is marked
+// DONE if the createInstances request is successful. The underlying
+// actions take additional time. You must separately verify the status
+// of the creating or actions with the listmanagedinstances method.
+func (r *RegionInstanceGroupManagersService) CreateInstances(project string, region string, instanceGroupManager string, regioninstancegroupmanagerscreateinstancesrequest *RegionInstanceGroupManagersCreateInstancesRequest) *RegionInstanceGroupManagersCreateInstancesCall {
+	c := &RegionInstanceGroupManagersCreateInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.region = region
+	c.instanceGroupManager = instanceGroupManager
+	c.regioninstancegroupmanagerscreateinstancesrequest = regioninstancegroupmanagerscreateinstancesrequest
+	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.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionInstanceGroupManagersCreateInstancesCall) RequestId(requestId string) *RegionInstanceGroupManagersCreateInstancesCall {
+	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 *RegionInstanceGroupManagersCreateInstancesCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersCreateInstancesCall {
+	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 *RegionInstanceGroupManagersCreateInstancesCall) Context(ctx context.Context) *RegionInstanceGroupManagersCreateInstancesCall {
+	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 *RegionInstanceGroupManagersCreateInstancesCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *RegionInstanceGroupManagersCreateInstancesCall) 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.regioninstancegroupmanagerscreateinstancesrequest)
+	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}/instanceGroupManagers/{instanceGroupManager}/createInstances")
+	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,
+		"instanceGroupManager": c.instanceGroupManager,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionInstanceGroupManagers.createInstances" 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 *RegionInstanceGroupManagersCreateInstancesCall) 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 instances with per-instance configs in this regional managed instance group. Instances are created using the current instance template. The create instances operation is marked DONE if the createInstances request is successful. The underlying actions take additional time. You must separately verify the status of the creating or actions with the listmanagedinstances method.",
+	//   "httpMethod": "POST",
+	//   "id": "compute.regionInstanceGroupManagers.createInstances",
+	//   "parameterOrder": [
+	//     "project",
+	//     "region",
+	//     "instanceGroupManager"
+	//   ],
+	//   "parameters": {
+	//     "instanceGroupManager": {
+	//       "description": "The name of the managed instance group. It should conform to RFC1035.",
+	//       "location": "path",
+	//       "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": "The name of the region where the managed instance group is located. It should conform to RFC1035.",
+	//       "location": "path",
+	//       "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.\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}/instanceGroupManagers/{instanceGroupManager}/createInstances",
+	//   "request": {
+	//     "$ref": "RegionInstanceGroupManagersCreateInstancesRequest"
+	//   },
+	//   "response": {
+	//     "$ref": "Operation"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute"
+	//   ]
+	// }
+
+}
+
 // method id "compute.regionInstanceGroupManagers.delete":
 
 type RegionInstanceGroupManagersDeleteCall struct {
diff --git a/compute/v0.beta/compute-api.json b/compute/v0.beta/compute-api.json
index 37e0d73..2aa670a 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/hpAivS3Oe8CKVoCbwnyJCYDdS-0\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/mGcIZj-2gXhBfgt2l47QRlnnjV0\"",
   "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"
@@ -150,7 +150,7 @@
             "acceleratorType": {
               "description": "Name of the accelerator type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -302,7 +302,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -348,7 +348,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -635,7 +635,7 @@
             "allocation": {
               "description": "Name of the allocation to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -681,7 +681,7 @@
             "allocation": {
               "description": "Name of the allocation to retrieve.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1005,7 +1005,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1051,7 +1051,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1190,7 +1190,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -1282,7 +1282,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -1373,7 +1373,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1455,7 +1455,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1571,7 +1571,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to patch.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1612,7 +1612,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1746,7 +1746,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1828,7 +1828,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1862,7 +1862,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to which the queried instance belongs.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2098,7 +2098,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2193,7 +2193,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3245,7 +3245,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3291,7 +3291,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3480,7 +3480,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3577,7 +3577,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3615,7 +3615,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3808,7 +3808,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3846,7 +3846,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3998,7 +3998,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -6751,7 +6751,7 @@
     "instanceTemplates": {
       "methods": {
         "delete": {
-          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
           "httpMethod": "DELETE",
           "id": "compute.instanceTemplates.delete",
           "parameterOrder": [
@@ -6890,7 +6890,7 @@
           ]
         },
         "list": {
-          "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+          "description": "Retrieves a list of instance templates that are contained within the specified project.",
           "httpMethod": "GET",
           "id": "compute.instanceTemplates.list",
           "parameterOrder": [
@@ -9806,6 +9806,40 @@
             "https://www.googleapis.com/auth/compute.readonly"
           ]
         },
+        "getIamPolicy": {
+          "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+          "httpMethod": "GET",
+          "id": "compute.licenses.getIamPolicy",
+          "parameterOrder": [
+            "project",
+            "resource"
+          ],
+          "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"
+            },
+            "resource": {
+              "description": "Name or id of the resource for 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}/global/licenses/{resource}/getIamPolicy",
+          "response": {
+            "$ref": "Policy"
+          },
+          "scopes": [
+            "https://www.googleapis.com/auth/cloud-platform",
+            "https://www.googleapis.com/auth/compute",
+            "https://www.googleapis.com/auth/compute.readonly"
+          ]
+        },
         "insert": {
           "description": "Create a License resource in the specified project.",
           "httpMethod": "POST",
@@ -11501,7 +11535,7 @@
           ],
           "parameters": {
             "nodeGroup": {
-              "description": "Name of the NodeGroup resource to delete.",
+              "description": "Name of the NodeGroup resource to update.",
               "location": "path",
               "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
               "required": true,
@@ -12571,7 +12605,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -12617,7 +12651,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -12756,7 +12790,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -12848,7 +12882,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -12900,7 +12934,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -12946,7 +12980,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -12988,7 +13022,7 @@
             "backendService": {
               "description": "Name of the BackendService resource for which to get health.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -13224,7 +13258,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -13326,7 +13360,7 @@
             "commitment": {
               "description": "Name of the commitment to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -13470,7 +13504,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -21369,7 +21403,7 @@
       }
     }
   },
-  "revision": "20181130",
+  "revision": "20181217",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -21382,7 +21416,7 @@
           "type": "integer"
         },
         "acceleratorType": {
-          "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types.",
           "type": "string"
         }
       },
@@ -21906,11 +21940,13 @@
           "enum": [
             "DNS_RESOLVER",
             "GCE_ENDPOINT",
+            "NAT_AUTO",
             "VPC_PEERING"
           ],
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -22768,7 +22804,7 @@
           "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 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-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
           "type": "string"
         },
         "diskEncryptionKey": {
@@ -23502,7 +23538,7 @@
       "id": "AutoscalingPolicyLoadBalancingUtilization",
       "properties": {
         "utilizationTarget": {
-          "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
           "format": "double",
           "type": "number"
         }
@@ -25087,6 +25123,7 @@
           "description": "[Output Only] The status of disk creation.",
           "enum": [
             "CREATING",
+            "DELETING",
             "FAILED",
             "READY",
             "RESTORING"
@@ -25095,6 +25132,7 @@
             "",
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -28022,6 +28060,7 @@
         "status": {
           "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
           "enum": [
+            "DELETING",
             "FAILED",
             "PENDING",
             "READY"
@@ -28029,6 +28068,7 @@
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -30541,7 +30581,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. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
+          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_10G_LR"
           ],
@@ -35867,6 +35907,10 @@
           ],
           "type": "string"
         },
+        "owner": {
+          "description": "[Output Only] Owning resource. This is the resource on which this quota is applied.",
+          "type": "string"
+        },
         "usage": {
           "description": "[Output Only] Current usage of this metric.",
           "format": "double",
@@ -37211,6 +37255,13 @@
           },
           "description": "Labels to apply to scheduled snapshots. These can be later modified by the setLabels method. Label values may be empty.",
           "type": "object"
+        },
+        "storageLocations": {
+          "description": "GCS bucket storage location of the auto snapshot (regional or multi-regional).",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
         }
       },
       "type": "object"
@@ -39096,7 +39147,7 @@
       "type": "object"
     },
     "ShieldedVmIdentityEntry": {
-      "description": "A Shielded VM Identity Entry.",
+      "description": "A Shielded Instance Identity Entry.",
       "id": "ShieldedVmIdentityEntry",
       "properties": {
         "ekCert": {
diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go
index a719b3d..bab2ab2 100644
--- a/compute/v0.beta/compute-gen.go
+++ b/compute/v0.beta/compute-gen.go
@@ -832,8 +832,11 @@
 	AcceleratorCount int64 `json:"acceleratorCount,omitempty"`
 
 	// AcceleratorType: Full or partial URL of the accelerator type resource
-	// to attach to this instance. If you are creating an instance template,
-	// specify only the accelerator name.
+	// to attach to this instance. For example:
+	// projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-
+	// p100 If you are creating an instance template, specify only the
+	// accelerator name. See GPUs on Compute Engine for a full list of
+	// accelerator types.
 	AcceleratorType string `json:"acceleratorType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
@@ -1545,6 +1548,7 @@
 	// Possible values:
 	//   "DNS_RESOLVER"
 	//   "GCE_ENDPOINT"
+	//   "NAT_AUTO"
 	//   "VPC_PEERING"
 	Purpose string `json:"purpose,omitempty"`
 
@@ -2771,7 +2775,7 @@
 	// 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
+	// to this disk, in the form persistent-disk-x, where x is a number
 	// assigned by Google Compute Engine. This field is only applicable for
 	// persistent disks.
 	DeviceName string `json:"deviceName,omitempty"`
@@ -3977,7 +3981,7 @@
 // of autoscaling based on load balancing.
 type AutoscalingPolicyLoadBalancingUtilization struct {
 	// UtilizationTarget: Fraction of backend capacity utilization (set in
-	// HTTP(s) load balancing configuration) that autoscaler should
+	// HTTP(S) load balancing configuration) that autoscaler should
 	// maintain. Must be a positive float value. If not defined, the default
 	// is 0.8.
 	UtilizationTarget float64 `json:"utilizationTarget,omitempty"`
@@ -6348,6 +6352,7 @@
 	//
 	// Possible values:
 	//   "CREATING"
+	//   "DELETING"
 	//   "FAILED"
 	//   "READY"
 	//   "RESTORING"
@@ -10667,6 +10672,7 @@
 	// Possible values are FAILED, PENDING, or READY.
 	//
 	// Possible values:
+	//   "DELETING"
 	//   "FAILED"
 	//   "PENDING"
 	//   "READY"
@@ -14453,8 +14459,7 @@
 	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. Only 10G per link
-	// is allowed for a dedicated interconnect. Options: Ethernet_10G_LR
+	// of the links in the bundle, not the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_10G_LR"
@@ -22104,6 +22109,10 @@
 	//   "VPN_TUNNELS"
 	Metric string `json:"metric,omitempty"`
 
+	// Owner: [Output Only] Owning resource. This is the resource on which
+	// this quota is applied.
+	Owner string `json:"owner,omitempty"`
+
 	// Usage: [Output Only] Current usage of this metric.
 	Usage float64 `json:"usage,omitempty"`
 
@@ -24184,6 +24193,10 @@
 	// modified by the setLabels method. Label values may be empty.
 	Labels map[string]string `json:"labels,omitempty"`
 
+	// StorageLocations: GCS bucket storage location of the auto snapshot
+	// (regional or multi-regional).
+	StorageLocations []string `json:"storageLocations,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "GuestFlush") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -26871,7 +26884,7 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// ShieldedVmIdentityEntry: A Shielded VM Identity Entry.
+// ShieldedVmIdentityEntry: A Shielded Instance Identity Entry.
 type ShieldedVmIdentityEntry struct {
 	// EkCert: A PEM-encoded X.509 certificate. This field can be empty.
 	EkCert string `json:"ekCert,omitempty"`
@@ -34373,7 +34386,7 @@
 	//     "acceleratorType": {
 	//       "description": "Name of the accelerator type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -35060,7 +35073,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -35231,7 +35244,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -36442,7 +36455,7 @@
 	//     "allocation": {
 	//       "description": "Name of the allocation to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -36612,7 +36625,7 @@
 	//     "allocation": {
 	//       "description": "Name of the allocation to retrieve.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -37963,7 +37976,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -38134,7 +38147,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -38755,7 +38768,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -39106,7 +39119,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -39453,7 +39466,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -39785,7 +39798,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40370,7 +40383,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to patch.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40545,7 +40558,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41139,7 +41152,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41472,7 +41485,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41622,7 +41635,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to which the queried instance belongs.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -42721,7 +42734,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -43141,7 +43154,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -47560,7 +47573,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -47731,7 +47744,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -48537,7 +48550,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -48875,7 +48888,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -49036,7 +49049,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -49917,7 +49930,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -50078,7 +50091,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -50816,7 +50829,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -62622,8 +62635,8 @@
 }
 
 // Delete: Deletes the specified instance template. Deleting an instance
-// template is permanent and cannot be undone. It's not possible to
-// delete templates which are in use by an instance group.
+// template is permanent and cannot be undone. It is not possible to
+// delete templates that are already in use by a managed instance group.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/delete
 func (r *InstanceTemplatesService) Delete(project string, instanceTemplate string) *InstanceTemplatesDeleteCall {
 	c := &InstanceTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -62737,7 +62750,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceTemplates.delete",
 	//   "parameterOrder": [
@@ -63270,7 +63283,7 @@
 }
 
 // List: Retrieves a list of instance templates that are contained
-// within the specified project and zone.
+// within the specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/list
 func (r *InstanceTemplatesService) List(project string) *InstanceTemplatesListCall {
 	c := &InstanceTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -63439,7 +63452,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+	//   "description": "Retrieves a list of instance templates that are contained within the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.instanceTemplates.list",
 	//   "parameterOrder": [
@@ -74878,6 +74891,162 @@
 
 }
 
+// method id "compute.licenses.getIamPolicy":
+
+type LicensesGetIamPolicyCall struct {
+	s            *Service
+	project      string
+	resource     string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a resource. May be
+// empty if no such policy or resource exists.
+func (r *LicensesService) GetIamPolicy(project string, resource string) *LicensesGetIamPolicyCall {
+	c := &LicensesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.project = project
+	c.resource = resource
+	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 *LicensesGetIamPolicyCall) Fields(s ...googleapi.Field) *LicensesGetIamPolicyCall {
+	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 *LicensesGetIamPolicyCall) IfNoneMatch(entityTag string) *LicensesGetIamPolicyCall {
+	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 *LicensesGetIamPolicyCall) Context(ctx context.Context) *LicensesGetIamPolicyCall {
+	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 *LicensesGetIamPolicyCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *LicensesGetIamPolicyCall) 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}/global/licenses/{resource}/getIamPolicy")
+	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,
+		"resource": c.resource,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.licenses.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.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 *LicensesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, 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 := &Policy{
+		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": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+	//   "httpMethod": "GET",
+	//   "id": "compute.licenses.getIamPolicy",
+	//   "parameterOrder": [
+	//     "project",
+	//     "resource"
+	//   ],
+	//   "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"
+	//     },
+	//     "resource": {
+	//       "description": "Name or id of the resource for 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}/global/licenses/{resource}/getIamPolicy",
+	//   "response": {
+	//     "$ref": "Policy"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform",
+	//     "https://www.googleapis.com/auth/compute",
+	//     "https://www.googleapis.com/auth/compute.readonly"
+	//   ]
+	// }
+
+}
+
 // method id "compute.licenses.insert":
 
 type LicensesInsertCall struct {
@@ -82181,7 +82350,7 @@
 	//   ],
 	//   "parameters": {
 	//     "nodeGroup": {
-	//       "description": "Name of the NodeGroup resource to delete.",
+	//       "description": "Name of the NodeGroup resource to update.",
 	//       "location": "path",
 	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
 	//       "required": true,
@@ -86978,7 +87147,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -87148,7 +87317,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -87769,7 +87938,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -88120,7 +88289,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -88297,7 +88466,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -88467,7 +88636,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -88627,7 +88796,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource for which to get health.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -89604,7 +89773,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -90029,7 +90198,7 @@
 	//     "commitment": {
 	//       "description": "Name of the commitment to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -90634,7 +90803,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
diff --git a/compute/v1/compute-api.json b/compute/v1/compute-api.json
index 2b7e314..bb2b40b 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/m6oCgMxscM7YlnV69HIdTmFUj8g\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/oxpkiPWMWiOlkpdwu0pVk3Aagog\"",
   "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"
@@ -150,7 +150,7 @@
             "acceleratorType": {
               "description": "Name of the accelerator type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -302,7 +302,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -348,7 +348,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -541,7 +541,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -587,7 +587,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -726,7 +726,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -773,7 +773,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -864,7 +864,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -946,7 +946,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1062,7 +1062,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to patch.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1103,7 +1103,7 @@
             "backendBucket": {
               "description": "Name of the BackendBucket resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1237,7 +1237,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1319,7 +1319,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1353,7 +1353,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to which the queried instance belongs.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1552,7 +1552,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -1647,7 +1647,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2564,7 +2564,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2610,7 +2610,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2750,7 +2750,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2802,7 +2802,7 @@
             "address": {
               "description": "Name of the address resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2840,7 +2840,7 @@
             "address": {
               "description": "Name of the address resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2960,7 +2960,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -2998,7 +2998,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -3114,7 +3114,7 @@
             "forwardingRule": {
               "description": "Name of the ForwardingRule resource in which target is to be set.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -5488,7 +5488,7 @@
     "instanceTemplates": {
       "methods": {
         "delete": {
-          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+          "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
           "httpMethod": "DELETE",
           "id": "compute.instanceTemplates.delete",
           "parameterOrder": [
@@ -5627,7 +5627,7 @@
           ]
         },
         "list": {
-          "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+          "description": "Retrieves a list of instance templates that are contained within the specified project.",
           "httpMethod": "GET",
           "id": "compute.instanceTemplates.list",
           "parameterOrder": [
@@ -9242,7 +9242,7 @@
           ],
           "parameters": {
             "nodeGroup": {
-              "description": "Name of the NodeGroup resource to delete.",
+              "description": "Name of the NodeGroup resource to update.",
               "location": "path",
               "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
               "required": true,
@@ -10312,7 +10312,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10358,7 +10358,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10497,7 +10497,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to patch.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -10544,7 +10544,7 @@
             "autoscaler": {
               "description": "Name of the autoscaler to update.",
               "location": "query",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "type": "string"
             },
             "project": {
@@ -10596,7 +10596,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to delete.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10642,7 +10642,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10684,7 +10684,7 @@
             "backendService": {
               "description": "Name of the BackendService resource for which to get health.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10875,7 +10875,7 @@
             "backendService": {
               "description": "Name of the BackendService resource to update.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -10977,7 +10977,7 @@
             "commitment": {
               "description": "Name of the commitment to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -11121,7 +11121,7 @@
             "diskType": {
               "description": "Name of the disk type to return.",
               "location": "path",
-              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+              "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
               "required": true,
               "type": "string"
             },
@@ -17736,7 +17736,7 @@
       }
     }
   },
-  "revision": "20181130",
+  "revision": "20181217",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -17749,7 +17749,7 @@
           "type": "integer"
         },
         "acceleratorType": {
-          "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+          "description": "Full or partial URL of the accelerator type resource to attach to this instance. For example: projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100 If you are creating an instance template, specify only the accelerator name. See GPUs on Compute Engine for a full list of accelerator types.",
           "type": "string"
         }
       },
@@ -18652,7 +18652,7 @@
           "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 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-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
           "type": "string"
         },
         "diskEncryptionKey": {
@@ -19377,7 +19377,7 @@
       "id": "AutoscalingPolicyLoadBalancingUtilization",
       "properties": {
         "utilizationTarget": {
-          "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+          "description": "Fraction of backend capacity utilization (set in HTTP(S) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
           "format": "double",
           "type": "number"
         }
@@ -20916,6 +20916,7 @@
           "description": "[Output Only] The status of disk creation.",
           "enum": [
             "CREATING",
+            "DELETING",
             "FAILED",
             "READY",
             "RESTORING"
@@ -20924,6 +20925,7 @@
             "",
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -23409,6 +23411,7 @@
         "status": {
           "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
           "enum": [
+            "DELETING",
             "FAILED",
             "PENDING",
             "READY"
@@ -23416,6 +23419,7 @@
           "enumDescriptions": [
             "",
             "",
+            "",
             ""
           ],
           "type": "string"
@@ -23573,6 +23577,9 @@
           },
           "type": "array"
         },
+        "hostname": {
+          "type": "string"
+        },
         "id": {
           "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
           "format": "uint64",
@@ -24099,6 +24106,13 @@
       "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
       "id": "InstanceGroupManager",
       "properties": {
+        "autoHealingPolicies": {
+          "description": "The autohealing policy for this managed instance group. You can specify only one value.",
+          "items": {
+            "$ref": "InstanceGroupManagerAutoHealingPolicy"
+          },
+          "type": "array"
+        },
         "baseInstanceName": {
           "annotations": {
             "required": [
@@ -24362,6 +24376,22 @@
       },
       "type": "object"
     },
+    "InstanceGroupManagerAutoHealingPolicy": {
+      "description": "",
+      "id": "InstanceGroupManagerAutoHealingPolicy",
+      "properties": {
+        "healthCheck": {
+          "description": "The URL for the health check that signals autohealing.",
+          "type": "string"
+        },
+        "initialDelaySec": {
+          "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
+          "format": "int32",
+          "type": "integer"
+        }
+      },
+      "type": "object"
+    },
     "InstanceGroupManagerList": {
       "description": "[Output Only] A list of managed instance groups.",
       "id": "InstanceGroupManagerList",
@@ -25690,7 +25720,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. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
+          "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle.",
           "enum": [
             "LINK_TYPE_ETHERNET_10G_LR"
           ],
@@ -26633,6 +26663,18 @@
         "selfLink": {
           "description": "[Output Only] Server-defined URL for the resource.",
           "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.",
+          "enum": [
+            "AVAILABLE",
+            "CLOSED"
+          ],
+          "enumDescriptions": [
+            "",
+            ""
+          ],
+          "type": "string"
         }
       },
       "type": "object"
@@ -30355,6 +30397,10 @@
           ],
           "type": "string"
         },
+        "owner": {
+          "description": "[Output Only] Owning resource. This is the resource on which this quota is applied.",
+          "type": "string"
+        },
         "usage": {
           "description": "[Output Only] Current usage of this metric.",
           "format": "double",
diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go
index 2788dee..3a2b72c 100644
--- a/compute/v1/compute-gen.go
+++ b/compute/v1/compute-gen.go
@@ -796,8 +796,11 @@
 	AcceleratorCount int64 `json:"acceleratorCount,omitempty"`
 
 	// AcceleratorType: Full or partial URL of the accelerator type resource
-	// to attach to this instance. If you are creating an instance template,
-	// specify only the accelerator name.
+	// to attach to this instance. For example:
+	// projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-
+	// p100 If you are creating an instance template, specify only the
+	// accelerator name. See GPUs on Compute Engine for a full list of
+	// accelerator types.
 	AcceleratorType string `json:"acceleratorType,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
@@ -2053,7 +2056,7 @@
 	// 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
+	// to this disk, in the form persistent-disk-x, where x is a number
 	// assigned by Google Compute Engine. This field is only applicable for
 	// persistent disks.
 	DeviceName string `json:"deviceName,omitempty"`
@@ -3206,7 +3209,7 @@
 // of autoscaling based on load balancing.
 type AutoscalingPolicyLoadBalancingUtilization struct {
 	// UtilizationTarget: Fraction of backend capacity utilization (set in
-	// HTTP(s) load balancing configuration) that autoscaler should
+	// HTTP(S) load balancing configuration) that autoscaler should
 	// maintain. Must be a positive float value. If not defined, the default
 	// is 0.8.
 	UtilizationTarget float64 `json:"utilizationTarget,omitempty"`
@@ -5505,6 +5508,7 @@
 	//
 	// Possible values:
 	//   "CREATING"
+	//   "DELETING"
 	//   "FAILED"
 	//   "READY"
 	//   "RESTORING"
@@ -9109,6 +9113,7 @@
 	// Possible values are FAILED, PENDING, or READY.
 	//
 	// Possible values:
+	//   "DELETING"
 	//   "FAILED"
 	//   "PENDING"
 	//   "READY"
@@ -9371,6 +9376,8 @@
 	// attached to the instance.
 	GuestAccelerators []*AcceleratorConfig `json:"guestAccelerators,omitempty"`
 
+	Hostname string `json:"hostname,omitempty"`
+
 	// Id: [Output Only] The unique identifier for the resource. This
 	// identifier is defined by the server.
 	Id uint64 `json:"id,omitempty,string"`
@@ -10087,6 +10094,10 @@
 // beta.regionInstanceGroupManagers ==) (== resource_for
 // v1.regionInstanceGroupManagers ==)
 type InstanceGroupManager struct {
+	// AutoHealingPolicies: The autohealing policy for this managed instance
+	// group. You can specify only one value.
+	AutoHealingPolicies []*InstanceGroupManagerAutoHealingPolicy `json:"autoHealingPolicies,omitempty"`
+
 	// BaseInstanceName: The base instance name to use for instances in this
 	// group. The value must be 1-58 characters long. Instances are named by
 	// appending a hyphen and a random four-character string to the base
@@ -10170,15 +10181,15 @@
 	// server.
 	googleapi.ServerResponse `json:"-"`
 
-	// ForceSendFields is a list of field names (e.g. "BaseInstanceName") to
-	// unconditionally include in API requests. By default, fields with
+	// ForceSendFields is a list of field names (e.g. "AutoHealingPolicies")
+	// 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. "BaseInstanceName") to
+	// NullFields is a list of field names (e.g. "AutoHealingPolicies") 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
@@ -10430,6 +10441,42 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+type InstanceGroupManagerAutoHealingPolicy struct {
+	// HealthCheck: The URL for the health check that signals autohealing.
+	HealthCheck string `json:"healthCheck,omitempty"`
+
+	// InitialDelaySec: The number of seconds that the managed instance
+	// group waits before it applies autohealing policies to new instances
+	// or recently recreated instances. This initial delay allows instances
+	// to initialize and run their startup scripts before the instance group
+	// determines that they are UNHEALTHY. This prevents the managed
+	// instance group from recreating its instances prematurely. This value
+	// must be from range [0, 3600].
+	InitialDelaySec int64 `json:"initialDelaySec,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "HealthCheck") 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. "HealthCheck") 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 *InstanceGroupManagerAutoHealingPolicy) MarshalJSON() ([]byte, error) {
+	type NoMethod InstanceGroupManagerAutoHealingPolicy
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // InstanceGroupManagerList: [Output Only] A list of managed instance
 // groups.
 type InstanceGroupManagerList struct {
@@ -12455,8 +12502,7 @@
 	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. Only 10G per link
-	// is allowed for a dedicated interconnect. Options: Ethernet_10G_LR
+	// of the links in the bundle, not the entire bundle.
 	//
 	// Possible values:
 	//   "LINK_TYPE_ETHERNET_10G_LR"
@@ -13731,6 +13777,16 @@
 	// 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.
+	//
+	// Possible values:
+	//   "AVAILABLE"
+	//   "CLOSED"
+	Status string `json:"status,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -19099,6 +19155,10 @@
 	//   "VPN_TUNNELS"
 	Metric string `json:"metric,omitempty"`
 
+	// Owner: [Output Only] Owning resource. This is the resource on which
+	// this quota is applied.
+	Owner string `json:"owner,omitempty"`
+
 	// Usage: [Output Only] Current usage of this metric.
 	Usage float64 `json:"usage,omitempty"`
 
@@ -29952,7 +30012,7 @@
 	//     "acceleratorType": {
 	//       "description": "Name of the accelerator type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -30639,7 +30699,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -30810,7 +30870,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -31672,7 +31732,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -31843,7 +31903,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -32464,7 +32524,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -32652,7 +32712,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -32999,7 +33059,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -33331,7 +33391,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -33916,7 +33976,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to patch.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -34091,7 +34151,7 @@
 	//     "backendBucket": {
 	//       "description": "Name of the BackendBucket resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -34685,7 +34745,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -35018,7 +35078,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -35168,7 +35228,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to which the queried instance belongs.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -36115,7 +36175,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -36535,7 +36595,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40430,7 +40490,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -40601,7 +40661,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41221,7 +41281,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41396,7 +41456,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -41557,7 +41617,7 @@
 	//     "address": {
 	//       "description": "Name of the address resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -42135,7 +42195,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -42296,7 +42356,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -42883,7 +42943,7 @@
 	//     "forwardingRule": {
 	//       "description": "Name of the ForwardingRule resource in which target is to be set.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -53166,8 +53226,8 @@
 }
 
 // Delete: Deletes the specified instance template. Deleting an instance
-// template is permanent and cannot be undone. It's not possible to
-// delete templates which are in use by an instance group.
+// template is permanent and cannot be undone. It is not possible to
+// delete templates that are already in use by a managed instance group.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/delete
 func (r *InstanceTemplatesService) Delete(project string, instanceTemplate string) *InstanceTemplatesDeleteCall {
 	c := &InstanceTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -53281,7 +53341,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+	//   "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It is not possible to delete templates that are already in use by a managed instance group.",
 	//   "httpMethod": "DELETE",
 	//   "id": "compute.instanceTemplates.delete",
 	//   "parameterOrder": [
@@ -53814,7 +53874,7 @@
 }
 
 // List: Retrieves a list of instance templates that are contained
-// within the specified project and zone.
+// within the specified project.
 // For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/list
 func (r *InstanceTemplatesService) List(project string) *InstanceTemplatesListCall {
 	c := &InstanceTemplatesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -53983,7 +54043,7 @@
 	}
 	return ret, nil
 	// {
-	//   "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+	//   "description": "Retrieves a list of instance templates that are contained within the specified project.",
 	//   "httpMethod": "GET",
 	//   "id": "compute.instanceTemplates.list",
 	//   "parameterOrder": [
@@ -68761,7 +68821,7 @@
 	//   ],
 	//   "parameters": {
 	//     "nodeGroup": {
-	//       "description": "Name of the NodeGroup resource to delete.",
+	//       "description": "Name of the NodeGroup resource to update.",
 	//       "location": "path",
 	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
 	//       "required": true,
@@ -73558,7 +73618,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -73728,7 +73788,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -74349,7 +74409,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to patch.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -74537,7 +74597,7 @@
 	//     "autoscaler": {
 	//       "description": "Name of the autoscaler to update.",
 	//       "location": "query",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "type": "string"
 	//     },
 	//     "project": {
@@ -74714,7 +74774,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to delete.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -74884,7 +74944,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -75044,7 +75104,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource for which to get health.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -75858,7 +75918,7 @@
 	//     "backendService": {
 	//       "description": "Name of the BackendService resource to update.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -76283,7 +76343,7 @@
 	//     "commitment": {
 	//       "description": "Name of the commitment to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
@@ -76888,7 +76948,7 @@
 	//     "diskType": {
 	//       "description": "Name of the disk type to return.",
 	//       "location": "path",
-	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+	//       "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?|[1-9][0-9]{0,19}",
 	//       "required": true,
 	//       "type": "string"
 	//     },
diff --git a/container/v1beta1/container-api.json b/container/v1beta1/container-api.json
index 94f13f9..021aaa8 100644
--- a/container/v1beta1/container-api.json
+++ b/container/v1beta1/container-api.json
@@ -357,6 +357,31 @@
                     "https://www.googleapis.com/auth/cloud-platform"
                   ]
                 },
+                "getJwks": {
+                  "description": "GetJSONWebKeys gets the public component of the cluster signing keys in\nJSON Web Key format.\nThis API is not yet intended for general use, and is not available for all\nclusters.",
+                  "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/jwks",
+                  "httpMethod": "GET",
+                  "id": "container.projects.locations.clusters.getJwks",
+                  "parameterOrder": [
+                    "parent"
+                  ],
+                  "parameters": {
+                    "parent": {
+                      "description": "The cluster (project, location, cluster id) to get keys for. Specified in\nthe format 'projects/*/locations/*/clusters/*'.",
+                      "location": "path",
+                      "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+                      "required": true,
+                      "type": "string"
+                    }
+                  },
+                  "path": "v1beta1/{+parent}/jwks",
+                  "response": {
+                    "$ref": "GetJSONWebKeysResponse"
+                  },
+                  "scopes": [
+                    "https://www.googleapis.com/auth/cloud-platform"
+                  ]
+                },
                 "list": {
                   "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.",
                   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters",
@@ -1031,6 +1056,35 @@
                       ]
                     }
                   }
+                },
+                "well-known": {
+                  "methods": {
+                    "getOpenid-configuration": {
+                      "description": "GetOpenIDConfig gets the OIDC discovery document for the cluster.\nSee the OpenID Connect Discovery 1.0 specification for details.\nhttps://openid.net/specs/openid-connect-discovery-1_0.html\nThis API is not yet intended for general use, and is not available for all\nclusters.",
+                      "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/.well-known/openid-configuration",
+                      "httpMethod": "GET",
+                      "id": "container.projects.locations.clusters.well-known.getOpenid-configuration",
+                      "parameterOrder": [
+                        "parent"
+                      ],
+                      "parameters": {
+                        "parent": {
+                          "description": "The cluster (project, location, cluster id) to get the discovery document\nfor. Specified in the format 'projects/*/locations/*/clusters/*'.",
+                          "location": "path",
+                          "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+                          "required": true,
+                          "type": "string"
+                        }
+                      },
+                      "path": "v1beta1/{+parent}/.well-known/openid-configuration",
+                      "response": {
+                        "$ref": "GetOpenIDConfigResponse"
+                      },
+                      "scopes": [
+                        "https://www.googleapis.com/auth/cloud-platform"
+                      ]
+                    }
+                  }
                 }
               }
             },
@@ -2435,7 +2489,7 @@
       }
     }
   },
-  "revision": "20181113",
+  "revision": "20181211",
   "rootUrl": "https://container.googleapis.com/",
   "schemas": {
     "AcceleratorConfig": {
@@ -2626,6 +2680,10 @@
           "description": "[Output only] Deprecated, use\n[NodePool.version](/kubernetes-engine/docs/reference/rest/v1beta1/projects.zones.clusters.nodePool)\ninstead. The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes.",
           "type": "string"
         },
+        "databaseEncryption": {
+          "$ref": "DatabaseEncryption",
+          "description": "Configuration of etcd encryption."
+        },
         "defaultMaxPodsConstraint": {
           "$ref": "MaxPodsConstraint",
           "description": "The default constraint on the maximum number of pods that can be run\nsimultaneously on a node in the node pool of this cluster. Only honored\nif cluster created with IP Alias support."
@@ -2997,12 +3055,101 @@
       },
       "type": "object"
     },
+    "DatabaseEncryption": {
+      "description": "Configuration of etcd encryption.",
+      "id": "DatabaseEncryption",
+      "properties": {
+        "keyName": {
+          "description": "Name of CloudKMS key to use for the encryption of secrets in etcd.\nEx. projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-key",
+          "type": "string"
+        },
+        "state": {
+          "description": "Denotes the state of etcd encryption.",
+          "enum": [
+            "UNKNOWN",
+            "ENCRYPTED",
+            "DECRYPTED"
+          ],
+          "enumDescriptions": [
+            "Should never be set",
+            "Secrets in etcd are encrypted.",
+            "Secrets in etcd are stored in plain text (at etcd level) - this is\nunrelated to GCE level full disk encryption."
+          ],
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "Empty": {
       "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n    service Foo {\n      rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n    }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.",
       "id": "Empty",
       "properties": {},
       "type": "object"
     },
+    "GetJSONWebKeysResponse": {
+      "description": "GetJSONWebKeysResponse is a valid JSON Web Key Set as specififed in rfc 7517",
+      "id": "GetJSONWebKeysResponse",
+      "properties": {
+        "keys": {
+          "description": "The public component of the keys used by the cluster to sign token\nrequests.",
+          "items": {
+            "$ref": "Jwk"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "GetOpenIDConfigResponse": {
+      "description": "GetOpenIDConfigResponse is an OIDC discovery document for the cluster.\nSee the OpenID Connect Discovery 1.0 specification for details.",
+      "id": "GetOpenIDConfigResponse",
+      "properties": {
+        "claims_supported": {
+          "description": "NOLINT",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "grant_types": {
+          "description": "NOLINT",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "id_token_signing_alg_values_supported": {
+          "description": "NOLINT",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "issuer": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "jwks_uri": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "response_types_supported": {
+          "description": "NOLINT",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        },
+        "subject_types_supported": {
+          "description": "NOLINT",
+          "items": {
+            "type": "string"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
     "HorizontalPodAutoscaling": {
       "description": "Configuration options for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods.",
       "id": "HorizontalPodAutoscaling",
@@ -3107,6 +3254,49 @@
       },
       "type": "object"
     },
+    "Jwk": {
+      "description": "Jwk is a JSON Web Key as specified in RFC 7517",
+      "id": "Jwk",
+      "properties": {
+        "alg": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "crv": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "e": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "kid": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "kty": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "n": {
+          "description": "Fields for RSA keys.\nNOLINT",
+          "type": "string"
+        },
+        "use": {
+          "description": "NOLINT",
+          "type": "string"
+        },
+        "x": {
+          "description": "Fields for ECDSA keys.\nNOLINT",
+          "type": "string"
+        },
+        "y": {
+          "description": "NOLINT",
+          "type": "string"
+        }
+      },
+      "type": "object"
+    },
     "KubernetesDashboard": {
       "description": "Configuration for the Kubernetes Dashboard.",
       "id": "KubernetesDashboard",
diff --git a/container/v1beta1/container-gen.go b/container/v1beta1/container-gen.go
index c46cffb..04921c5 100644
--- a/container/v1beta1/container-gen.go
+++ b/container/v1beta1/container-gen.go
@@ -137,6 +137,7 @@
 func NewProjectsLocationsClustersService(s *Service) *ProjectsLocationsClustersService {
 	rs := &ProjectsLocationsClustersService{s: s}
 	rs.NodePools = NewProjectsLocationsClustersNodePoolsService(s)
+	rs.WellKnown = NewProjectsLocationsClustersWellKnownService(s)
 	return rs
 }
 
@@ -144,6 +145,8 @@
 	s *Service
 
 	NodePools *ProjectsLocationsClustersNodePoolsService
+
+	WellKnown *ProjectsLocationsClustersWellKnownService
 }
 
 func NewProjectsLocationsClustersNodePoolsService(s *Service) *ProjectsLocationsClustersNodePoolsService {
@@ -155,6 +158,15 @@
 	s *Service
 }
 
+func NewProjectsLocationsClustersWellKnownService(s *Service) *ProjectsLocationsClustersWellKnownService {
+	rs := &ProjectsLocationsClustersWellKnownService{s: s}
+	return rs
+}
+
+type ProjectsLocationsClustersWellKnownService struct {
+	s *Service
+}
+
 func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
 	rs := &ProjectsLocationsOperationsService{s: s}
 	return rs
@@ -597,6 +609,9 @@
 	// of being upgraded, this reflects the minimum version of all nodes.
 	CurrentNodeVersion string `json:"currentNodeVersion,omitempty"`
 
+	// DatabaseEncryption: Configuration of etcd encryption.
+	DatabaseEncryption *DatabaseEncryption `json:"databaseEncryption,omitempty"`
+
 	// DefaultMaxPodsConstraint: The default constraint on the maximum
 	// number of pods that can be run
 	// simultaneously on a node in the node pool of this cluster. Only
@@ -1307,6 +1322,48 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// DatabaseEncryption: Configuration of etcd encryption.
+type DatabaseEncryption struct {
+	// KeyName: Name of CloudKMS key to use for the encryption of secrets in
+	// etcd.
+	// Ex.
+	// projects/my-project/locations/global/keyRings/my-ring/cryptoKeys/my-ke
+	// y
+	KeyName string `json:"keyName,omitempty"`
+
+	// State: Denotes the state of etcd encryption.
+	//
+	// Possible values:
+	//   "UNKNOWN" - Should never be set
+	//   "ENCRYPTED" - Secrets in etcd are encrypted.
+	//   "DECRYPTED" - Secrets in etcd are stored in plain text (at etcd
+	// level) - this is
+	// unrelated to GCE level full disk encryption.
+	State string `json:"state,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "KeyName") 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. "KeyName") 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 *DatabaseEncryption) MarshalJSON() ([]byte, error) {
+	type NoMethod DatabaseEncryption
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // Empty: A generic empty message that you can re-use to avoid defining
 // duplicated
 // empty messages in your APIs. A typical example is to use it as the
@@ -1325,6 +1382,94 @@
 	googleapi.ServerResponse `json:"-"`
 }
 
+// GetJSONWebKeysResponse: GetJSONWebKeysResponse is a valid JSON Web
+// Key Set as specififed in rfc 7517
+type GetJSONWebKeysResponse struct {
+	// Keys: The public component of the keys used by the cluster to sign
+	// token
+	// requests.
+	Keys []*Jwk `json:"keys,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "Keys") 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. "Keys") 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 *GetJSONWebKeysResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GetJSONWebKeysResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// GetOpenIDConfigResponse: GetOpenIDConfigResponse is an OIDC discovery
+// document for the cluster.
+// See the OpenID Connect Discovery 1.0 specification for details.
+type GetOpenIDConfigResponse struct {
+	// ClaimsSupported: NOLINT
+	ClaimsSupported []string `json:"claims_supported,omitempty"`
+
+	// GrantTypes: NOLINT
+	GrantTypes []string `json:"grant_types,omitempty"`
+
+	// IdTokenSigningAlgValuesSupported: NOLINT
+	IdTokenSigningAlgValuesSupported []string `json:"id_token_signing_alg_values_supported,omitempty"`
+
+	// Issuer: NOLINT
+	Issuer string `json:"issuer,omitempty"`
+
+	// JwksUri: NOLINT
+	JwksUri string `json:"jwks_uri,omitempty"`
+
+	// ResponseTypesSupported: NOLINT
+	ResponseTypesSupported []string `json:"response_types_supported,omitempty"`
+
+	// SubjectTypesSupported: NOLINT
+	SubjectTypesSupported []string `json:"subject_types_supported,omitempty"`
+
+	// ServerResponse contains the HTTP response code and headers from the
+	// server.
+	googleapi.ServerResponse `json:"-"`
+
+	// ForceSendFields is a list of field names (e.g. "ClaimsSupported") 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. "ClaimsSupported") 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 *GetOpenIDConfigResponse) MarshalJSON() ([]byte, error) {
+	type NoMethod GetOpenIDConfigResponse
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // HorizontalPodAutoscaling: Configuration options for the horizontal
 // pod autoscaling feature, which
 // increases or decreases the number of replica pods a replication
@@ -1619,6 +1764,60 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
+// Jwk: Jwk is a JSON Web Key as specified in RFC 7517
+type Jwk struct {
+	// Alg: NOLINT
+	Alg string `json:"alg,omitempty"`
+
+	// Crv: NOLINT
+	Crv string `json:"crv,omitempty"`
+
+	// E: NOLINT
+	E string `json:"e,omitempty"`
+
+	// Kid: NOLINT
+	Kid string `json:"kid,omitempty"`
+
+	// Kty: NOLINT
+	Kty string `json:"kty,omitempty"`
+
+	// N: Fields for RSA keys.
+	// NOLINT
+	N string `json:"n,omitempty"`
+
+	// Use: NOLINT
+	Use string `json:"use,omitempty"`
+
+	// X: Fields for ECDSA keys.
+	// NOLINT
+	X string `json:"x,omitempty"`
+
+	// Y: NOLINT
+	Y string `json:"y,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "Alg") 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. "Alg") 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 *Jwk) MarshalJSON() ([]byte, error) {
+	type NoMethod Jwk
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 // KubernetesDashboard: Configuration for the Kubernetes Dashboard.
 type KubernetesDashboard struct {
 	// Disabled: Whether the Kubernetes Dashboard is enabled for this
@@ -5541,6 +5740,154 @@
 
 }
 
+// method id "container.projects.locations.clusters.getJwks":
+
+type ProjectsLocationsClustersGetJwksCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetJwks: GetJSONWebKeys gets the public component of the cluster
+// signing keys in
+// JSON Web Key format.
+// This API is not yet intended for general use, and is not available
+// for all
+// clusters.
+func (r *ProjectsLocationsClustersService) GetJwks(parent string) *ProjectsLocationsClustersGetJwksCall {
+	c := &ProjectsLocationsClustersGetJwksCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	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 *ProjectsLocationsClustersGetJwksCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersGetJwksCall {
+	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 *ProjectsLocationsClustersGetJwksCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersGetJwksCall {
+	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 *ProjectsLocationsClustersGetJwksCall) Context(ctx context.Context) *ProjectsLocationsClustersGetJwksCall {
+	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 *ProjectsLocationsClustersGetJwksCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsClustersGetJwksCall) 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, "v1beta1/{+parent}/jwks")
+	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{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "container.projects.locations.clusters.getJwks" call.
+// Exactly one of *GetJSONWebKeysResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GetJSONWebKeysResponse.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 *ProjectsLocationsClustersGetJwksCall) Do(opts ...googleapi.CallOption) (*GetJSONWebKeysResponse, 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 := &GetJSONWebKeysResponse{
+		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": "GetJSONWebKeys gets the public component of the cluster signing keys in\nJSON Web Key format.\nThis API is not yet intended for general use, and is not available for all\nclusters.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/jwks",
+	//   "httpMethod": "GET",
+	//   "id": "container.projects.locations.clusters.getJwks",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The cluster (project, location, cluster id) to get keys for. Specified in\nthe format 'projects/*/locations/*/clusters/*'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/jwks",
+	//   "response": {
+	//     "$ref": "GetJSONWebKeysResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "container.projects.locations.clusters.list":
 
 type ProjectsLocationsClustersListCall struct {
@@ -8804,6 +9151,157 @@
 
 }
 
+// method id "container.projects.locations.clusters.well-known.getOpenid-configuration":
+
+type ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall struct {
+	s            *Service
+	parent       string
+	urlParams_   gensupport.URLParams
+	ifNoneMatch_ string
+	ctx_         context.Context
+	header_      http.Header
+}
+
+// GetOpenidConfiguration: GetOpenIDConfig gets the OIDC discovery
+// document for the cluster.
+// See the OpenID Connect Discovery 1.0 specification for
+// details.
+// https://openid.net/specs/openid-connect-discovery-1_0.html
+// Th
+// is API is not yet intended for general use, and is not available for
+// all
+// clusters.
+func (r *ProjectsLocationsClustersWellKnownService) GetOpenidConfiguration(parent string) *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall {
+	c := &ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+	c.parent = parent
+	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 *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall {
+	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 *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall {
+	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 *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) Context(ctx context.Context) *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall {
+	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 *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) Header() http.Header {
+	if c.header_ == nil {
+		c.header_ = make(http.Header)
+	}
+	return c.header_
+}
+
+func (c *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) 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, "v1beta1/{+parent}/.well-known/openid-configuration")
+	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{
+		"parent": c.parent,
+	})
+	return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "container.projects.locations.clusters.well-known.getOpenid-configuration" call.
+// Exactly one of *GetOpenIDConfigResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *GetOpenIDConfigResponse.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 *ProjectsLocationsClustersWellKnownGetOpenidConfigurationCall) Do(opts ...googleapi.CallOption) (*GetOpenIDConfigResponse, 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 := &GetOpenIDConfigResponse{
+		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": "GetOpenIDConfig gets the OIDC discovery document for the cluster.\nSee the OpenID Connect Discovery 1.0 specification for details.\nhttps://openid.net/specs/openid-connect-discovery-1_0.html\nThis API is not yet intended for general use, and is not available for all\nclusters.",
+	//   "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/.well-known/openid-configuration",
+	//   "httpMethod": "GET",
+	//   "id": "container.projects.locations.clusters.well-known.getOpenid-configuration",
+	//   "parameterOrder": [
+	//     "parent"
+	//   ],
+	//   "parameters": {
+	//     "parent": {
+	//       "description": "The cluster (project, location, cluster id) to get the discovery document\nfor. Specified in the format 'projects/*/locations/*/clusters/*'.",
+	//       "location": "path",
+	//       "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+	//       "required": true,
+	//       "type": "string"
+	//     }
+	//   },
+	//   "path": "v1beta1/{+parent}/.well-known/openid-configuration",
+	//   "response": {
+	//     "$ref": "GetOpenIDConfigResponse"
+	//   },
+	//   "scopes": [
+	//     "https://www.googleapis.com/auth/cloud-platform"
+	//   ]
+	// }
+
+}
+
 // method id "container.projects.locations.operations.cancel":
 
 type ProjectsLocationsOperationsCancelCall struct {
diff --git a/content/v2.1/content-api.json b/content/v2.1/content-api.json
index 9c24279..e9ffafa 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/KNVDmWVa-0q2EHowFmKdbt3xwM8\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/Gc5bHP9hFZTe1XxTe5wSUsRMYb8\"",
   "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"
@@ -2970,7 +2970,7 @@
       }
     }
   },
-  "revision": "20181212",
+  "revision": "20190107",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -3387,6 +3387,18 @@
         "emailAddress": {
           "description": "User's email address.",
           "type": "string"
+        },
+        "orderManager": {
+          "description": "Whether user is an order manager.",
+          "type": "boolean"
+        },
+        "paymentsAnalyst": {
+          "description": "Whether user can access payment statements.",
+          "type": "boolean"
+        },
+        "paymentsManager": {
+          "description": "Whether user can manage payment settings.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -3814,11 +3826,11 @@
     "Amount": {
       "id": "Amount",
       "properties": {
-        "pretax": {
+        "priceAmount": {
           "$ref": "Price",
-          "description": "[required] Value before taxes."
+          "description": "[required] The pre-tax or post-tax price depending on the location of the order."
         },
-        "tax": {
+        "taxAmount": {
           "$ref": "Price",
           "description": "[required] Tax value."
         }
@@ -5236,6 +5248,10 @@
         "status": {
           "description": "The status of the order.",
           "type": "string"
+        },
+        "taxCollector": {
+          "description": "The party responsible for collecting and remitting taxes.",
+          "type": "string"
         }
       },
       "type": "object"
@@ -5852,7 +5868,7 @@
           "type": "string"
         },
         "productAmount": {
-          "$ref": "Amount",
+          "$ref": "ProductAmount",
           "description": "Total amount for the items."
         },
         "transactionDate": {
@@ -6641,7 +6657,7 @@
         },
         "priceAmount": {
           "$ref": "Price",
-          "description": "The amount to be refunded. This may be pre-tax or post-tax depending on the location of the order. If omitted, refundless return is assumed. Optional, but if filled then both priceAmount and taxAmount must be set."
+          "description": "The amount to be refunded. This may be pre-tax or post-tax depending on the location of the order. If omitted, refundless return is assumed."
         },
         "productId": {
           "description": "The ID of the product to return. This is the REST ID used in the products service. Either lineItemId or productId is required.",
@@ -6662,7 +6678,7 @@
         },
         "taxAmount": {
           "$ref": "Price",
-          "description": "The amount of tax to be refunded."
+          "description": "The amount of tax to be refunded. Optional, but if filled, then priceAmount must be set. Calculated automatically if not provided."
         }
       },
       "type": "object"
@@ -7950,6 +7966,24 @@
       },
       "type": "object"
     },
+    "ProductAmount": {
+      "id": "ProductAmount",
+      "properties": {
+        "priceAmount": {
+          "$ref": "Price",
+          "description": "The pre-tax or post-tax price depending on the location of the order."
+        },
+        "remittedTaxAmount": {
+          "$ref": "Price",
+          "description": "Remitted tax value."
+        },
+        "taxAmount": {
+          "$ref": "Price",
+          "description": "Tax value."
+        }
+      },
+      "type": "object"
+    },
     "ProductShipping": {
       "id": "ProductShipping",
       "properties": {
diff --git a/content/v2.1/content-gen.go b/content/v2.1/content-gen.go
index bf21ad7..0e5d802 100644
--- a/content/v2.1/content-gen.go
+++ b/content/v2.1/content-gen.go
@@ -860,6 +860,15 @@
 	// EmailAddress: User's email address.
 	EmailAddress string `json:"emailAddress,omitempty"`
 
+	// OrderManager: Whether user is an order manager.
+	OrderManager bool `json:"orderManager,omitempty"`
+
+	// PaymentsAnalyst: Whether user can access payment statements.
+	PaymentsAnalyst bool `json:"paymentsAnalyst,omitempty"`
+
+	// PaymentsManager: Whether user can manage payment settings.
+	PaymentsManager bool `json:"paymentsManager,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Admin") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1650,13 +1659,14 @@
 }
 
 type Amount struct {
-	// Pretax: [required] Value before taxes.
-	Pretax *Price `json:"pretax,omitempty"`
+	// PriceAmount: [required] The pre-tax or post-tax price depending on
+	// the location of the order.
+	PriceAmount *Price `json:"priceAmount,omitempty"`
 
-	// Tax: [required] Tax value.
-	Tax *Price `json:"tax,omitempty"`
+	// TaxAmount: [required] Tax value.
+	TaxAmount *Price `json:"taxAmount,omitempty"`
 
-	// ForceSendFields is a list of field names (e.g. "Pretax") to
+	// ForceSendFields is a list of field names (e.g. "PriceAmount") 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
@@ -1664,10 +1674,10 @@
 	// used to include empty fields in Patch requests.
 	ForceSendFields []string `json:"-"`
 
-	// NullFields is a list of field names (e.g. "Pretax") 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. "PriceAmount") 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:"-"`
@@ -3914,6 +3924,10 @@
 	// Status: The status of the order.
 	Status string `json:"status,omitempty"`
 
+	// TaxCollector: The party responsible for collecting and remitting
+	// taxes.
+	TaxCollector string `json:"taxCollector,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -4687,7 +4701,7 @@
 	OrderId string `json:"orderId,omitempty"`
 
 	// ProductAmount: Total amount for the items.
-	ProductAmount *Amount `json:"productAmount,omitempty"`
+	ProductAmount *ProductAmount `json:"productAmount,omitempty"`
 
 	// TransactionDate: The date of the transaction, in ISO 8601 format.
 	TransactionDate string `json:"transactionDate,omitempty"`
@@ -6251,8 +6265,7 @@
 
 	// PriceAmount: The amount to be refunded. This may be pre-tax or
 	// post-tax depending on the location of the order. If omitted,
-	// refundless return is assumed. Optional, but if filled then both
-	// priceAmount and taxAmount must be set.
+	// refundless return is assumed.
 	PriceAmount *Price `json:"priceAmount,omitempty"`
 
 	// ProductId: The ID of the product to return. This is the REST ID used
@@ -6268,7 +6281,9 @@
 	// ReasonText: The explanation of the reason.
 	ReasonText string `json:"reasonText,omitempty"`
 
-	// TaxAmount: The amount of tax to be refunded.
+	// TaxAmount: The amount of tax to be refunded. Optional, but if filled,
+	// then priceAmount must be set. Calculated automatically if not
+	// provided.
 	TaxAmount *Price `json:"taxAmount,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "LineItemId") to
@@ -7765,6 +7780,40 @@
 	return nil
 }
 
+type ProductAmount struct {
+	// PriceAmount: The pre-tax or post-tax price depending on the location
+	// of the order.
+	PriceAmount *Price `json:"priceAmount,omitempty"`
+
+	// RemittedTaxAmount: Remitted tax value.
+	RemittedTaxAmount *Price `json:"remittedTaxAmount,omitempty"`
+
+	// TaxAmount: Tax value.
+	TaxAmount *Price `json:"taxAmount,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PriceAmount") 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. "PriceAmount") 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 *ProductAmount) MarshalJSON() ([]byte, error) {
+	type NoMethod ProductAmount
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type ProductShipping struct {
 	// Country: The CLDR territory code of the country to which an item will
 	// ship.
diff --git a/content/v2/content-api.json b/content/v2/content-api.json
index 93a4ecb..a93d342 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/kuwOM51recFq-FqqNhR-udbuq1s\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/0TCLgXZWRV_u3CJuMzbjjgElfPQ\"",
   "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"
@@ -3481,7 +3481,7 @@
       }
     }
   },
-  "revision": "20181212",
+  "revision": "20190107",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Account": {
@@ -3990,6 +3990,18 @@
         "emailAddress": {
           "description": "User's email address.",
           "type": "string"
+        },
+        "orderManager": {
+          "description": "Whether user is an order manager.",
+          "type": "boolean"
+        },
+        "paymentsAnalyst": {
+          "description": "Whether user can access payment statements.",
+          "type": "boolean"
+        },
+        "paymentsManager": {
+          "description": "Whether user can manage payment settings.",
+          "type": "boolean"
         }
       },
       "type": "object"
@@ -6123,6 +6135,10 @@
         "status": {
           "description": "The status of the order.",
           "type": "string"
+        },
+        "taxCollector": {
+          "description": "The party responsible for collecting and remitting taxes.",
+          "type": "string"
         }
       },
       "type": "object"
@@ -6744,6 +6760,10 @@
           "$ref": "Amount",
           "description": "Total amount for the items."
         },
+        "productAmountWithRemittedTax": {
+          "$ref": "ProductAmount",
+          "description": "Total amount with remitted tax for the items."
+        },
         "transactionDate": {
           "description": "The date of the transaction, in ISO 8601 format.",
           "type": "string"
@@ -7188,7 +7208,7 @@
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to cancellation amount in amountPretax."
+          "description": "Tax amount that corresponds to cancellation amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided."
         },
         "lineItemId": {
           "description": "The ID of the line item to cancel. Either lineItemId or productId is required.",
@@ -7464,7 +7484,7 @@
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to cancellation amount in amountPretax."
+          "description": "Tax amount that corresponds to cancellation amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided."
         },
         "lineItemId": {
           "description": "The ID of the line item to cancel. Either lineItemId or productId is required.",
@@ -7549,11 +7569,11 @@
         },
         "amountPretax": {
           "$ref": "Price",
-          "description": "The amount that is refunded. Either amount or amountPretax and amountTax should be filled."
+          "description": "The amount that is refunded. Either amount or amountPretax should be filled."
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to refund amount in amountPretax."
+          "description": "Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, amountPretax must be set. Calculated automatically if not provided."
         },
         "reason": {
           "description": "The reason for the refund.",
@@ -7625,11 +7645,11 @@
       "properties": {
         "amountPretax": {
           "$ref": "Price",
-          "description": "The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method). Optional, but if filled then both amountPretax and amountTax must be set."
+          "description": "The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method)."
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to refund amount in amountPretax."
+          "description": "Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided."
         },
         "lineItemId": {
           "description": "The ID of the line item to return. Either lineItemId or productId is required.",
@@ -7942,11 +7962,11 @@
         },
         "amountPretax": {
           "$ref": "Price",
-          "description": "The amount that is refunded. Either amount or amountPretax and amountTax should be filled."
+          "description": "The amount that is refunded. Either amount or amountPretax should be filled."
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to refund amount in amountPretax."
+          "description": "Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, amountPretax must be set. Calculated automatically if not provided."
         },
         "operationId": {
           "description": "The ID of the operation. Unique across all operations for a given order.",
@@ -8075,11 +8095,11 @@
       "properties": {
         "amountPretax": {
           "$ref": "Price",
-          "description": "The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method). Optional, but if filled then both amountPretax and amountTax must be set."
+          "description": "The amount that is refunded. If omitted, refundless return is assumed (same as calling returnLineItem method)."
         },
         "amountTax": {
           "$ref": "Price",
-          "description": "Tax amount that correspond to refund amount in amountPretax."
+          "description": "Tax amount that corresponds to refund amount in amountPretax. Optional, but if filled, then amountPretax must be set. Calculated automatically if not provided."
         },
         "lineItemId": {
           "description": "The ID of the line item to return. Either lineItemId or productId is required.",
@@ -9433,6 +9453,24 @@
       },
       "type": "object"
     },
+    "ProductAmount": {
+      "id": "ProductAmount",
+      "properties": {
+        "priceAmount": {
+          "$ref": "Price",
+          "description": "The pre-tax or post-tax price depending on the location of the order."
+        },
+        "remittedTaxAmount": {
+          "$ref": "Price",
+          "description": "Remitted tax value."
+        },
+        "taxAmount": {
+          "$ref": "Price",
+          "description": "Tax value."
+        }
+      },
+      "type": "object"
+    },
     "ProductAspect": {
       "id": "ProductAspect",
       "properties": {
diff --git a/content/v2/content-gen.go b/content/v2/content-gen.go
index 96e8663..214c607 100644
--- a/content/v2/content-gen.go
+++ b/content/v2/content-gen.go
@@ -979,6 +979,15 @@
 	// EmailAddress: User's email address.
 	EmailAddress string `json:"emailAddress,omitempty"`
 
+	// OrderManager: Whether user is an order manager.
+	OrderManager bool `json:"orderManager,omitempty"`
+
+	// PaymentsAnalyst: Whether user can access payment statements.
+	PaymentsAnalyst bool `json:"paymentsAnalyst,omitempty"`
+
+	// PaymentsManager: Whether user can manage payment settings.
+	PaymentsManager bool `json:"paymentsManager,omitempty"`
+
 	// ForceSendFields is a list of field names (e.g. "Admin") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -4472,6 +4481,10 @@
 	// Status: The status of the order.
 	Status string `json:"status,omitempty"`
 
+	// TaxCollector: The party responsible for collecting and remitting
+	// taxes.
+	TaxCollector string `json:"taxCollector,omitempty"`
+
 	// ServerResponse contains the HTTP response code and headers from the
 	// server.
 	googleapi.ServerResponse `json:"-"`
@@ -5312,6 +5325,10 @@
 	// ProductAmount: Total amount for the items.
 	ProductAmount *Amount `json:"productAmount,omitempty"`
 
+	// ProductAmountWithRemittedTax: Total amount with remitted tax for the
+	// items.
+	ProductAmountWithRemittedTax *ProductAmount `json:"productAmountWithRemittedTax,omitempty"`
+
 	// TransactionDate: The date of the transaction, in ISO 8601 format.
 	TransactionDate string `json:"transactionDate,omitempty"`
 
@@ -6188,8 +6205,9 @@
 	// left on the order.
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to cancellation amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to cancellation amount in
+	// amountPretax. Optional, but if filled, then amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// LineItemId: The ID of the line item to cancel. Either lineItemId or
@@ -6687,8 +6705,9 @@
 	// left on the order.
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to cancellation amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to cancellation amount in
+	// amountPretax. Optional, but if filled, then amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// LineItemId: The ID of the line item to cancel. Either lineItemId or
@@ -6814,11 +6833,12 @@
 	Amount *Price `json:"amount,omitempty"`
 
 	// AmountPretax: The amount that is refunded. Either amount or
-	// amountPretax and amountTax should be filled.
+	// amountPretax should be filled.
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to refund amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to refund amount in
+	// amountPretax. Optional, but if filled, amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// Reason: The reason for the refund.
@@ -6934,12 +6954,12 @@
 
 type OrdersCustomBatchRequestEntryReturnRefundLineItem struct {
 	// AmountPretax: The amount that is refunded. If omitted, refundless
-	// return is assumed (same as calling returnLineItem method). Optional,
-	// but if filled then both amountPretax and amountTax must be set.
+	// return is assumed (same as calling returnLineItem method).
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to refund amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to refund amount in
+	// amountPretax. Optional, but if filled, then amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// LineItemId: The ID of the line item to return. Either lineItemId or
@@ -7465,11 +7485,12 @@
 	Amount *Price `json:"amount,omitempty"`
 
 	// AmountPretax: The amount that is refunded. Either amount or
-	// amountPretax and amountTax should be filled.
+	// amountPretax should be filled.
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to refund amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to refund amount in
+	// amountPretax. Optional, but if filled, amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// OperationId: The ID of the operation. Unique across all operations
@@ -7705,12 +7726,12 @@
 
 type OrdersReturnRefundLineItemRequest struct {
 	// AmountPretax: The amount that is refunded. If omitted, refundless
-	// return is assumed (same as calling returnLineItem method). Optional,
-	// but if filled then both amountPretax and amountTax must be set.
+	// return is assumed (same as calling returnLineItem method).
 	AmountPretax *Price `json:"amountPretax,omitempty"`
 
-	// AmountTax: Tax amount that correspond to refund amount in
-	// amountPretax.
+	// AmountTax: Tax amount that corresponds to refund amount in
+	// amountPretax. Optional, but if filled, then amountPretax must be set.
+	// Calculated automatically if not provided.
 	AmountTax *Price `json:"amountTax,omitempty"`
 
 	// LineItemId: The ID of the line item to return. Either lineItemId or
@@ -9256,6 +9277,40 @@
 	return nil
 }
 
+type ProductAmount struct {
+	// PriceAmount: The pre-tax or post-tax price depending on the location
+	// of the order.
+	PriceAmount *Price `json:"priceAmount,omitempty"`
+
+	// RemittedTaxAmount: Remitted tax value.
+	RemittedTaxAmount *Price `json:"remittedTaxAmount,omitempty"`
+
+	// TaxAmount: Tax value.
+	TaxAmount *Price `json:"taxAmount,omitempty"`
+
+	// ForceSendFields is a list of field names (e.g. "PriceAmount") 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. "PriceAmount") 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 *ProductAmount) MarshalJSON() ([]byte, error) {
+	type NoMethod ProductAmount
+	raw := NoMethod(*s)
+	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
 type ProductAspect struct {
 	// AspectName: The name of the aspect.
 	AspectName string `json:"aspectName,omitempty"`
diff --git a/dialogflow/v2/dialogflow-api.json b/dialogflow/v2/dialogflow-api.json
index f1310be..1c986c2 100644
--- a/dialogflow/v2/dialogflow-api.json
+++ b/dialogflow/v2/dialogflow-api.json
@@ -502,7 +502,7 @@
                       "type": "string"
                     },
                     "name": {
-                      "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+                      "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
                       "required": true,
@@ -735,7 +735,7 @@
                   ],
                   "parameters": {
                     "name": {
-                      "description": "Required. The name of the intent to delete. If this intent has direct or\nindirect followup intents, we also delete them.\n\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+                      "description": "Required. The name of the intent to delete. If this intent has direct or\nindirect followup intents, we also delete them.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
                       "required": true,
@@ -866,7 +866,7 @@
                       "type": "string"
                     },
                     "name": {
-                      "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+                      "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
                       "required": true,
@@ -1303,7 +1303,7 @@
       }
     }
   },
-  "revision": "20181215",
+  "revision": "20190107",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2Agent": {
@@ -1647,7 +1647,7 @@
           "type": "string"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+          "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
           "type": "string"
         }
       },
@@ -1876,7 +1876,7 @@
           "type": "boolean"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+          "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
           "type": "string"
         },
         "outputContexts": {
@@ -1911,7 +1911,7 @@
           "type": "string"
         },
         "trainingPhrases": {
-          "description": "Optional. The collection of examples/templates that the agent is\ntrained on.",
+          "description": "Optional. The collection of examples that the agent is\ntrained on.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2IntentTrainingPhrase"
           },
@@ -2400,7 +2400,7 @@
       "type": "object"
     },
     "GoogleCloudDialogflowV2IntentTrainingPhrase": {
-      "description": "Represents an example or template that the agent is trained on.",
+      "description": "Represents an example that the agent is trained on.",
       "id": "GoogleCloudDialogflowV2IntentTrainingPhrase",
       "properties": {
         "name": {
@@ -2415,7 +2415,7 @@
           "type": "array"
         },
         "timesAddedCount": {
-          "description": "Optional. Indicates how many times this example or template was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
+          "description": "Optional. Indicates how many times this example was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
           "format": "int32",
           "type": "integer"
         },
@@ -2429,7 +2429,7 @@
           "enumDescriptions": [
             "Not specified. This value should never be used.",
             "Examples do not contain @-prefixed entity type names, but example parts\ncan be annotated with entity types.",
-            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings."
+            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings.\nTemplate mode has been deprecated. Example mode is the only supported\nway to create new training phrases. If you have existing training\nphrases that you've created in template mode, those will continue to\nwork."
           ],
           "type": "string"
         }
@@ -2449,7 +2449,7 @@
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example or template,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
           "type": "string"
         },
         "userDefined": {
@@ -2942,7 +2942,7 @@
           "type": "string"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+          "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
           "type": "string"
         }
       },
@@ -3093,7 +3093,7 @@
           "type": "boolean"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+          "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
           "type": "string"
         },
         "outputContexts": {
@@ -3128,7 +3128,7 @@
           "type": "string"
         },
         "trainingPhrases": {
-          "description": "Optional. The collection of examples/templates that the agent is\ntrained on.",
+          "description": "Optional. The collection of examples that the agent is\ntrained on.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase"
           },
@@ -3654,7 +3654,7 @@
       "type": "object"
     },
     "GoogleCloudDialogflowV2beta1IntentTrainingPhrase": {
-      "description": "Represents an example or template that the agent is trained on.",
+      "description": "Represents an example that the agent is trained on.",
       "id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase",
       "properties": {
         "name": {
@@ -3669,7 +3669,7 @@
           "type": "array"
         },
         "timesAddedCount": {
-          "description": "Optional. Indicates how many times this example or template was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
+          "description": "Optional. Indicates how many times this example was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
           "format": "int32",
           "type": "integer"
         },
@@ -3683,7 +3683,7 @@
           "enumDescriptions": [
             "Not specified. This value should never be used.",
             "Examples do not contain @-prefixed entity type names, but example parts\ncan be annotated with entity types.",
-            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings."
+            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings.\nTemplate mode has been deprecated. Example mode is the only supported\nway to create new training phrases. If you have existing training\nphrases that you've created in template mode, those will continue to\nwork."
           ],
           "type": "string"
         }
@@ -3703,7 +3703,7 @@
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example or template,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
           "type": "string"
         },
         "userDefined": {
diff --git a/dialogflow/v2/dialogflow-gen.go b/dialogflow/v2/dialogflow-gen.go
index 6c06d73..c933fab 100644
--- a/dialogflow/v2/dialogflow-gen.go
+++ b/dialogflow/v2/dialogflow-gen.go
@@ -852,11 +852,11 @@
 	// types (with or without aliases).
 	Kind string `json:"kind,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of the entity type. Format:
-	// `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
+	// Name: The unique identifier of the entity type.
+	// Required for EntityTypes.UpdateEntityType
+	// and
+	// EntityTypes.BatchUpdateEntityTypes methods.
+	// Format: `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
 	Name string `json:"name,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -1383,10 +1383,10 @@
 	// auto-markup in the UI is turned off.
 	MlDisabled bool `json:"mlDisabled,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of this intent.
+	// Name: The unique identifier of this intent.
+	// Required for Intents.UpdateIntent and
+	// Intents.BatchUpdateIntents
+	// methods.
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	Name string `json:"name,omitempty"`
 
@@ -1439,8 +1439,8 @@
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	RootFollowupIntentName string `json:"rootFollowupIntentName,omitempty"`
 
-	// TrainingPhrases: Optional. The collection of examples/templates that
-	// the agent is
+	// TrainingPhrases: Optional. The collection of examples that the agent
+	// is
 	// trained on.
 	TrainingPhrases []*GoogleCloudDialogflowV2IntentTrainingPhrase `json:"trainingPhrases,omitempty"`
 
@@ -2382,8 +2382,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// GoogleCloudDialogflowV2IntentTrainingPhrase: Represents an example or
-// template that the agent is trained on.
+// GoogleCloudDialogflowV2IntentTrainingPhrase: Represents an example
+// that the agent is trained on.
 type GoogleCloudDialogflowV2IntentTrainingPhrase struct {
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
@@ -2395,8 +2395,8 @@
 	// only for the annotated parts of the training phrase.
 	Parts []*GoogleCloudDialogflowV2IntentTrainingPhrasePart `json:"parts,omitempty"`
 
-	// TimesAddedCount: Optional. Indicates how many times this example or
-	// template was added to
+	// TimesAddedCount: Optional. Indicates how many times this example was
+	// added to
 	// the intent. Each time a developer adds an existing sample by editing
 	// an
 	// intent or training, this counter is increased.
@@ -2413,6 +2413,13 @@
 	//   "TEMPLATE" - Templates are not annotated with entity types, but
 	// they can contain
 	// @-prefixed entity type names as substrings.
+	// Template mode has been deprecated. Example mode is the only
+	// supported
+	// way to create new training phrases. If you have existing
+	// training
+	// phrases that you've created in template mode, those will continue
+	// to
+	// work.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Name") to
@@ -2453,7 +2460,7 @@
 	// examples.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example or template,
+	// Text: Required. The text corresponding to the example,
 	// if there are no annotations. For
 	// annotated examples, it is the text for one of the example's parts.
 	Text string `json:"text,omitempty"`
@@ -3456,11 +3463,11 @@
 	// types (with or without aliases).
 	Kind string `json:"kind,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of the entity type. Format:
-	// `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
+	// Name: The unique identifier of the entity type.
+	// Required for EntityTypes.UpdateEntityType
+	// and
+	// EntityTypes.BatchUpdateEntityTypes methods.
+	// Format: `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
 	Name string `json:"name,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AutoExpansionMode")
@@ -3786,10 +3793,10 @@
 	//   ml_enabled = true / ml_disabled = false.
 	MlEnabled bool `json:"mlEnabled,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of this intent.
+	// Name: The unique identifier of this intent.
+	// Required for Intents.UpdateIntent and
+	// Intents.BatchUpdateIntents
+	// methods.
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	Name string `json:"name,omitempty"`
 
@@ -3842,8 +3849,8 @@
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	RootFollowupIntentName string `json:"rootFollowupIntentName,omitempty"`
 
-	// TrainingPhrases: Optional. The collection of examples/templates that
-	// the agent is
+	// TrainingPhrases: Optional. The collection of examples that the agent
+	// is
 	// trained on.
 	TrainingPhrases []*GoogleCloudDialogflowV2beta1IntentTrainingPhrase `json:"trainingPhrases,omitempty"`
 
@@ -4890,7 +4897,7 @@
 }
 
 // GoogleCloudDialogflowV2beta1IntentTrainingPhrase: Represents an
-// example or template that the agent is trained on.
+// example that the agent is trained on.
 type GoogleCloudDialogflowV2beta1IntentTrainingPhrase struct {
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
@@ -4902,8 +4909,8 @@
 	// only for the annotated parts of the training phrase.
 	Parts []*GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart `json:"parts,omitempty"`
 
-	// TimesAddedCount: Optional. Indicates how many times this example or
-	// template was added to
+	// TimesAddedCount: Optional. Indicates how many times this example was
+	// added to
 	// the intent. Each time a developer adds an existing sample by editing
 	// an
 	// intent or training, this counter is increased.
@@ -4920,6 +4927,13 @@
 	//   "TEMPLATE" - Templates are not annotated with entity types, but
 	// they can contain
 	// @-prefixed entity type names as substrings.
+	// Template mode has been deprecated. Example mode is the only
+	// supported
+	// way to create new training phrases. If you have existing
+	// training
+	// phrases that you've created in template mode, those will continue
+	// to
+	// work.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Name") to
@@ -4960,7 +4974,7 @@
 	// examples.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example or template,
+	// Text: Required. The text corresponding to the example,
 	// if there are no annotations. For
 	// annotated examples, it is the text for one of the example's parts.
 	Text string `json:"text,omitempty"`
@@ -7884,7 +7898,7 @@
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+	//       "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
 	//       "required": true,
@@ -8923,7 +8937,7 @@
 	//   ],
 	//   "parameters": {
 	//     "name": {
-	//       "description": "Required. The name of the intent to delete. If this intent has direct or\nindirect followup intents, we also delete them.\n\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+	//       "description": "Required. The name of the intent to delete. If this intent has direct or\nindirect followup intents, we also delete them.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
 	//       "required": true,
@@ -9523,7 +9537,7 @@
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+	//       "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
 	//       "required": true,
diff --git a/dialogflow/v2beta1/dialogflow-api.json b/dialogflow/v2beta1/dialogflow-api.json
index ed95d49..34c31ae 100644
--- a/dialogflow/v2beta1/dialogflow-api.json
+++ b/dialogflow/v2beta1/dialogflow-api.json
@@ -502,7 +502,7 @@
                       "type": "string"
                     },
                     "name": {
-                      "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+                      "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
                       "required": true,
@@ -1249,7 +1249,7 @@
                       "type": "string"
                     },
                     "name": {
-                      "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+                      "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
                       "location": "path",
                       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
                       "required": true,
@@ -2386,7 +2386,7 @@
       }
     }
   },
-  "revision": "20181215",
+  "revision": "20190107",
   "rootUrl": "https://dialogflow.googleapis.com/",
   "schemas": {
     "GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse": {
@@ -2483,7 +2483,7 @@
           "type": "string"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+          "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
           "type": "string"
         }
       },
@@ -2624,7 +2624,7 @@
           "type": "boolean"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+          "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
           "type": "string"
         },
         "outputContexts": {
@@ -2659,7 +2659,7 @@
           "type": "string"
         },
         "trainingPhrases": {
-          "description": "Optional. The collection of examples/templates that the agent is\ntrained on.",
+          "description": "Optional. The collection of examples that the agent is\ntrained on.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2IntentTrainingPhrase"
           },
@@ -3134,7 +3134,7 @@
       "type": "object"
     },
     "GoogleCloudDialogflowV2IntentTrainingPhrase": {
-      "description": "Represents an example or template that the agent is trained on.",
+      "description": "Represents an example that the agent is trained on.",
       "id": "GoogleCloudDialogflowV2IntentTrainingPhrase",
       "properties": {
         "name": {
@@ -3149,7 +3149,7 @@
           "type": "array"
         },
         "timesAddedCount": {
-          "description": "Optional. Indicates how many times this example or template was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
+          "description": "Optional. Indicates how many times this example was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
           "format": "int32",
           "type": "integer"
         },
@@ -3163,7 +3163,7 @@
           "enumDescriptions": [
             "Not specified. This value should never be used.",
             "Examples do not contain @-prefixed entity type names, but example parts\ncan be annotated with entity types.",
-            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings."
+            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings.\nTemplate mode has been deprecated. Example mode is the only supported\nway to create new training phrases. If you have existing training\nphrases that you've created in template mode, those will continue to\nwork."
           ],
           "type": "string"
         }
@@ -3183,7 +3183,7 @@
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example or template,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
           "type": "string"
         },
         "userDefined": {
@@ -3773,7 +3773,7 @@
           "type": "string"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+          "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
           "type": "string"
         }
       },
@@ -4016,7 +4016,7 @@
           "type": "boolean"
         },
         "name": {
-          "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+          "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
           "type": "string"
         },
         "outputContexts": {
@@ -4051,7 +4051,7 @@
           "type": "string"
         },
         "trainingPhrases": {
-          "description": "Optional. The collection of examples/templates that the agent is\ntrained on.",
+          "description": "Optional. The collection of examples that the agent is\ntrained on.",
           "items": {
             "$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase"
           },
@@ -4591,7 +4591,7 @@
       "type": "object"
     },
     "GoogleCloudDialogflowV2beta1IntentTrainingPhrase": {
-      "description": "Represents an example or template that the agent is trained on.",
+      "description": "Represents an example that the agent is trained on.",
       "id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase",
       "properties": {
         "name": {
@@ -4606,7 +4606,7 @@
           "type": "array"
         },
         "timesAddedCount": {
-          "description": "Optional. Indicates how many times this example or template was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
+          "description": "Optional. Indicates how many times this example was added to\nthe intent. Each time a developer adds an existing sample by editing an\nintent or training, this counter is increased.",
           "format": "int32",
           "type": "integer"
         },
@@ -4620,7 +4620,7 @@
           "enumDescriptions": [
             "Not specified. This value should never be used.",
             "Examples do not contain @-prefixed entity type names, but example parts\ncan be annotated with entity types.",
-            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings."
+            "Templates are not annotated with entity types, but they can contain\n@-prefixed entity type names as substrings.\nTemplate mode has been deprecated. Example mode is the only supported\nway to create new training phrases. If you have existing training\nphrases that you've created in template mode, those will continue to\nwork."
           ],
           "type": "string"
         }
@@ -4640,7 +4640,7 @@
           "type": "string"
         },
         "text": {
-          "description": "Required. The text corresponding to the example or template,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
+          "description": "Required. The text corresponding to the example,\nif there are no annotations. For\nannotated examples, it is the text for one of the example's parts.",
           "type": "string"
         },
         "userDefined": {
diff --git a/dialogflow/v2beta1/dialogflow-gen.go b/dialogflow/v2beta1/dialogflow-gen.go
index f134f20..45c661b 100644
--- a/dialogflow/v2beta1/dialogflow-gen.go
+++ b/dialogflow/v2beta1/dialogflow-gen.go
@@ -446,11 +446,11 @@
 	// types (with or without aliases).
 	Kind string `json:"kind,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of the entity type. Format:
-	// `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
+	// Name: The unique identifier of the entity type.
+	// Required for EntityTypes.UpdateEntityType
+	// and
+	// EntityTypes.BatchUpdateEntityTypes methods.
+	// Format: `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
 	Name string `json:"name,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "AutoExpansionMode")
@@ -751,10 +751,10 @@
 	// auto-markup in the UI is turned off.
 	MlDisabled bool `json:"mlDisabled,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of this intent.
+	// Name: The unique identifier of this intent.
+	// Required for Intents.UpdateIntent and
+	// Intents.BatchUpdateIntents
+	// methods.
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	Name string `json:"name,omitempty"`
 
@@ -807,8 +807,8 @@
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	RootFollowupIntentName string `json:"rootFollowupIntentName,omitempty"`
 
-	// TrainingPhrases: Optional. The collection of examples/templates that
-	// the agent is
+	// TrainingPhrases: Optional. The collection of examples that the agent
+	// is
 	// trained on.
 	TrainingPhrases []*GoogleCloudDialogflowV2IntentTrainingPhrase `json:"trainingPhrases,omitempty"`
 
@@ -1717,8 +1717,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// GoogleCloudDialogflowV2IntentTrainingPhrase: Represents an example or
-// template that the agent is trained on.
+// GoogleCloudDialogflowV2IntentTrainingPhrase: Represents an example
+// that the agent is trained on.
 type GoogleCloudDialogflowV2IntentTrainingPhrase struct {
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
@@ -1730,8 +1730,8 @@
 	// only for the annotated parts of the training phrase.
 	Parts []*GoogleCloudDialogflowV2IntentTrainingPhrasePart `json:"parts,omitempty"`
 
-	// TimesAddedCount: Optional. Indicates how many times this example or
-	// template was added to
+	// TimesAddedCount: Optional. Indicates how many times this example was
+	// added to
 	// the intent. Each time a developer adds an existing sample by editing
 	// an
 	// intent or training, this counter is increased.
@@ -1748,6 +1748,13 @@
 	//   "TEMPLATE" - Templates are not annotated with entity types, but
 	// they can contain
 	// @-prefixed entity type names as substrings.
+	// Template mode has been deprecated. Example mode is the only
+	// supported
+	// way to create new training phrases. If you have existing
+	// training
+	// phrases that you've created in template mode, those will continue
+	// to
+	// work.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Name") to
@@ -1788,7 +1795,7 @@
 	// examples.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example or template,
+	// Text: Required. The text corresponding to the example,
 	// if there are no annotations. For
 	// annotated examples, it is the text for one of the example's parts.
 	Text string `json:"text,omitempty"`
@@ -2959,11 +2966,11 @@
 	// types (with or without aliases).
 	Kind string `json:"kind,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of the entity type. Format:
-	// `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
+	// Name: The unique identifier of the entity type.
+	// Required for EntityTypes.UpdateEntityType
+	// and
+	// EntityTypes.BatchUpdateEntityTypes methods.
+	// Format: `projects/<Project ID>/agent/entityTypes/<Entity Type ID>`.
 	Name string `json:"name,omitempty"`
 
 	// ServerResponse contains the HTTP response code and headers from the
@@ -3536,10 +3543,10 @@
 	//   ml_enabled = true / ml_disabled = false.
 	MlEnabled bool `json:"mlEnabled,omitempty"`
 
-	// Name: Required for all methods except `create` (`create` populates
-	// the name
-	// automatically.
-	// The unique identifier of this intent.
+	// Name: The unique identifier of this intent.
+	// Required for Intents.UpdateIntent and
+	// Intents.BatchUpdateIntents
+	// methods.
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	Name string `json:"name,omitempty"`
 
@@ -3592,8 +3599,8 @@
 	// Format: `projects/<Project ID>/agent/intents/<Intent ID>`.
 	RootFollowupIntentName string `json:"rootFollowupIntentName,omitempty"`
 
-	// TrainingPhrases: Optional. The collection of examples/templates that
-	// the agent is
+	// TrainingPhrases: Optional. The collection of examples that the agent
+	// is
 	// trained on.
 	TrainingPhrases []*GoogleCloudDialogflowV2beta1IntentTrainingPhrase `json:"trainingPhrases,omitempty"`
 
@@ -4673,7 +4680,7 @@
 }
 
 // GoogleCloudDialogflowV2beta1IntentTrainingPhrase: Represents an
-// example or template that the agent is trained on.
+// example that the agent is trained on.
 type GoogleCloudDialogflowV2beta1IntentTrainingPhrase struct {
 	// Name: Output only. The unique identifier of this training phrase.
 	Name string `json:"name,omitempty"`
@@ -4685,8 +4692,8 @@
 	// only for the annotated parts of the training phrase.
 	Parts []*GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart `json:"parts,omitempty"`
 
-	// TimesAddedCount: Optional. Indicates how many times this example or
-	// template was added to
+	// TimesAddedCount: Optional. Indicates how many times this example was
+	// added to
 	// the intent. Each time a developer adds an existing sample by editing
 	// an
 	// intent or training, this counter is increased.
@@ -4703,6 +4710,13 @@
 	//   "TEMPLATE" - Templates are not annotated with entity types, but
 	// they can contain
 	// @-prefixed entity type names as substrings.
+	// Template mode has been deprecated. Example mode is the only
+	// supported
+	// way to create new training phrases. If you have existing
+	// training
+	// phrases that you've created in template mode, those will continue
+	// to
+	// work.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Name") to
@@ -4743,7 +4757,7 @@
 	// examples.
 	EntityType string `json:"entityType,omitempty"`
 
-	// Text: Required. The text corresponding to the example or template,
+	// Text: Required. The text corresponding to the example,
 	// if there are no annotations. For
 	// annotated examples, it is the text for one of the example's parts.
 	Text string `json:"text,omitempty"`
@@ -8533,7 +8547,7 @@
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of the entity type. Format:\n`projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
+	//       "description": "The unique identifier of the entity type.\nRequired for EntityTypes.UpdateEntityType and\nEntityTypes.BatchUpdateEntityTypes methods.\nFormat: `projects/\u003cProject ID\u003e/agent/entityTypes/\u003cEntity Type ID\u003e`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
 	//       "required": true,
@@ -11990,7 +12004,7 @@
 	//       "type": "string"
 	//     },
 	//     "name": {
-	//       "description": "Required for all methods except `create` (`create` populates the name\nautomatically.\nThe unique identifier of this intent.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
+	//       "description": "The unique identifier of this intent.\nRequired for Intents.UpdateIntent and Intents.BatchUpdateIntents\nmethods.\nFormat: `projects/\u003cProject ID\u003e/agent/intents/\u003cIntent ID\u003e`.",
 	//       "location": "path",
 	//       "pattern": "^projects/[^/]+/agent/intents/[^/]+$",
 	//       "required": true,
diff --git a/dns/v1/dns-api.json b/dns/v1/dns-api.json
index ab72198..4b86be6 100644
--- a/dns/v1/dns-api.json
+++ b/dns/v1/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/EQMOijfSxjBH7q8fB_7QzVLzbgs\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/1ElZY34eO24rnTnPiiM5_YKoRVc\"",
   "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"
@@ -760,11 +760,11 @@
       }
     }
   },
-  "revision": "20180808",
+  "revision": "20181212",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "An atomic update to a collection of ResourceRecordSets.",
+      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
@@ -799,7 +799,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only).",
+          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -970,7 +970,7 @@
           "type": "integer"
         },
         "keyType": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types.",
+          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -1186,7 +1186,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only).",
+          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1352,7 +1352,7 @@
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type, for example, A, AAAA, MX, TXT, and so on.",
+          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
diff --git a/dns/v1/dns-gen.go b/dns/v1/dns-gen.go
index e1bb438..e4d90bf 100644
--- a/dns/v1/dns-gen.go
+++ b/dns/v1/dns-gen.go
@@ -158,7 +158,13 @@
 	s *Service
 }
 
-// Change: An atomic update to a collection of ResourceRecordSets.
+// Change: A Change represents a set of ResourceRecordSet additions and
+// deletions applied atomically to a ManagedZone. ResourceRecordSets
+// within a ManagedZone are modified by creating a new Change element in
+// the Changes collection. In turn the Changes collection also records
+// the past modifications to the ResourceRecordSets in a ManagedZone.
+// The current state of the ManagedZone is the sum effect of applying
+// all Change elements in the Changes collection in sequence.
 type Change struct {
 	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
@@ -182,7 +188,9 @@
 	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only).
+	// Status: Status of the operation (output only). A status of "done"
+	// means that the request to update the authoritative servers has been
+	// sent, but the servers might not be updated yet.
 	//
 	// Possible values:
 	//   "done"
@@ -416,11 +424,12 @@
 	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
+	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
+	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
+	// set and, when active, will only be used to sign resource record sets
+	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
+	// flag set and will be used to sign all other types of resource record
+	// sets.
 	//
 	// Possible values:
 	//   "keySigning"
@@ -752,7 +761,9 @@
 	StartTime string `json:"startTime,omitempty"`
 
 	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only).
+	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
+	// request to update the authoritative servers has been sent, but the
+	// servers might not be updated yet.
 	//
 	// Possible values:
 	//   "done"
@@ -987,8 +998,8 @@
 	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type, for example, A,
-	// AAAA, MX, TXT, and so on.
+	// Type: The identifier of a supported record type. See the list of
+	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
diff --git a/dns/v1beta2/dns-api.json b/dns/v1beta2/dns-api.json
index 0ba0e3d..6d7cdf9 100644
--- a/dns/v1beta2/dns-api.json
+++ b/dns/v1beta2/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/tjeOYqIojF-Ch7P-2UE6XgpQAfQ\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/4et2R7ypLJhR0EaJrh_558XMGjo\"",
   "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"
@@ -982,11 +982,11 @@
       }
     }
   },
-  "revision": "20181115",
+  "revision": "20181212",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "An atomic update to a collection of ResourceRecordSets.",
+      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
@@ -1021,7 +1021,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only).",
+          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1192,7 +1192,7 @@
           "type": "integer"
         },
         "keyType": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types.",
+          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "keySigning",
             "zoneSigning"
@@ -1295,10 +1295,10 @@
         },
         "privateVisibilityConfig": {
           "$ref": "ManagedZonePrivateVisibilityConfig",
-          "description": "For privately visible zones, the set of GCP resources that the zone is visible from."
+          "description": "For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from."
         },
         "visibility": {
-          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to GCP resources.",
+          "description": "The zone's visibility: public zones are exposed to the Internet, while private zones are visible only to Virtual Private Cloud resources.",
           "enum": [
             "private",
             "public"
@@ -1423,7 +1423,7 @@
           "type": "string"
         },
         "networks": {
-          "description": "The list of GCE private network IDs that can see this zone.",
+          "description": "The list of VPC networks that can see this zone.",
           "items": {
             "$ref": "ManagedZonePrivateVisibilityConfigNetwork"
           },
@@ -1441,7 +1441,7 @@
           "type": "string"
         },
         "networkUrl": {
-          "description": "The fully qualified URL of the GCE private network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
+          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
           "type": "string"
         }
       },
@@ -1494,7 +1494,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only).",
+          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "done",
             "pending"
@@ -1598,7 +1598,7 @@
       "type": "object"
     },
     "Policy": {
-      "description": "A policy is a collection of rules applied to one or more networks that specify forwarding behavior for that network.",
+      "description": "A policy is a collection of DNS rules applied to one or more Virtual Private Cloud resources.",
       "id": "Policy",
       "properties": {
         "alternativeNameServerConfig": {
@@ -1679,7 +1679,7 @@
           "type": "string"
         },
         "networkUrl": {
-          "description": "The fully qualified URL of the GCE private network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
+          "description": "The fully qualified URL of the VPC network to bind to. This should be formatted like https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}",
           "type": "string"
         }
       },
@@ -1827,7 +1827,7 @@
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type, for example, A, AAAA, MX, TXT, and so on.",
+          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
diff --git a/dns/v1beta2/dns-gen.go b/dns/v1beta2/dns-gen.go
index e4adbcf..ba506fa 100644
--- a/dns/v1beta2/dns-gen.go
+++ b/dns/v1beta2/dns-gen.go
@@ -170,7 +170,13 @@
 	s *Service
 }
 
-// Change: An atomic update to a collection of ResourceRecordSets.
+// Change: A Change represents a set of ResourceRecordSet additions and
+// deletions applied atomically to a ManagedZone. ResourceRecordSets
+// within a ManagedZone are modified by creating a new Change element in
+// the Changes collection. In turn the Changes collection also records
+// the past modifications to the ResourceRecordSets in a ManagedZone.
+// The current state of the ManagedZone is the sum effect of applying
+// all Change elements in the Changes collection in sequence.
 type Change struct {
 	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
@@ -194,7 +200,9 @@
 	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only).
+	// Status: Status of the operation (output only). A status of "done"
+	// means that the request to update the authoritative servers has been
+	// sent, but the servers might not be updated yet.
 	//
 	// Possible values:
 	//   "done"
@@ -428,11 +436,12 @@
 	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
+	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
+	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
+	// set and, when active, will only be used to sign resource record sets
+	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
+	// flag set and will be used to sign all other types of resource record
+	// sets.
 	//
 	// Possible values:
 	//   "keySigning"
@@ -568,12 +577,13 @@
 	// servers; defined by the server (output only)
 	NameServers []string `json:"nameServers,omitempty"`
 
-	// PrivateVisibilityConfig: For privately visible zones, the set of GCP
-	// resources that the zone is visible from.
+	// PrivateVisibilityConfig: For privately visible zones, the set of
+	// Virtual Private Cloud resources that the zone is visible from.
 	PrivateVisibilityConfig *ManagedZonePrivateVisibilityConfig `json:"privateVisibilityConfig,omitempty"`
 
 	// Visibility: The zone's visibility: public zones are exposed to the
-	// Internet, while private zones are visible only to GCP resources.
+	// Internet, while private zones are visible only to Virtual Private
+	// Cloud resources.
 	//
 	// Possible values:
 	//   "private"
@@ -775,7 +785,7 @@
 	// string "dns#managedZonePrivateVisibilityConfig".
 	Kind string `json:"kind,omitempty"`
 
-	// Networks: The list of GCE private network IDs that can see this zone.
+	// Networks: The list of VPC networks that can see this zone.
 	Networks []*ManagedZonePrivateVisibilityConfigNetwork `json:"networks,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
@@ -806,8 +816,8 @@
 	// string "dns#managedZonePrivateVisibilityConfigNetwork".
 	Kind string `json:"kind,omitempty"`
 
-	// NetworkUrl: The fully qualified URL of the GCE private network to
-	// bind to. This should be formatted like
+	// NetworkUrl: The fully qualified URL of the VPC network to bind to.
+	// This should be formatted like
 	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
 	NetworkUrl string `json:"networkUrl,omitempty"`
 
@@ -909,7 +919,9 @@
 	StartTime string `json:"startTime,omitempty"`
 
 	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only).
+	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
+	// request to update the authoritative servers has been sent, but the
+	// servers might not be updated yet.
 	//
 	// Possible values:
 	//   "done"
@@ -1129,8 +1141,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// Policy: A policy is a collection of rules applied to one or more
-// networks that specify forwarding behavior for that network.
+// Policy: A policy is a collection of DNS rules applied to one or more
+// Virtual Private Cloud resources.
 type Policy struct {
 	// AlternativeNameServerConfig: Sets an alternative name server for the
 	// associated networks. When specified, all DNS queries are forwarded to
@@ -1263,8 +1275,8 @@
 	// string "dns#policyNetwork".
 	Kind string `json:"kind,omitempty"`
 
-	// NetworkUrl: The fully qualified URL of the GCE private network to
-	// bind to. This should be formatted like
+	// NetworkUrl: The fully qualified URL of the VPC network to bind to.
+	// This should be formatted like
 	// https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}
 	NetworkUrl string `json:"networkUrl,omitempty"`
 
@@ -1441,8 +1453,8 @@
 	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type, for example, A,
-	// AAAA, MX, TXT, and so on.
+	// Type: The identifier of a supported record type. See the list of
+	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
diff --git a/dns/v2beta1/dns-api.json b/dns/v2beta1/dns-api.json
index b1a7648..209981d 100644
--- a/dns/v2beta1/dns-api.json
+++ b/dns/v2beta1/dns-api.json
@@ -23,7 +23,7 @@
   "description": "Configures and serves authoritative DNS records.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/cloud-dns",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/VIpmHmduWsM57pBpHrA59zNAZfA\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/B58K3fGkavOYnobUJPY2oNVE3HA\"",
   "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"
@@ -760,11 +760,11 @@
       }
     }
   },
-  "revision": "20180808",
+  "revision": "20181212",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "Change": {
-      "description": "An atomic update to a collection of ResourceRecordSets.",
+      "description": "A Change represents a set of ResourceRecordSet additions and deletions applied atomically to a ManagedZone. ResourceRecordSets within a ManagedZone are modified by creating a new Change element in the Changes collection. In turn the Changes collection also records the past modifications to the ResourceRecordSets in a ManagedZone. The current state of the ManagedZone is the sum effect of applying all Change elements in the Changes collection in sequence.",
       "id": "Change",
       "properties": {
         "additions": {
@@ -799,7 +799,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation (output only).",
+          "description": "Status of the operation (output only). A status of \"done\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "DONE",
             "PENDING"
@@ -970,7 +970,7 @@
           "type": "integer"
         },
         "keyType": {
-          "description": "One of \"KEY_SIGNING\" or \"ZONE_SIGNING\". Keys of type KEY_SIGNING have the Secure Entry Point flag set and, when active, will be used to sign only resource record sets of type DNSKEY. Otherwise, the Secure Entry Point flag will be cleared and this key will be used to sign only resource record sets of other types.",
+          "description": "Specifies whether this is a key signing key (KSK) or a zone signing key (ZSK). Key signing keys have the Secure Entry Point flag set and, when active, will only be used to sign resource record sets of type DNSKEY. Zone signing keys do not have the Secure Entry Point flag set and will be used to sign all other types of resource record sets.",
           "enum": [
             "KEY_SIGNING",
             "ZONE_SIGNING"
@@ -1186,7 +1186,7 @@
           "type": "string"
         },
         "status": {
-          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only).",
+          "description": "Status of the operation. Can be one of the following: \"PENDING\" or \"DONE\" (output only). A status of \"DONE\" means that the request to update the authoritative servers has been sent, but the servers might not be updated yet.",
           "enum": [
             "DONE",
             "PENDING"
@@ -1352,7 +1352,7 @@
           "type": "integer"
         },
         "type": {
-          "description": "The identifier of a supported record type, for example, A, AAAA, MX, TXT, and so on.",
+          "description": "The identifier of a supported record type. See the list of Supported DNS record types.",
           "type": "string"
         }
       },
diff --git a/dns/v2beta1/dns-gen.go b/dns/v2beta1/dns-gen.go
index 69d738f..f6e6f81 100644
--- a/dns/v2beta1/dns-gen.go
+++ b/dns/v2beta1/dns-gen.go
@@ -158,7 +158,13 @@
 	s *Service
 }
 
-// Change: An atomic update to a collection of ResourceRecordSets.
+// Change: A Change represents a set of ResourceRecordSet additions and
+// deletions applied atomically to a ManagedZone. ResourceRecordSets
+// within a ManagedZone are modified by creating a new Change element in
+// the Changes collection. In turn the Changes collection also records
+// the past modifications to the ResourceRecordSets in a ManagedZone.
+// The current state of the ManagedZone is the sum effect of applying
+// all Change elements in the Changes collection in sequence.
 type Change struct {
 	// Additions: Which ResourceRecordSets to add?
 	Additions []*ResourceRecordSet `json:"additions,omitempty"`
@@ -182,7 +188,9 @@
 	// (output only). This is in RFC3339 text format.
 	StartTime string `json:"startTime,omitempty"`
 
-	// Status: Status of the operation (output only).
+	// Status: Status of the operation (output only). A status of "done"
+	// means that the request to update the authoritative servers has been
+	// sent, but the servers might not be updated yet.
 	//
 	// Possible values:
 	//   "DONE"
@@ -416,11 +424,12 @@
 	// KeyLength: Length of the keys in bits.
 	KeyLength int64 `json:"keyLength,omitempty"`
 
-	// KeyType: One of "KEY_SIGNING" or "ZONE_SIGNING". Keys of type
-	// KEY_SIGNING have the Secure Entry Point flag set and, when active,
-	// will be used to sign only resource record sets of type DNSKEY.
-	// Otherwise, the Secure Entry Point flag will be cleared and this key
-	// will be used to sign only resource record sets of other types.
+	// KeyType: Specifies whether this is a key signing key (KSK) or a zone
+	// signing key (ZSK). Key signing keys have the Secure Entry Point flag
+	// set and, when active, will only be used to sign resource record sets
+	// of type DNSKEY. Zone signing keys do not have the Secure Entry Point
+	// flag set and will be used to sign all other types of resource record
+	// sets.
 	//
 	// Possible values:
 	//   "KEY_SIGNING"
@@ -752,7 +761,9 @@
 	StartTime string `json:"startTime,omitempty"`
 
 	// Status: Status of the operation. Can be one of the following:
-	// "PENDING" or "DONE" (output only).
+	// "PENDING" or "DONE" (output only). A status of "DONE" means that the
+	// request to update the authoritative servers has been sent, but the
+	// servers might not be updated yet.
 	//
 	// Possible values:
 	//   "DONE"
@@ -987,8 +998,8 @@
 	// resolvers.
 	Ttl int64 `json:"ttl,omitempty"`
 
-	// Type: The identifier of a supported record type, for example, A,
-	// AAAA, MX, TXT, and so on.
+	// Type: The identifier of a supported record type. See the list of
+	// Supported DNS record types.
 	Type string `json:"type,omitempty"`
 
 	// ForceSendFields is a list of field names (e.g. "Kind") to
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-api.json b/doubleclickbidmanager/v1/doubleclickbidmanager-api.json
index 9caf1bc..f43df91 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": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/wt31bQU3QIh3FtuHSYPOcRgOq78\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/C4pFSZQGsGqgsPnMpCOWYwz21Fc\"",
   "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": "20180821",
+  "revision": "20190103",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "DownloadLineItemsRequest": {
@@ -321,17 +321,18 @@
       "type": "object"
     },
     "DownloadRequest": {
-      "description": "Request to fetch stored campaigns, insertion orders, line items, TrueView ad groups and ads.",
+      "description": "Request to fetch stored inventory sources, campaigns, insertion orders, line items, TrueView ad groups and ads.",
       "id": "DownloadRequest",
       "properties": {
         "fileTypes": {
-          "description": "File types that will be returned.\n\nAcceptable values are:  \n- \"AD\" \n- \"AD_GROUP\" \n- \"CAMPAIGN\" \n- \"INSERTION_ORDER\" \n- \"LINE_ITEM\"",
+          "description": "File types that will be returned.\n\nAcceptable values are:  \n- \"AD\" \n- \"AD_GROUP\" \n- \"CAMPAIGN\" \n- \"INSERTION_ORDER\" \n- \"LINE_ITEM\" \n- \"INVENTORY_SOURCE\"",
           "items": {
             "enum": [
               "AD",
               "AD_GROUP",
               "CAMPAIGN",
               "INSERTION_ORDER",
+              "INVENTORY_SOURCE",
               "LINE_ITEM"
             ],
             "enumDescriptions": [
@@ -339,6 +340,7 @@
               "",
               "",
               "",
+              "",
               ""
             ],
             "type": "string"
@@ -359,12 +361,16 @@
             "ADVERTISER_ID",
             "CAMPAIGN_ID",
             "INSERTION_ORDER_ID",
-            "LINE_ITEM_ID"
+            "INVENTORY_SOURCE_ID",
+            "LINE_ITEM_ID",
+            "PARTNER_ID"
           ],
           "enumDescriptions": [
             "",
             "",
             "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -396,6 +402,9 @@
           "description": "Retrieved insertion orders in SDF format.",
           "type": "string"
         },
+        "inventorySources": {
+          "type": "string"
+        },
         "lineItems": {
           "description": "Retrieved line items in SDF format.",
           "type": "string"
@@ -428,6 +437,7 @@
             "FILTER_COMPANION_CREATIVE_ID",
             "FILTER_CONVERSION_DELAY",
             "FILTER_COUNTRY",
+            "FILTER_CREATIVE_ATTRIBUTE",
             "FILTER_CREATIVE_HEIGHT",
             "FILTER_CREATIVE_ID",
             "FILTER_CREATIVE_SIZE",
@@ -447,7 +457,10 @@
             "FILTER_FLOODLIGHT_PIXEL_ID",
             "FILTER_GENDER",
             "FILTER_INSERTION_ORDER",
+            "FILTER_INVENTORY_COMMITMENT_TYPE",
+            "FILTER_INVENTORY_DELIVERY_METHOD",
             "FILTER_INVENTORY_FORMAT",
+            "FILTER_INVENTORY_RATE_TYPE",
             "FILTER_INVENTORY_SOURCE",
             "FILTER_INVENTORY_SOURCE_TYPE",
             "FILTER_KEYWORD",
@@ -659,6 +672,10 @@
             "",
             "",
             "",
+            "",
+            "",
+            "",
+            "",
             ""
           ],
           "type": "string"
@@ -741,6 +758,7 @@
               "FILTER_COMPANION_CREATIVE_ID",
               "FILTER_CONVERSION_DELAY",
               "FILTER_COUNTRY",
+              "FILTER_CREATIVE_ATTRIBUTE",
               "FILTER_CREATIVE_HEIGHT",
               "FILTER_CREATIVE_ID",
               "FILTER_CREATIVE_SIZE",
@@ -760,7 +778,10 @@
               "FILTER_FLOODLIGHT_PIXEL_ID",
               "FILTER_GENDER",
               "FILTER_INSERTION_ORDER",
+              "FILTER_INVENTORY_COMMITMENT_TYPE",
+              "FILTER_INVENTORY_DELIVERY_METHOD",
               "FILTER_INVENTORY_FORMAT",
+              "FILTER_INVENTORY_RATE_TYPE",
               "FILTER_INVENTORY_SOURCE",
               "FILTER_INVENTORY_SOURCE_TYPE",
               "FILTER_KEYWORD",
@@ -972,6 +993,10 @@
               "",
               "",
               "",
+              "",
+              "",
+              "",
+              "",
               ""
             ],
             "type": "string"
diff --git a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
index b0d15d0..f9762b4 100644
--- a/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
+++ b/doubleclickbidmanager/v1/doubleclickbidmanager-gen.go
@@ -209,8 +209,8 @@
 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
 }
 
-// DownloadRequest: Request to fetch stored campaigns, insertion orders,
-// line items, TrueView ad groups and ads.
+// DownloadRequest: Request to fetch stored inventory sources,
+// campaigns, insertion orders, line items, TrueView ad groups and ads.
 type DownloadRequest struct {
 	// FileTypes: File types that will be returned.
 	//
@@ -220,12 +220,14 @@
 	// - "CAMPAIGN"
 	// - "INSERTION_ORDER"
 	// - "LINE_ITEM"
+	// - "INVENTORY_SOURCE"
 	//
 	// Possible values:
 	//   "AD"
 	//   "AD_GROUP"
 	//   "CAMPAIGN"
 	//   "INSERTION_ORDER"
+	//   "INVENTORY_SOURCE"
 	//   "LINE_ITEM"
 	FileTypes []string `json:"fileTypes,omitempty"`
 
@@ -239,7 +241,9 @@
 	//   "ADVERTISER_ID"
 	//   "CAMPAIGN_ID"
 	//   "INSERTION_ORDER_ID"
+	//   "INVENTORY_SOURCE_ID"
 	//   "LINE_ITEM_ID"
+	//   "PARTNER_ID"
 	FilterType string `json:"filterType,omitempty"`
 
 	// Version: SDF Version (column names, types, order) in which the
@@ -283,6 +287,8 @@
 	// InsertionOrders: Retrieved insertion orders in SDF format.
 	InsertionOrders string `json:"insertionOrders,omitempty"`
 
+	InventorySources string `json:"inventorySources,omitempty"`
+
 	// LineItems: Retrieved line items in SDF format.
 	LineItems string `json:"lineItems,omitempty"`
 
@@ -336,6 +342,7 @@
 	//   "FILTER_COMPANION_CREATIVE_ID"
 	//   "FILTER_CONVERSION_DELAY"
 	//   "FILTER_COUNTRY"
+	//   "FILTER_CREATIVE_ATTRIBUTE"
 	//   "FILTER_CREATIVE_HEIGHT"
 	//   "FILTER_CREATIVE_ID"
 	//   "FILTER_CREATIVE_SIZE"
@@ -355,7 +362,10 @@
 	//   "FILTER_FLOODLIGHT_PIXEL_ID"
 	//   "FILTER_GENDER"
 	//   "FILTER_INSERTION_ORDER"
+	//   "FILTER_INVENTORY_COMMITMENT_TYPE"
+	//   "FILTER_INVENTORY_DELIVERY_METHOD"
 	//   "FILTER_INVENTORY_FORMAT"
+	//   "FILTER_INVENTORY_RATE_TYPE"
 	//   "FILTER_INVENTORY_SOURCE"
 	//   "FILTER_INVENTORY_SOURCE_TYPE"
 	//   "FILTER_KEYWORD"
@@ -568,6 +578,7 @@
 	//   "FILTER_COMPANION_CREATIVE_ID"
 	//   "FILTER_CONVERSION_DELAY"
 	//   "FILTER_COUNTRY"
+	//   "FILTER_CREATIVE_ATTRIBUTE"
 	//   "FILTER_CREATIVE_HEIGHT"
 	//   "FILTER_CREATIVE_ID"
 	//   "FILTER_CREATIVE_SIZE"
@@ -587,7 +598,10 @@
 	//   "FILTER_FLOODLIGHT_PIXEL_ID"
 	//   "FILTER_GENDER"
 	//   "FILTER_INSERTION_ORDER"
+	//   "FILTER_INVENTORY_COMMITMENT_TYPE"
+	//   "FILTER_INVENTORY_DELIVERY_METHOD"
 	//   "FILTER_INVENTORY_FORMAT"
+	//   "FILTER_INVENTORY_RATE_TYPE"
 	//   "FILTER_INVENTORY_SOURCE"
 	//   "FILTER_INVENTORY_SOURCE_TYPE"
 	//   "FILTER_KEYWORD"
diff --git a/firestore/v1/firestore-api.json b/firestore/v1/firestore-api.json
index 52c2d7f..6feed69 100644
--- a/firestore/v1/firestore-api.json
+++ b/firestore/v1/firestore-api.json
@@ -1101,7 +1101,7 @@
       }
     }
   },
-  "revision": "20181121",
+  "revision": "20181222",
   "rootUrl": "https://firestore.googleapis.com/",
   "schemas": {
     "ArrayValue": {
@@ -1526,6 +1526,18 @@
           "description": "The path of the field. See Document.fields for the field path syntax\nreference.",
           "type": "string"
         },
+        "increment": {
+          "$ref": "Value",
+          "description": "Adds the given value to the field's current value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the given value.\nIf either of the given value or the current field value are doubles,\nboth values will be interpreted as doubles. Double arithmetic and\nrepresentation of double values follow IEEE 754 semantics.\nIf there is positive/negative integer overflow, the field is resolved\nto the largest magnitude positive/negative integer."
+        },
+        "maximum": {
+          "$ref": "Value",
+          "description": "Sets the field to the maximum of its current value and the given value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the given value.\nIf a maximum operation is applied where the field and the input value\nare of mixed types (that is - one is an integer and one is a double)\nthe field takes on the type of the larger operand. If the operands are\nequivalent (e.g. 3 and 3.0), the field does not change.\n0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and\nzero input value is always the stored value.\nThe maximum of any numeric value x and NaN is NaN."
+        },
+        "minimum": {
+          "$ref": "Value",
+          "description": "Sets the field to the minimum of its current value and the given value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the input value.\nIf a minimum operation is applied where the field and the input value\nare of mixed types (that is - one is an integer and one is a double)\nthe field takes on the type of the smaller operand. If the operands are\nequivalent (e.g. 3 and 3.0), the field does not change.\n0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and\nzero input value is always the stored value.\nThe minimum of any numeric value x and NaN is NaN."
+        },
         "removeAllFromArray": {
           "$ref": "ArrayValue",
           "description": "Remove all of the given elements from the array in the field.\nIf the field is not an array, or if the field does not yet exist, it is\nset to the empty array.\n\nEquivalent numbers of the different types (e.g. 3L and 3.0) are\nconsidered equal when deciding whether an element should be removed.\nNaN is equal to NaN, and Null is equal to Null.\nThis will remove all equivalent values if there are duplicates.\n\nThe corresponding transform_result will be the null value."
diff --git a/firestore/v1/firestore-gen.go b/firestore/v1/firestore-gen.go
index cbcc61f..418859d 100644
--- a/firestore/v1/firestore-gen.go
+++ b/firestore/v1/firestore-gen.go
@@ -1059,6 +1059,62 @@
 	// reference.
 	FieldPath string `json:"fieldPath,omitempty"`
 
+	// Increment: Adds the given value to the field's current value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the given value.
+	// If either of the given value or the current field value are
+	// doubles,
+	// both values will be interpreted as doubles. Double arithmetic
+	// and
+	// representation of double values follow IEEE 754 semantics.
+	// If there is positive/negative integer overflow, the field is
+	// resolved
+	// to the largest magnitude positive/negative integer.
+	Increment *Value `json:"increment,omitempty"`
+
+	// Maximum: Sets the field to the maximum of its current value and the
+	// given value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the given value.
+	// If a maximum operation is applied where the field and the input
+	// value
+	// are of mixed types (that is - one is an integer and one is a
+	// double)
+	// the field takes on the type of the larger operand. If the operands
+	// are
+	// equivalent (e.g. 3 and 3.0), the field does not change.
+	// 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value
+	// and
+	// zero input value is always the stored value.
+	// The maximum of any numeric value x and NaN is NaN.
+	Maximum *Value `json:"maximum,omitempty"`
+
+	// Minimum: Sets the field to the minimum of its current value and the
+	// given value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the input value.
+	// If a minimum operation is applied where the field and the input
+	// value
+	// are of mixed types (that is - one is an integer and one is a
+	// double)
+	// the field takes on the type of the smaller operand. If the operands
+	// are
+	// equivalent (e.g. 3 and 3.0), the field does not change.
+	// 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value
+	// and
+	// zero input value is always the stored value.
+	// The minimum of any numeric value x and NaN is NaN.
+	Minimum *Value `json:"minimum,omitempty"`
+
 	// RemoveAllFromArray: Remove all of the given elements from the array
 	// in the field.
 	// If the field is not an array, or if the field does not yet exist, it
diff --git a/firestore/v1beta1/firestore-api.json b/firestore/v1beta1/firestore-api.json
index b03d434..fe98213 100644
--- a/firestore/v1beta1/firestore-api.json
+++ b/firestore/v1beta1/firestore-api.json
@@ -790,7 +790,7 @@
       }
     }
   },
-  "revision": "20180814",
+  "revision": "20181222",
   "rootUrl": "https://firestore.googleapis.com/",
   "schemas": {
     "ArrayValue": {
@@ -1215,6 +1215,18 @@
           "description": "The path of the field. See Document.fields for the field path syntax\nreference.",
           "type": "string"
         },
+        "increment": {
+          "$ref": "Value",
+          "description": "Adds the given value to the field's current value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the given value.\nIf either of the given value or the current field value are doubles,\nboth values will be interpreted as doubles. Double arithmetic and\nrepresentation of double values follow IEEE 754 semantics.\nIf there is positive/negative integer overflow, the field is resolved\nto the largest magnitude positive/negative integer."
+        },
+        "maximum": {
+          "$ref": "Value",
+          "description": "Sets the field to the maximum of its current value and the given value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the given value.\nIf a maximum operation is applied where the field and the input value\nare of mixed types (that is - one is an integer and one is a double)\nthe field takes on the type of the larger operand. If the operands are\nequivalent (e.g. 3 and 3.0), the field does not change.\n0, 0.0, and -0.0 are all zero. The maximum of a zero stored value and\nzero input value is always the stored value.\nThe maximum of any numeric value x and NaN is NaN."
+        },
+        "minimum": {
+          "$ref": "Value",
+          "description": "Sets the field to the minimum of its current value and the given value.\n\nThis must be an integer or a double value.\nIf the field is not an integer or double, or if the field does not yet\nexist, the transformation will set the field to the input value.\nIf a minimum operation is applied where the field and the input value\nare of mixed types (that is - one is an integer and one is a double)\nthe field takes on the type of the smaller operand. If the operands are\nequivalent (e.g. 3 and 3.0), the field does not change.\n0, 0.0, and -0.0 are all zero. The minimum of a zero stored value and\nzero input value is always the stored value.\nThe minimum of any numeric value x and NaN is NaN."
+        },
         "removeAllFromArray": {
           "$ref": "ArrayValue",
           "description": "Remove all of the given elements from the array in the field.\nIf the field is not an array, or if the field does not yet exist, it is\nset to the empty array.\n\nEquivalent numbers of the different types (e.g. 3L and 3.0) are\nconsidered equal when deciding whether an element should be removed.\nNaN is equal to NaN, and Null is equal to Null.\nThis will remove all equivalent values if there are duplicates.\n\nThe corresponding transform_result will be the null value."
diff --git a/firestore/v1beta1/firestore-gen.go b/firestore/v1beta1/firestore-gen.go
index 44b297c..8d00745 100644
--- a/firestore/v1beta1/firestore-gen.go
+++ b/firestore/v1beta1/firestore-gen.go
@@ -1011,6 +1011,62 @@
 	// reference.
 	FieldPath string `json:"fieldPath,omitempty"`
 
+	// Increment: Adds the given value to the field's current value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the given value.
+	// If either of the given value or the current field value are
+	// doubles,
+	// both values will be interpreted as doubles. Double arithmetic
+	// and
+	// representation of double values follow IEEE 754 semantics.
+	// If there is positive/negative integer overflow, the field is
+	// resolved
+	// to the largest magnitude positive/negative integer.
+	Increment *Value `json:"increment,omitempty"`
+
+	// Maximum: Sets the field to the maximum of its current value and the
+	// given value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the given value.
+	// If a maximum operation is applied where the field and the input
+	// value
+	// are of mixed types (that is - one is an integer and one is a
+	// double)
+	// the field takes on the type of the larger operand. If the operands
+	// are
+	// equivalent (e.g. 3 and 3.0), the field does not change.
+	// 0, 0.0, and -0.0 are all zero. The maximum of a zero stored value
+	// and
+	// zero input value is always the stored value.
+	// The maximum of any numeric value x and NaN is NaN.
+	Maximum *Value `json:"maximum,omitempty"`
+
+	// Minimum: Sets the field to the minimum of its current value and the
+	// given value.
+	//
+	// This must be an integer or a double value.
+	// If the field is not an integer or double, or if the field does not
+	// yet
+	// exist, the transformation will set the field to the input value.
+	// If a minimum operation is applied where the field and the input
+	// value
+	// are of mixed types (that is - one is an integer and one is a
+	// double)
+	// the field takes on the type of the smaller operand. If the operands
+	// are
+	// equivalent (e.g. 3 and 3.0), the field does not change.
+	// 0, 0.0, and -0.0 are all zero. The minimum of a zero stored value
+	// and
+	// zero input value is always the stored value.
+	// The minimum of any numeric value x and NaN is NaN.
+	Minimum *Value `json:"minimum,omitempty"`
+
 	// RemoveAllFromArray: Remove all of the given elements from the array
 	// in the field.
 	// If the field is not an array, or if the field does not yet exist, it
diff --git a/fitness/v1/fitness-api.json b/fitness/v1/fitness-api.json
index 8f2543c..ba09383 100644
--- a/fitness/v1/fitness-api.json
+++ b/fitness/v1/fitness-api.json
@@ -65,7 +65,7 @@
   "description": "Stores and accesses user data in the fitness store from apps on any platform.",
   "discoveryVersion": "v1",
   "documentationLink": "https://developers.google.com/fit/rest/",
-  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/lp7DlB6vWEZC2K8hvUac-f_sVvc\"",
+  "etag": "\"J3WqvAcMk4eQjJXvfSI4Yr8VouA/4iC6UhHeBH4Kvfc2YWJ1Z3_e2eA\"",
   "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"
@@ -802,7 +802,7 @@
       }
     }
   },
-  "revision": "20181129",
+  "revision": "20190101",
   "rootUrl": "https://www.googleapis.com/",
   "schemas": {
     "AggregateBucket": {
@@ -1148,7 +1148,7 @@
           "description": "Information about an application which feeds sensor data into the platform."
         },
         "dataQualityStandard": {
-          "description": "",
+          "description": "DO NOT USE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries.",
           "items": {
             "enum": [
               "dataQualityBloodGlucoseIso151972003",
diff --git a/fitness/v1/fitness-gen.go b/fitness/v1/fitness-gen.go
index b324754..d028315 100644
--- a/fitness/v1/fitness-gen.go
+++ b/fitness/v1/fitness-gen.go
@@ -683,6 +683,9 @@
 	// into the platform.
 	Application *Application `json:"application,omitempty"`
 
+	// DataQualityStandard: DO NOT USE THIS FIELD. It is never populated in
+	// responses from the platform, and is ignored in queries.
+	//
 	// Possible values:
 	//   "dataQualityBloodGlucoseIso151972003"
 	//   "dataQualityBloodGlucoseIso151972013"
diff --git a/oslogin/v1/oslogin-api.json b/oslogin/v1/oslogin-api.json
index faeae23..16cc096 100644
--- a/oslogin/v1/oslogin-api.json
+++ b/oslogin/v1/oslogin-api.json
@@ -17,7 +17,7 @@
   "canonicalName": "Cloud OS Login",
   "description": "Manages OS login configuration for Google account users.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
+  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
   "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
@@ -305,7 +305,7 @@
       }
     }
   },
-  "revision": "20181023",
+  "revision": "20190107",
   "rootUrl": "https://oslogin.googleapis.com/",
   "schemas": {
     "Empty": {
diff --git a/oslogin/v1/oslogin-gen.go b/oslogin/v1/oslogin-gen.go
index dcc6c7b..1852c79 100644
--- a/oslogin/v1/oslogin-gen.go
+++ b/oslogin/v1/oslogin-gen.go
@@ -8,7 +8,7 @@
 //
 // This package is DEPRECATED. Use package cloud.google.com/go/oslogin/apiv1 instead.
 //
-// See https://cloud.google.com/compute/docs/oslogin/rest/
+// See https://cloud.google.com/compute/docs/oslogin/
 //
 // Usage example:
 //
diff --git a/oslogin/v1beta/oslogin-api.json b/oslogin/v1beta/oslogin-api.json
index 7154a6f..b70ca07 100644
--- a/oslogin/v1beta/oslogin-api.json
+++ b/oslogin/v1beta/oslogin-api.json
@@ -23,7 +23,7 @@
   "canonicalName": "Cloud OS Login",
   "description": "Manages OS login configuration for Google account users.",
   "discoveryVersion": "v1",
-  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/",
+  "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/",
   "fullyEncodeReservedExpansion": true,
   "icons": {
     "x16": "http://www.google.com/images/icons/product/search-16.gif",
@@ -313,7 +313,7 @@
       }
     }
   },
-  "revision": "20190107",
+  "revision": "20181210",
   "rootUrl": "https://oslogin.googleapis.com/",
   "schemas": {
     "Empty": {
diff --git a/oslogin/v1beta/oslogin-gen.go b/oslogin/v1beta/oslogin-gen.go
index a8b26f8..e5f23fb 100644
--- a/oslogin/v1beta/oslogin-gen.go
+++ b/oslogin/v1beta/oslogin-gen.go
@@ -8,7 +8,7 @@
 //
 // This package is DEPRECATED. Use package cloud.google.com/go/oslogin/apiv1 instead.
 //
-// See https://cloud.google.com/compute/docs/oslogin/
+// See https://cloud.google.com/compute/docs/oslogin/rest/
 //
 // Usage example:
 //
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
index 83d4a31..2a1b798 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-api.json
@@ -485,7 +485,7 @@
       }
     }
   },
-  "revision": "20190107",
+  "revision": "20190109",
   "rootUrl": "https://serviceconsumermanagement.googleapis.com/",
   "schemas": {
     "AddTenantProjectRequest": {
@@ -716,6 +716,10 @@
           "format": "double",
           "type": "number"
         },
+        "jwtAudience": {
+          "description": "The JWT audience is used when generating a JWT id token for the backend.",
+          "type": "string"
+        },
         "minDeadline": {
           "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
           "format": "double",
@@ -726,6 +730,19 @@
           "format": "double",
           "type": "number"
         },
+        "pathTranslation": {
+          "enum": [
+            "PATH_TRANSLATION_UNSPECIFIED",
+            "CONSTANT_ADDRESS",
+            "APPEND_PATH_TO_ADDRESS"
+          ],
+          "enumDescriptions": [
+            "",
+            "Use the backend address as-is, with no modification to the path. If the\nURL pattern contains variables, the variable names and values will be\nappended to the query string. If a query string parameter and a URL\npattern variable have the same name, this may result in duplicate keys in\nthe query string.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.cloudfunctions.net/getUser\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.cloudfunctions.net/getUser?cid=widgetworks\u0026uid=johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.cloudfunctions.net/getUser?timezone=EST\u0026cid=widgetworks\u0026uid=johndoe",
+            "The request path will be appended to the backend address.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.appspot.com\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST"
+          ],
+          "type": "string"
+        },
         "selector": {
           "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
diff --git a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
index 5653770..23621e4 100644
--- a/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
+++ b/serviceconsumermanagement/v1/serviceconsumermanagement-gen.go
@@ -664,6 +664,10 @@
 	// seconds.
 	Deadline float64 `json:"deadline,omitempty"`
 
+	// JwtAudience: The JWT audience is used when generating a JWT id token
+	// for the backend.
+	JwtAudience string `json:"jwtAudience,omitempty"`
+
 	// MinDeadline: Minimum deadline in seconds needed for this method.
 	// Calls having deadline
 	// value lower than this will be rejected.
@@ -674,6 +678,60 @@
 	// operation. The default is no deadline.
 	OperationDeadline float64 `json:"operationDeadline,omitempty"`
 
+	// Possible values:
+	//   "PATH_TRANSLATION_UNSPECIFIED"
+	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
+	// modification to the path. If the
+	// URL pattern contains variables, the variable names and values will
+	// be
+	// appended to the query string. If a query string parameter and a
+	// URL
+	// pattern variable have the same name, this may result in duplicate
+	// keys in
+	// the query string.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:
+	// https://example.cloudfunctions.net/getUser
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
+	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
+	// backend address.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:    https://example.appspot.com
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
+	PathTranslation string `json:"pathTranslation,omitempty"`
+
 	// Selector: Selects the methods to which this rule applies.
 	//
 	// Refer to selector for syntax details.
diff --git a/servicenetworking/v1beta/servicenetworking-api.json b/servicenetworking/v1beta/servicenetworking-api.json
index 938d8a1..45d314f 100644
--- a/servicenetworking/v1beta/servicenetworking-api.json
+++ b/servicenetworking/v1beta/servicenetworking-api.json
@@ -306,7 +306,7 @@
       }
     }
   },
-  "revision": "20190107",
+  "revision": "20190109",
   "rootUrl": "https://servicenetworking.googleapis.com/",
   "schemas": {
     "AddSubnetworkRequest": {
@@ -531,6 +531,10 @@
           "format": "double",
           "type": "number"
         },
+        "jwtAudience": {
+          "description": "The JWT audience is used when generating a JWT id token for the backend.",
+          "type": "string"
+        },
         "minDeadline": {
           "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
           "format": "double",
@@ -541,6 +545,19 @@
           "format": "double",
           "type": "number"
         },
+        "pathTranslation": {
+          "enum": [
+            "PATH_TRANSLATION_UNSPECIFIED",
+            "CONSTANT_ADDRESS",
+            "APPEND_PATH_TO_ADDRESS"
+          ],
+          "enumDescriptions": [
+            "",
+            "Use the backend address as-is, with no modification to the path. If the\nURL pattern contains variables, the variable names and values will be\nappended to the query string. If a query string parameter and a URL\npattern variable have the same name, this may result in duplicate keys in\nthe query string.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.cloudfunctions.net/getUser\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.cloudfunctions.net/getUser?cid=widgetworks\u0026uid=johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.cloudfunctions.net/getUser?timezone=EST\u0026cid=widgetworks\u0026uid=johndoe",
+            "The request path will be appended to the backend address.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.appspot.com\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST"
+          ],
+          "type": "string"
+        },
         "selector": {
           "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
diff --git a/servicenetworking/v1beta/servicenetworking-gen.go b/servicenetworking/v1beta/servicenetworking-gen.go
index 0a0ab71..737f9e7 100644
--- a/servicenetworking/v1beta/servicenetworking-gen.go
+++ b/servicenetworking/v1beta/servicenetworking-gen.go
@@ -640,6 +640,10 @@
 	// seconds.
 	Deadline float64 `json:"deadline,omitempty"`
 
+	// JwtAudience: The JWT audience is used when generating a JWT id token
+	// for the backend.
+	JwtAudience string `json:"jwtAudience,omitempty"`
+
 	// MinDeadline: Minimum deadline in seconds needed for this method.
 	// Calls having deadline
 	// value lower than this will be rejected.
@@ -650,6 +654,60 @@
 	// operation. The default is no deadline.
 	OperationDeadline float64 `json:"operationDeadline,omitempty"`
 
+	// Possible values:
+	//   "PATH_TRANSLATION_UNSPECIFIED"
+	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
+	// modification to the path. If the
+	// URL pattern contains variables, the variable names and values will
+	// be
+	// appended to the query string. If a query string parameter and a
+	// URL
+	// pattern variable have the same name, this may result in duplicate
+	// keys in
+	// the query string.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:
+	// https://example.cloudfunctions.net/getUser
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
+	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
+	// backend address.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:    https://example.appspot.com
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
+	PathTranslation string `json:"pathTranslation,omitempty"`
+
 	// Selector: Selects the methods to which this rule applies.
 	//
 	// Refer to selector for syntax details.
diff --git a/serviceusage/v1/serviceusage-api.json b/serviceusage/v1/serviceusage-api.json
index 9542d90..7ba2c12 100644
--- a/serviceusage/v1/serviceusage-api.json
+++ b/serviceusage/v1/serviceusage-api.json
@@ -393,7 +393,7 @@
       }
     }
   },
-  "revision": "20190107",
+  "revision": "20190109",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -575,6 +575,10 @@
           "format": "double",
           "type": "number"
         },
+        "jwtAudience": {
+          "description": "The JWT audience is used when generating a JWT id token for the backend.",
+          "type": "string"
+        },
         "minDeadline": {
           "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
           "format": "double",
@@ -585,6 +589,19 @@
           "format": "double",
           "type": "number"
         },
+        "pathTranslation": {
+          "enum": [
+            "PATH_TRANSLATION_UNSPECIFIED",
+            "CONSTANT_ADDRESS",
+            "APPEND_PATH_TO_ADDRESS"
+          ],
+          "enumDescriptions": [
+            "",
+            "Use the backend address as-is, with no modification to the path. If the\nURL pattern contains variables, the variable names and values will be\nappended to the query string. If a query string parameter and a URL\npattern variable have the same name, this may result in duplicate keys in\nthe query string.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.cloudfunctions.net/getUser\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.cloudfunctions.net/getUser?cid=widgetworks\u0026uid=johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.cloudfunctions.net/getUser?timezone=EST\u0026cid=widgetworks\u0026uid=johndoe",
+            "The request path will be appended to the backend address.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.appspot.com\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST"
+          ],
+          "type": "string"
+        },
         "selector": {
           "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
diff --git a/serviceusage/v1/serviceusage-gen.go b/serviceusage/v1/serviceusage-gen.go
index 9ae72e0..5eb15bf 100644
--- a/serviceusage/v1/serviceusage-gen.go
+++ b/serviceusage/v1/serviceusage-gen.go
@@ -545,6 +545,10 @@
 	// seconds.
 	Deadline float64 `json:"deadline,omitempty"`
 
+	// JwtAudience: The JWT audience is used when generating a JWT id token
+	// for the backend.
+	JwtAudience string `json:"jwtAudience,omitempty"`
+
 	// MinDeadline: Minimum deadline in seconds needed for this method.
 	// Calls having deadline
 	// value lower than this will be rejected.
@@ -555,6 +559,60 @@
 	// operation. The default is no deadline.
 	OperationDeadline float64 `json:"operationDeadline,omitempty"`
 
+	// Possible values:
+	//   "PATH_TRANSLATION_UNSPECIFIED"
+	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
+	// modification to the path. If the
+	// URL pattern contains variables, the variable names and values will
+	// be
+	// appended to the query string. If a query string parameter and a
+	// URL
+	// pattern variable have the same name, this may result in duplicate
+	// keys in
+	// the query string.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:
+	// https://example.cloudfunctions.net/getUser
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
+	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
+	// backend address.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:    https://example.appspot.com
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
+	PathTranslation string `json:"pathTranslation,omitempty"`
+
 	// Selector: Selects the methods to which this rule applies.
 	//
 	// Refer to selector for syntax details.
diff --git a/serviceusage/v1beta1/serviceusage-api.json b/serviceusage/v1beta1/serviceusage-api.json
index f5c554f..5b83099 100644
--- a/serviceusage/v1beta1/serviceusage-api.json
+++ b/serviceusage/v1beta1/serviceusage-api.json
@@ -338,7 +338,7 @@
       }
     }
   },
-  "revision": "20190107",
+  "revision": "20190109",
   "rootUrl": "https://serviceusage.googleapis.com/",
   "schemas": {
     "Api": {
@@ -520,6 +520,10 @@
           "format": "double",
           "type": "number"
         },
+        "jwtAudience": {
+          "description": "The JWT audience is used when generating a JWT id token for the backend.",
+          "type": "string"
+        },
         "minDeadline": {
           "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.",
           "format": "double",
@@ -530,6 +534,19 @@
           "format": "double",
           "type": "number"
         },
+        "pathTranslation": {
+          "enum": [
+            "PATH_TRANSLATION_UNSPECIFIED",
+            "CONSTANT_ADDRESS",
+            "APPEND_PATH_TO_ADDRESS"
+          ],
+          "enumDescriptions": [
+            "",
+            "Use the backend address as-is, with no modification to the path. If the\nURL pattern contains variables, the variable names and values will be\nappended to the query string. If a query string parameter and a URL\npattern variable have the same name, this may result in duplicate keys in\nthe query string.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.cloudfunctions.net/getUser\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.cloudfunctions.net/getUser?cid=widgetworks\u0026uid=johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.cloudfunctions.net/getUser?timezone=EST\u0026cid=widgetworks\u0026uid=johndoe",
+            "The request path will be appended to the backend address.\n\n# Examples\n\nGiven the following operation config:\n\n    Method path:        /api/company/{cid}/user/{uid}\n    Backend address:    https://example.appspot.com\n\nRequests to the following request paths will call the backend at the\ntranslated path:\n\n    Request path: /api/company/widgetworks/user/johndoe\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe\n\n    Request path: /api/company/widgetworks/user/johndoe?timezone=EST\n    Translated:   https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST"
+          ],
+          "type": "string"
+        },
         "selector": {
           "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.",
           "type": "string"
diff --git a/serviceusage/v1beta1/serviceusage-gen.go b/serviceusage/v1beta1/serviceusage-gen.go
index 0097a22..04c1025 100644
--- a/serviceusage/v1beta1/serviceusage-gen.go
+++ b/serviceusage/v1beta1/serviceusage-gen.go
@@ -545,6 +545,10 @@
 	// seconds.
 	Deadline float64 `json:"deadline,omitempty"`
 
+	// JwtAudience: The JWT audience is used when generating a JWT id token
+	// for the backend.
+	JwtAudience string `json:"jwtAudience,omitempty"`
+
 	// MinDeadline: Minimum deadline in seconds needed for this method.
 	// Calls having deadline
 	// value lower than this will be rejected.
@@ -555,6 +559,60 @@
 	// operation. The default is no deadline.
 	OperationDeadline float64 `json:"operationDeadline,omitempty"`
 
+	// Possible values:
+	//   "PATH_TRANSLATION_UNSPECIFIED"
+	//   "CONSTANT_ADDRESS" - Use the backend address as-is, with no
+	// modification to the path. If the
+	// URL pattern contains variables, the variable names and values will
+	// be
+	// appended to the query string. If a query string parameter and a
+	// URL
+	// pattern variable have the same name, this may result in duplicate
+	// keys in
+	// the query string.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:
+	// https://example.cloudfunctions.net/getUser
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe
+	//   "APPEND_PATH_TO_ADDRESS" - The request path will be appended to the
+	// backend address.
+	//
+	// # Examples
+	//
+	// Given the following operation config:
+	//
+	//     Method path:        /api/company/{cid}/user/{uid}
+	//     Backend address:    https://example.appspot.com
+	//
+	// Requests to the following request paths will call the backend at
+	// the
+	// translated path:
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe
+	//
+	//     Request path: /api/company/widgetworks/user/johndoe?timezone=EST
+	//     Translated:
+	// https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST
+	PathTranslation string `json:"pathTranslation,omitempty"`
+
 	// Selector: Selects the methods to which this rule applies.
 	//
 	// Refer to selector for syntax details.
diff --git a/sheets/v4/sheets-api.json b/sheets/v4/sheets-api.json
index d054a8a..f8e3a69 100644
--- a/sheets/v4/sheets-api.json
+++ b/sheets/v4/sheets-api.json
@@ -808,7 +808,7 @@
       }
     }
   },
-  "revision": "20181116",
+  "revision": "20190109",
   "rootUrl": "https://sheets.googleapis.com/",
   "schemas": {
     "AddBandingRequest": {
@@ -1235,9 +1235,9 @@
             "A \u003ca href=\"/chart/interactive/docs/gallery/linechart\"\u003eline chart\u003c/a\u003e.",
             "An \u003ca href=\"/chart/interactive/docs/gallery/areachart\"\u003earea chart\u003c/a\u003e.",
             "A \u003ca href=\"/chart/interactive/docs/gallery/columnchart\"\u003ecolumn chart\u003c/a\u003e.",
-            "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter chart\u003c/a\u003e.",
+            "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter\nchart\u003c/a\u003e.",
             "A \u003ca href=\"/chart/interactive/docs/gallery/combochart\"\u003ecombo chart\u003c/a\u003e.",
-            "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area chart\u003c/a\u003e."
+            "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area\nchart\u003c/a\u003e."
           ],
           "type": "string"
         }
@@ -1273,9 +1273,9 @@
             "A \u003ca href=\"/chart/interactive/docs/gallery/linechart\"\u003eline chart\u003c/a\u003e.",
             "An \u003ca href=\"/chart/interactive/docs/gallery/areachart\"\u003earea chart\u003c/a\u003e.",
             "A \u003ca href=\"/chart/interactive/docs/gallery/columnchart\"\u003ecolumn chart\u003c/a\u003e.",
-            "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter chart\u003c/a\u003e.",
+            "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter\nchart\u003c/a\u003e.",
             "A \u003ca href=\"/chart/interactive/docs/gallery/combochart\"\u003ecombo chart\u003c/a\u003e.",
-            "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area chart\u003c/a\u003e."
+            "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area\nchart\u003c/a\u003e."
           ],
           "type": "string"
         },
@@ -2018,7 +2018,7 @@
       "type": "object"
     },
     "CandlestickChartSpec": {
-      "description": "A \u003ca href=\"/chart/interactive/docs/gallery/candlestickchart\"\u003ecandlestick chart\u003c/a\u003e.",
+      "description": "A \u003ca href=\"/chart/interactive/docs/gallery/candlestickchart\"\u003ecandlestick\nchart\u003c/a\u003e.",
       "id": "CandlestickChartSpec",
       "properties": {
         "data": {
diff --git a/sheets/v4/sheets-gen.go b/sheets/v4/sheets-gen.go
index 1d52a5a..8df0fce 100644
--- a/sheets/v4/sheets-gen.go
+++ b/sheets/v4/sheets-gen.go
@@ -1095,7 +1095,8 @@
 	//   "COMBO" - A <a
 	// href="/chart/interactive/docs/gallery/combochart">combo chart</a>.
 	//   "STEPPED_AREA" - A <a
-	// href="/chart/interactive/docs/gallery/steppedareachart">stepped area
+	// href="/chart/interactive/docs/gallery/steppedareachart">stepped
+	// area
 	// chart</a>.
 	Type string `json:"type,omitempty"`
 
@@ -1147,7 +1148,8 @@
 	//   "COMBO" - A <a
 	// href="/chart/interactive/docs/gallery/combochart">combo chart</a>.
 	//   "STEPPED_AREA" - A <a
-	// href="/chart/interactive/docs/gallery/steppedareachart">stepped area
+	// href="/chart/interactive/docs/gallery/steppedareachart">stepped
+	// area
 	// chart</a>.
 	ChartType string `json:"chartType,omitempty"`
 
@@ -2469,7 +2471,8 @@
 
 // CandlestickChartSpec: A <a
 // href="/chart/interactive/docs/gallery/candlestickchart">candlestick
-// chart</a>.
+// ch
+// art</a>.
 type CandlestickChartSpec struct {
 	// Data: The Candlestick chart data.
 	// Only one CandlestickData is supported.
diff --git a/slides/v1/slides-api.json b/slides/v1/slides-api.json
index 331219c..465f15c 100644
--- a/slides/v1/slides-api.json
+++ b/slides/v1/slides-api.json
@@ -302,7 +302,7 @@
       }
     }
   },
-  "revision": "20181127",
+  "revision": "20190109",
   "rootUrl": "https://slides.googleapis.com/",
   "schemas": {
     "AffineTransform": {
@@ -3708,7 +3708,7 @@
       "type": "object"
     },
     "TableRange": {
-      "description": "A table range represents a reference to a subset of a table.\n\nIt's important to note that the cells specified by a table range do not\nnecessarily form a rectangle. For example, let's say we have a 3 x 3 table\nwhere all the cells of the last row are merged together. The table looks\nlike this:\n\n              \n     [             ]\n\nA table range with location = (0, 0), row span = 3 and column span = 2\nspecifies the following cells:\n\n      x     x \n     [      x      ]",
+      "description": "A table range represents a reference to a subset of a table.\n\nIt's important to note that the cells specified by a table range do not\nnecessarily form a rectangle. For example, let's say we have a 3 x 3 table\nwhere all the cells of the last row are merged together. The table looks\nlike this:\n\n              \n     [             ]\n\nA table range with location = (0, 0), row span = 3 and column span = 2\nspecifies the following cells:\n\n      x     x \n     [ x    x    x ]",
       "id": "TableRange",
       "properties": {
         "columnSpan": {
diff --git a/slides/v1/slides-gen.go b/slides/v1/slides-gen.go
index 5051db4..153bf47 100644
--- a/slides/v1/slides-gen.go
+++ b/slides/v1/slides-gen.go
@@ -6296,7 +6296,7 @@
 // specifies the following cells:
 //
 //       x     x
-//      [      x      ]
+//      [ x    x    x ]
 type TableRange struct {
 	// ColumnSpan: The column span of the table range.
 	ColumnSpan int64 `json:"columnSpan,omitempty"`
diff --git a/speech/v1/speech-api.json b/speech/v1/speech-api.json
index f8ab958..b1e5644 100644
--- a/speech/v1/speech-api.json
+++ b/speech/v1/speech-api.json
@@ -170,117 +170,6 @@
         }
       }
     },
-    "projects": {
-      "resources": {
-        "locations": {
-          "resources": {
-            "operations": {
-              "methods": {
-                "get": {
-                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.locations.operations.get",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "name": {
-                      "description": "The name of the operation resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1/{+name}",
-                  "response": {
-                    "$ref": "Operation"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                },
-                "list": {
-                  "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                  "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.locations.operations.list",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "filter": {
-                      "description": "The standard list filter.",
-                      "location": "query",
-                      "type": "string"
-                    },
-                    "name": {
-                      "description": "The name of the operation's parent resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/locations/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    },
-                    "pageSize": {
-                      "description": "The standard list page size.",
-                      "format": "int32",
-                      "location": "query",
-                      "type": "integer"
-                    },
-                    "pageToken": {
-                      "description": "The standard list page token.",
-                      "location": "query",
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1/{+name}/operations",
-                  "response": {
-                    "$ref": "ListOperationsResponse"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                }
-              }
-            }
-          }
-        },
-        "operations": {
-          "resources": {
-            "manualRecognitionTasks": {
-              "methods": {
-                "get": {
-                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                  "flatPath": "v1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.operations.manualRecognitionTasks.get",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "name": {
-                      "description": "The name of the operation resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1/{+name}",
-                  "response": {
-                    "$ref": "Operation"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                }
-              }
-            }
-          }
-        }
-      }
-    },
     "speech": {
       "methods": {
         "longrunningrecognize": {
@@ -322,7 +211,7 @@
       }
     }
   },
-  "revision": "20190104",
+  "revision": "20181214",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
@@ -453,10 +342,6 @@
           "description": "*Optional* If 'true', adds punctuation to recognition result hypotheses.\nThis feature is only available in select languages. Setting this for\nrequests in other languages has no effect at all.\nThe default 'false' value does not add punctuation to result hypotheses.\nNote: This is currently offered as an experimental service, complimentary\nto all users. In the future this may be exclusively available as a\npremium feature.",
           "type": "boolean"
         },
-        "enableSeparateRecognitionPerChannel": {
-          "description": "This needs to be set to ‘true’ explicitly and `audio_channel_count` \u003e 1\nto get each channel recognized separately. The recognition result will\ncontain a `channel_tag` field to state which channel that result belongs\nto. If this is not true, we will only recognize the first channel. The\nrequest is billed cumulatively for all channels recognized:\n`audio_channel_count` multiplied by the length of the audio.",
-          "type": "boolean"
-        },
         "enableWordTimeOffsets": {
           "description": "*Optional* If `true`, the top result includes a list of words and\nthe start and end time offsets (timestamps) for those words. If\n`false`, no word-level time offset information is returned. The default is\n`false`.",
           "type": "boolean"
@@ -597,11 +482,6 @@
             "$ref": "SpeechRecognitionAlternative"
           },
           "type": "array"
-        },
-        "channelTag": {
-          "description": "For multi-channel audio, this is the channel number corresponding to the\nrecognized result for the audio from that channel.\nFor audio_channel_count = N, its output values can range from '1' to 'N'.",
-          "format": "int32",
-          "type": "integer"
         }
       },
       "type": "object"
diff --git a/speech/v1/speech-gen.go b/speech/v1/speech-gen.go
index 194ee7c..55baae3 100644
--- a/speech/v1/speech-gen.go
+++ b/speech/v1/speech-gen.go
@@ -64,7 +64,6 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Operations = NewOperationsService(s)
-	s.Projects = NewProjectsService(s)
 	s.Speech = NewSpeechService(s)
 	return s, nil
 }
@@ -76,8 +75,6 @@
 
 	Operations *OperationsService
 
-	Projects *ProjectsService
-
 	Speech *SpeechService
 }
 
@@ -97,63 +94,6 @@
 	s *Service
 }
 
-func NewProjectsService(s *Service) *ProjectsService {
-	rs := &ProjectsService{s: s}
-	rs.Locations = NewProjectsLocationsService(s)
-	rs.Operations = NewProjectsOperationsService(s)
-	return rs
-}
-
-type ProjectsService struct {
-	s *Service
-
-	Locations *ProjectsLocationsService
-
-	Operations *ProjectsOperationsService
-}
-
-func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
-	rs := &ProjectsLocationsService{s: s}
-	rs.Operations = NewProjectsLocationsOperationsService(s)
-	return rs
-}
-
-type ProjectsLocationsService struct {
-	s *Service
-
-	Operations *ProjectsLocationsOperationsService
-}
-
-func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
-	rs := &ProjectsLocationsOperationsService{s: s}
-	return rs
-}
-
-type ProjectsLocationsOperationsService struct {
-	s *Service
-}
-
-func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
-	rs := &ProjectsOperationsService{s: s}
-	rs.ManualRecognitionTasks = NewProjectsOperationsManualRecognitionTasksService(s)
-	return rs
-}
-
-type ProjectsOperationsService struct {
-	s *Service
-
-	ManualRecognitionTasks *ProjectsOperationsManualRecognitionTasksService
-}
-
-func NewProjectsOperationsManualRecognitionTasksService(s *Service) *ProjectsOperationsManualRecognitionTasksService {
-	rs := &ProjectsOperationsManualRecognitionTasksService{s: s}
-	return rs
-}
-
-type ProjectsOperationsManualRecognitionTasksService struct {
-	s *Service
-}
-
 func NewSpeechService(s *Service) *SpeechService {
 	rs := &SpeechService{s: s}
 	return rs
@@ -457,19 +397,6 @@
 	// premium feature.
 	EnableAutomaticPunctuation bool `json:"enableAutomaticPunctuation,omitempty"`
 
-	// EnableSeparateRecognitionPerChannel: This needs to be set to
-	// ‘true’ explicitly and `audio_channel_count` > 1
-	// to get each channel recognized separately. The recognition result
-	// will
-	// contain a `channel_tag` field to state which channel that result
-	// belongs
-	// to. If this is not true, we will only recognize the first channel.
-	// The
-	// request is billed cumulatively for all channels
-	// recognized:
-	// `audio_channel_count` multiplied by the length of the audio.
-	EnableSeparateRecognitionPerChannel bool `json:"enableSeparateRecognitionPerChannel,omitempty"`
-
 	// EnableWordTimeOffsets: *Optional* If `true`, the top result includes
 	// a list of words and
 	// the start and end time offsets (timestamps) for those words.
@@ -861,13 +788,6 @@
 	// alternative being the most probable, as ranked by the recognizer.
 	Alternatives []*SpeechRecognitionAlternative `json:"alternatives,omitempty"`
 
-	// ChannelTag: For multi-channel audio, this is the channel number
-	// corresponding to the
-	// recognized result for the audio from that channel.
-	// For audio_channel_count = N, its output values can range from '1' to
-	// 'N'.
-	ChannelTag int64 `json:"channelTag,omitempty"`
-
 	// ForceSendFields is a list of field names (e.g. "Alternatives") to
 	// unconditionally include in API requests. By default, fields with
 	// empty values are omitted from API requests. However, any non-pointer,
@@ -1420,517 +1340,6 @@
 	}
 }
 
-// method id "speech.projects.locations.operations.get":
-
-type ProjectsLocationsOperationsGetCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// Get: Gets the latest state of a long-running operation.  Clients can
-// use this
-// method to poll the operation result at intervals as recommended by
-// the API
-// service.
-func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
-	c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	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 *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsLocationsOperationsGetCall) 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, "v1/{+name}")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.locations.operations.get" 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 *ProjectsLocationsOperationsGetCall) 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": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.locations.operations.get",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "name": {
-	//       "description": "The name of the operation resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1/{+name}",
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
-// method id "speech.projects.locations.operations.list":
-
-type ProjectsLocationsOperationsListCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// List: Lists operations that match the specified filter in the
-// request. If the
-// server doesn't support this method, it returns
-// `UNIMPLEMENTED`.
-//
-// NOTE: the `name` binding allows API services to override the
-// binding
-// to use different resource name schemes, such as `users/*/operations`.
-// To
-// override the binding, API services can add a binding such
-// as
-// "/v1/{name=users/*}/operations" to their service configuration.
-// For backwards compatibility, the default name includes the
-// operations
-// collection id, however overriding users must ensure the name
-// binding
-// is the parent resource, without the operations collection id.
-func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
-	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	return c
-}
-
-// Filter sets the optional parameter "filter": The standard list
-// filter.
-func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
-	c.urlParams_.Set("filter", filter)
-	return c
-}
-
-// PageSize sets the optional parameter "pageSize": The standard list
-// page size.
-func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
-	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
-	return c
-}
-
-// PageToken sets the optional parameter "pageToken": The standard list
-// page token.
-func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsLocationsOperationsListCall) 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, "v1/{+name}/operations")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.locations.operations.list" call.
-// Exactly one of *ListOperationsResponse or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *ListOperationsResponse.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 *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, 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 := &ListOperationsResponse{
-		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": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-	//   "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.locations.operations.list",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "filter": {
-	//       "description": "The standard list filter.",
-	//       "location": "query",
-	//       "type": "string"
-	//     },
-	//     "name": {
-	//       "description": "The name of the operation's parent resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "pageSize": {
-	//       "description": "The standard list page size.",
-	//       "format": "int32",
-	//       "location": "query",
-	//       "type": "integer"
-	//     },
-	//     "pageToken": {
-	//       "description": "The standard list page token.",
-	//       "location": "query",
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1/{+name}/operations",
-	//   "response": {
-	//     "$ref": "ListOperationsResponse"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
-// 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 *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) 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 "speech.projects.operations.manualRecognitionTasks.get":
-
-type ProjectsOperationsManualRecognitionTasksGetCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// Get: Gets the latest state of a long-running operation.  Clients can
-// use this
-// method to poll the operation result at intervals as recommended by
-// the API
-// service.
-func (r *ProjectsOperationsManualRecognitionTasksService) Get(name string) *ProjectsOperationsManualRecognitionTasksGetCall {
-	c := &ProjectsOperationsManualRecognitionTasksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Context(ctx context.Context) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsOperationsManualRecognitionTasksGetCall) 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, "v1/{+name}")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.operations.manualRecognitionTasks.get" 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 *ProjectsOperationsManualRecognitionTasksGetCall) 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": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-	//   "flatPath": "v1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.operations.manualRecognitionTasks.get",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "name": {
-	//       "description": "The name of the operation resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1/{+name}",
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
 // method id "speech.speech.longrunningrecognize":
 
 type SpeechLongrunningrecognizeCall struct {
diff --git a/speech/v1p1beta1/speech-api.json b/speech/v1p1beta1/speech-api.json
index 4b5a684..652118f 100644
--- a/speech/v1p1beta1/speech-api.json
+++ b/speech/v1p1beta1/speech-api.json
@@ -170,117 +170,6 @@
         }
       }
     },
-    "projects": {
-      "resources": {
-        "locations": {
-          "resources": {
-            "operations": {
-              "methods": {
-                "get": {
-                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                  "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.locations.operations.get",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "name": {
-                      "description": "The name of the operation resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1p1beta1/{+name}",
-                  "response": {
-                    "$ref": "Operation"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                },
-                "list": {
-                  "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-                  "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.locations.operations.list",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "filter": {
-                      "description": "The standard list filter.",
-                      "location": "query",
-                      "type": "string"
-                    },
-                    "name": {
-                      "description": "The name of the operation's parent resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/locations/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    },
-                    "pageSize": {
-                      "description": "The standard list page size.",
-                      "format": "int32",
-                      "location": "query",
-                      "type": "integer"
-                    },
-                    "pageToken": {
-                      "description": "The standard list page token.",
-                      "location": "query",
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1p1beta1/{+name}/operations",
-                  "response": {
-                    "$ref": "ListOperationsResponse"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                }
-              }
-            }
-          }
-        },
-        "operations": {
-          "resources": {
-            "manualRecognitionTasks": {
-              "methods": {
-                "get": {
-                  "description": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-                  "flatPath": "v1p1beta1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
-                  "httpMethod": "GET",
-                  "id": "speech.projects.operations.manualRecognitionTasks.get",
-                  "parameterOrder": [
-                    "name"
-                  ],
-                  "parameters": {
-                    "name": {
-                      "description": "The name of the operation resource.",
-                      "location": "path",
-                      "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
-                      "required": true,
-                      "type": "string"
-                    }
-                  },
-                  "path": "v1p1beta1/{+name}",
-                  "response": {
-                    "$ref": "Operation"
-                  },
-                  "scopes": [
-                    "https://www.googleapis.com/auth/cloud-platform"
-                  ]
-                }
-              }
-            }
-          }
-        }
-      }
-    },
     "speech": {
       "methods": {
         "longrunningrecognize": {
@@ -322,7 +211,7 @@
       }
     }
   },
-  "revision": "20190104",
+  "revision": "20181214",
   "rootUrl": "https://speech.googleapis.com/",
   "schemas": {
     "ListOperationsResponse": {
diff --git a/speech/v1p1beta1/speech-gen.go b/speech/v1p1beta1/speech-gen.go
index 5d861bf..755c935 100644
--- a/speech/v1p1beta1/speech-gen.go
+++ b/speech/v1p1beta1/speech-gen.go
@@ -64,7 +64,6 @@
 	}
 	s := &Service{client: client, BasePath: basePath}
 	s.Operations = NewOperationsService(s)
-	s.Projects = NewProjectsService(s)
 	s.Speech = NewSpeechService(s)
 	return s, nil
 }
@@ -76,8 +75,6 @@
 
 	Operations *OperationsService
 
-	Projects *ProjectsService
-
 	Speech *SpeechService
 }
 
@@ -97,63 +94,6 @@
 	s *Service
 }
 
-func NewProjectsService(s *Service) *ProjectsService {
-	rs := &ProjectsService{s: s}
-	rs.Locations = NewProjectsLocationsService(s)
-	rs.Operations = NewProjectsOperationsService(s)
-	return rs
-}
-
-type ProjectsService struct {
-	s *Service
-
-	Locations *ProjectsLocationsService
-
-	Operations *ProjectsOperationsService
-}
-
-func NewProjectsLocationsService(s *Service) *ProjectsLocationsService {
-	rs := &ProjectsLocationsService{s: s}
-	rs.Operations = NewProjectsLocationsOperationsService(s)
-	return rs
-}
-
-type ProjectsLocationsService struct {
-	s *Service
-
-	Operations *ProjectsLocationsOperationsService
-}
-
-func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService {
-	rs := &ProjectsLocationsOperationsService{s: s}
-	return rs
-}
-
-type ProjectsLocationsOperationsService struct {
-	s *Service
-}
-
-func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
-	rs := &ProjectsOperationsService{s: s}
-	rs.ManualRecognitionTasks = NewProjectsOperationsManualRecognitionTasksService(s)
-	return rs
-}
-
-type ProjectsOperationsService struct {
-	s *Service
-
-	ManualRecognitionTasks *ProjectsOperationsManualRecognitionTasksService
-}
-
-func NewProjectsOperationsManualRecognitionTasksService(s *Service) *ProjectsOperationsManualRecognitionTasksService {
-	rs := &ProjectsOperationsManualRecognitionTasksService{s: s}
-	return rs
-}
-
-type ProjectsOperationsManualRecognitionTasksService struct {
-	s *Service
-}
-
 func NewSpeechService(s *Service) *SpeechService {
 	rs := &SpeechService{s: s}
 	return rs
@@ -1722,517 +1662,6 @@
 	}
 }
 
-// method id "speech.projects.locations.operations.get":
-
-type ProjectsLocationsOperationsGetCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// Get: Gets the latest state of a long-running operation.  Clients can
-// use this
-// method to poll the operation result at intervals as recommended by
-// the API
-// service.
-func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall {
-	c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	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 *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall {
-	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 *ProjectsLocationsOperationsGetCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsLocationsOperationsGetCall) 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, "v1p1beta1/{+name}")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.locations.operations.get" 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 *ProjectsLocationsOperationsGetCall) 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": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-	//   "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.locations.operations.get",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "name": {
-	//       "description": "The name of the operation resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1p1beta1/{+name}",
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
-// method id "speech.projects.locations.operations.list":
-
-type ProjectsLocationsOperationsListCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// List: Lists operations that match the specified filter in the
-// request. If the
-// server doesn't support this method, it returns
-// `UNIMPLEMENTED`.
-//
-// NOTE: the `name` binding allows API services to override the
-// binding
-// to use different resource name schemes, such as `users/*/operations`.
-// To
-// override the binding, API services can add a binding such
-// as
-// "/v1/{name=users/*}/operations" to their service configuration.
-// For backwards compatibility, the default name includes the
-// operations
-// collection id, however overriding users must ensure the name
-// binding
-// is the parent resource, without the operations collection id.
-func (r *ProjectsLocationsOperationsService) List(name string) *ProjectsLocationsOperationsListCall {
-	c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	return c
-}
-
-// Filter sets the optional parameter "filter": The standard list
-// filter.
-func (c *ProjectsLocationsOperationsListCall) Filter(filter string) *ProjectsLocationsOperationsListCall {
-	c.urlParams_.Set("filter", filter)
-	return c
-}
-
-// PageSize sets the optional parameter "pageSize": The standard list
-// page size.
-func (c *ProjectsLocationsOperationsListCall) PageSize(pageSize int64) *ProjectsLocationsOperationsListCall {
-	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
-	return c
-}
-
-// PageToken sets the optional parameter "pageToken": The standard list
-// page token.
-func (c *ProjectsLocationsOperationsListCall) PageToken(pageToken string) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall {
-	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 *ProjectsLocationsOperationsListCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsLocationsOperationsListCall) 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, "v1p1beta1/{+name}/operations")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.locations.operations.list" call.
-// Exactly one of *ListOperationsResponse or error will be non-nil. Any
-// non-2xx status code is an error. Response headers are in either
-// *ListOperationsResponse.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 *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, 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 := &ListOperationsResponse{
-		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": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.",
-	//   "flatPath": "v1p1beta1/projects/{projectsId}/locations/{locationsId}/operations",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.locations.operations.list",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "filter": {
-	//       "description": "The standard list filter.",
-	//       "location": "query",
-	//       "type": "string"
-	//     },
-	//     "name": {
-	//       "description": "The name of the operation's parent resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/locations/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     },
-	//     "pageSize": {
-	//       "description": "The standard list page size.",
-	//       "format": "int32",
-	//       "location": "query",
-	//       "type": "integer"
-	//     },
-	//     "pageToken": {
-	//       "description": "The standard list page token.",
-	//       "location": "query",
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1p1beta1/{+name}/operations",
-	//   "response": {
-	//     "$ref": "ListOperationsResponse"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
-// 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 *ProjectsLocationsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) 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 "speech.projects.operations.manualRecognitionTasks.get":
-
-type ProjectsOperationsManualRecognitionTasksGetCall struct {
-	s            *Service
-	name         string
-	urlParams_   gensupport.URLParams
-	ifNoneMatch_ string
-	ctx_         context.Context
-	header_      http.Header
-}
-
-// Get: Gets the latest state of a long-running operation.  Clients can
-// use this
-// method to poll the operation result at intervals as recommended by
-// the API
-// service.
-func (r *ProjectsOperationsManualRecognitionTasksService) Get(name string) *ProjectsOperationsManualRecognitionTasksGetCall {
-	c := &ProjectsOperationsManualRecognitionTasksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
-	c.name = name
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Fields(s ...googleapi.Field) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) IfNoneMatch(entityTag string) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Context(ctx context.Context) *ProjectsOperationsManualRecognitionTasksGetCall {
-	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 *ProjectsOperationsManualRecognitionTasksGetCall) Header() http.Header {
-	if c.header_ == nil {
-		c.header_ = make(http.Header)
-	}
-	return c.header_
-}
-
-func (c *ProjectsOperationsManualRecognitionTasksGetCall) 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, "v1p1beta1/{+name}")
-	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{
-		"name": c.name,
-	})
-	return gensupport.SendRequest(c.ctx_, c.s.client, req)
-}
-
-// Do executes the "speech.projects.operations.manualRecognitionTasks.get" 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 *ProjectsOperationsManualRecognitionTasksGetCall) 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": "Gets the latest state of a long-running operation.  Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.",
-	//   "flatPath": "v1p1beta1/projects/{projectsId}/operations/manualRecognitionTasks/{manualRecognitionTasksId}",
-	//   "httpMethod": "GET",
-	//   "id": "speech.projects.operations.manualRecognitionTasks.get",
-	//   "parameterOrder": [
-	//     "name"
-	//   ],
-	//   "parameters": {
-	//     "name": {
-	//       "description": "The name of the operation resource.",
-	//       "location": "path",
-	//       "pattern": "^projects/[^/]+/operations/manualRecognitionTasks/[^/]+$",
-	//       "required": true,
-	//       "type": "string"
-	//     }
-	//   },
-	//   "path": "v1p1beta1/{+name}",
-	//   "response": {
-	//     "$ref": "Operation"
-	//   },
-	//   "scopes": [
-	//     "https://www.googleapis.com/auth/cloud-platform"
-	//   ]
-	// }
-
-}
-
 // method id "speech.speech.longrunningrecognize":
 
 type SpeechLongrunningrecognizeCall struct {